Chaos带你快速上手混沌工程实战体验

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: Chaos带你快速上手混沌工程实战体验

1. 创建实验资源

在页面左侧,单击云产品资源下拉菜单,查看本次实验资源。

单击免费开通创建所需资源。

说明:

资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:IP地址、用户名和密码等。

2. 创建应用

点击右侧 图标,切换到远程桌面操作界面。

双击打开虚拟桌面的Firefox ESR浏览器,在RAM用户登录框中点击“下一步”,复制云产品资源列表中子用户密码,粘按CTRL+V把密码粘贴到密码输区,登陆子账户(后续在远程桌面里的粘贴操作均使用CTRL + V快捷键)。

复制容器服务ACK控制台地址,在FireFox浏览器打开新页签,粘贴并访问容器服务ACK控制台。

https://cs.console.aliyun.com/

在集群页面,单击详情。

在左侧导航栏,单击无状态。

在无状态页面,单击使用YAML创建资源。

在创建页面,复制以下代码并粘贴到模板框中,然后单击创建。

apiVersion: apps/v1

kind: Deployment

metadata:

 name: nacos-server

spec:

 selector:

   matchLabels:

     app: nacos-server

 template:

   metadata:

     labels:

       app: nacos-server

   spec:

     containers:

       - name: nacos-standalone

         image: registry.cn-beijing.aliyuncs.com/ahas_demo/nacos:1.0.0

         ports:

           - containerPort: 8848

         env:

           - name: PREFER_HOST_MODE

             value: "hostname"

           - name: MODE

             value: "standalone"

         resources:

           limits:

             cpu: 1

             memory: 2048Mi

           requests:

             cpu: 200m

             memory: 512Mi

---

apiVersion: v1

kind: Service

metadata:

 name: nacos-server

spec:

 type: ClusterIP

 selector:

   app: nacos-server

 ports:

   - name: http

     port: 8848

     targetPort: 8848

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: cart-redis

spec:

 selector:

   matchLabels:

     app: cart-redis

 replicas: 1

 template:

   metadata:

     labels:

       app: cart-redis

   spec:

     containers:

       - name: cart-redis

         image: redis:alpine

         imagePullPolicy: IfNotPresent

         ports:

           - containerPort: 6379

         resources:

           limits:

             cpu: 1

             memory: 512Mi

           requests:

             cpu: 200m

             memory: 128Mi

---

apiVersion: v1

kind: Service

metadata:

 labels:

   app: cart-redis

 name: cart-redis

spec:

 ports:

   - port: 6379

     targetPort: 6379

 selector:

   app: cart-redis

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: cartservice

spec:

 selector:

   matchLabels:

     app: cartservice

 template:

   metadata:

     labels:

       app: cartservice

   spec:

     containers:

       - name: cartservice

         image: registry.cn-beijing.aliyuncs.com/ahas_demo/cartservice:1.0.0

         imagePullPolicy: Always

         env:

           - name: dubbo.registry.address

             value: "nacos://nacos-server:8848"

           - name: spring.cloud.nacos.discovery.server-addr

             value: "nacos-server:8848"

           - name: spring.cloud.nacos.config.server-addr

             value: "nacos-server:8848"

         resources:

           limits:

             cpu: 1

             memory: 512Mi

           requests:

             cpu: 200m

             memory: 128Mi

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: recommendationservice

spec:

 selector:

   matchLabels:

     app: recommendationservice

 template:

   metadata:

     labels:

       app: recommendationservice

       version: 1.0.0-SNAPSHOT

   spec:

     containers:

       - name: recommendationservice

         image: registry.cn-beijing.aliyuncs.com/ahas_demo/recomendationservice:1.0.0

         # imagePullPolicy: Always

         env:

           - name: dubbo.registry.address

             value: "nacos://nacos-server:8848"

           - name: spring.cloud.nacos.discovery.server-addr

             value: "nacos-server:8848"

           - name: spring.cloud.nacos.config.server-addr

             value: "nacos-server:8848"

         resources:

           limits:

             cpu: 1

             memory: 512Mi

           requests:

             cpu: 200m

             memory: 128Mi

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: product-mysql

spec:

 selector:

   matchLabels:

     app: product-mysql

 replicas: 1

 strategy:

   type: Recreate

 template:

   metadata:

     labels:

       app: product-mysql

   spec:

     containers:

       - args:

           - --character-set-server=utf8mb4

           - --collation-server=utf8mb4_unicode_ci

         env:

           - name: MYSQL_DATABASE

             value: product

           - name: MYSQL_ROOT_PASSWORD

             value: productservice

         image: mysql:5.6

         name: product-mysql

         ports:

           - containerPort: 3306

         resources:

           limits:

             cpu: 1

             memory: 512Mi

           requests:

             cpu: 200m

             memory: 128Mi

---

apiVersion: v1

kind: Service

metadata:

 labels:

   app: product-mysql

 name: product-mysql

spec:

 ports:

   - port: 3306

     targetPort: 3306

 selector:

   app: product-mysql

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: productservice

spec:

 selector:

   matchLabels:

     app: productservice

 template:

   metadata:

     labels:

       app: productservice

       version: 1.0.0-SNAPSHOT

   spec:

     containers:

       - name: productservice

         image: registry.cn-beijing.aliyuncs.com/ahas_demo/productservice:1.0.0

         imagePullPolicy: Always

         env:

           - name: dubbo.registry.address

             value: "nacos://nacos-server:8848"

           - name: spring.cloud.nacos.discovery.server-addr

             value: "nacos-server:8848"

           - name: spring.cloud.nacos.config.server-addr

             value: "nacos-server:8848"

         resources:

           limits:

             cpu: 1

             memory: 512Mi

           requests:

             cpu: 200m

             memory: 128Mi

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: checkout-mysql

spec:

 selector:

   matchLabels:

     app: checkout-mysql

 replicas: 1

 strategy:

   type: Recreate

 template:

   metadata:

     labels:

       app: checkout-mysql

   spec:

     containers:

       - args:

           - --character-set-server=utf8mb4

           - --collation-server=utf8mb4_unicode_ci

         env:

           - name: MYSQL_DATABASE

             value: checkout

           - name: MYSQL_ROOT_PASSWORD

             value: checkoutservice

         image: mysql:5.6

         name: checkout-mysql

         ports:

           - containerPort: 3306

         resources:

           limits:

             cpu: 1

             memory: 512Mi

           requests:

             cpu: 200m

             memory: 128Mi

---

apiVersion: v1

kind: Service

metadata:

 labels:

   app: checkout-mysql

 name: checkout-mysql

spec:

 ports:

   - port: 3306

     targetPort: 3306

 selector:

   app: checkout-mysql

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: checkoutservice

spec:

 selector:

   matchLabels:

     app: checkoutservice

 template:

   metadata:

     labels:

       app: checkoutservice

   spec:

     containers:

       - name: checkoutservice

         image: registry.cn-beijing.aliyuncs.com/ahas_demo/checkoutservice:health

         imagePullPolicy: Always

         ports:

           - name: liveness-port

             containerPort: 8080

             protocol: TCP

         env:

           - name: dubbo.registry.address

             value: "nacos://nacos-server:8848"

           - name: spring.cloud.nacos.discovery.server-addr

             value: "nacos-server:8848"

           - name: spring.cloud.nacos.config.server-addr

             value: "nacos-server:8848"

         resources:

           limits:

             cpu: 1

             memory: 512Mi

           requests:

             cpu: 200m

             memory: 128Mi

         livenessProbe:

           failureThreshold: 3

           httpGet:

             path: /health

             port: liveness-port

             scheme: HTTP

           initialDelaySeconds: 5

           periodSeconds: 10

           successThreshold: 1

           timeoutSeconds: 1

         startupProbe:

           failureThreshold: 3

           httpGet:

             path: /health

             port: liveness-port

             scheme: HTTP

           initialDelaySeconds: 40

           periodSeconds: 5

           successThreshold: 1

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: frontend

spec:

 selector:

   matchLabels:

     app: frontend

 template:

   metadata:

     labels:

       app: frontend

   spec:

     containers:

       - name: frontend

         image: registry.cn-beijing.aliyuncs.com/ahas_demo/frontend:async-test

         imagePullPolicy: Always

         ports:

           - name: liveness-port

             containerPort: 8080

             protocol: TCP

         env:

           - name: dubbo.registry.address

             value: "nacos://nacos-server:8848"

           - name: spring.cloud.nacos.discovery.server-addr

             value: "nacos-server:8848"

           - name: spring.cloud.nacos.config.server-addr

             value: "nacos-server:8848"

         resources:

           limits:

             cpu: 1

             memory: 512Mi

           requests:

             cpu: 200m

             memory: 128Mi

         livenessProbe:

           failureThreshold: 3

           httpGet:

             path: /health

             port: liveness-port

             scheme: HTTP

           initialDelaySeconds: 5

           periodSeconds: 10

           successThreshold: 1

           timeoutSeconds: 1

         startupProbe:

           failureThreshold: 3

           httpGet:

             path: /health

             port: liveness-port

             scheme: HTTP

           initialDelaySeconds: 60

           periodSeconds: 5

           successThreshold: 1

---

apiVersion: v1

kind: Service

metadata:

 name: frontend

spec:

 type: ClusterIP

 selector:

   app: frontend

 ports:

   - name: http

     port: 8080

     targetPort: 8080

---

apiVersion: v1

kind: Service

metadata:

 name: frontend-external

spec:

 type: LoadBalancer

 selector:

   app: frontend

 ports:

   - name: http

     port: 8080

     targetPort: 8080

在左侧导航栏,单击无状态。

在无状态页面,等待几分钟,单击刷新,容器组数量全部为1/1之后,表示应用部署完成。

注意 :

如果出现某服务无法正常启动的情况,您只需单击目标服务右侧操作列表下的更多>重新部署即可。如果遇到frontend无法正常启动的情况,此时您需要先将checkoutservice重新部署后,再将frontend重新部署即可。

在无状态页面,单击frontend。

在frontend服务页面,单击访问方式页签。

在frontend服务的访问方式页签,单击frontend-external服务的外部端点。

若返回如下页面,表示应用部署成功。

在商品概览页面,单击任意商品,例如Air Jordan Legacy 312。

在商品详情页面,单击添加购物车。

在购物车页面,单击确认订单。

若返回如下页面,表示订单支付成功。

3. 安装探针

  1. 回到容器服务控制台页面,单击左侧导航栏上方的 图标。

  1. 集群列表页面的左侧导航栏中,单击应用目录

  1. 应用目录页面,单击ack-ahas-pilot

  1. 在ack-ahas-pilot的详情页面,单击创建

返回如下页面,表示探针已经部署完成。

上一页下一页

4. 通过架构感知查看系统整体架构

  1. 复制应用高可用服务控制台地址,在Fi

  2. refox浏览器打开新页签,粘贴并访问容器服务应用高可用服务控制台。
https://chaos.console.aliyun.com/
  1. 概览页面顶部,选择资源所在地域。例如下图中,地域切换为华东1(杭州)。

  1. 在左侧导航栏,单击故障演练>架构感知

  1. 架构地图页面,单击Kubernetes监控视图卡片中的查看视图

  1. 架构地图页面,打开Kubernetes监控视图下拉列表,选择命令空间为default,然后单击确定即可查看实验资源的Kubernetes监控视图。




相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
测试技术 调度 C++
六年打磨!阿里开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升开发效率,不妨来了解一下。
11921 0
|
4月前
|
tengine 算法 安全
ChaosBlade 是阿里巴巴开源的混沌工程工具
【2月更文挑战第23天】ChaosBlade 是阿里巴巴开源的混沌工程工具
114 1
|
4月前
|
Kubernetes 监控 容器
K8S故障注入混沌工程开源平台ChaosMesh
总之,ChaosMesh作为一个Kubernetes混沌工程平台,为用户提供了测试和验证Kubernetes集群的可靠性的工具和框架,有助于提高系统的稳定性和性能。
209 0
|
监控 数据可视化 开发者
[译]混沌游戏日:混沌的手把手指南
> 原文:Chaos Gamedays: A Step-by-Step Guide to Chaos > [https://dzone.com/articles/chaos-gamedays-a-step-by-step-guide-to-chaos](https://dzone.com/articles/chaos-gamedays-a-step-by-step-guide-to-ch
481 0
|
容器 Cloud Native Perl
面向云原生的混沌工程工具-ChaosBlade
作者 | 肖长军(穹谷)阿里云智能事业群技术专家   导读:随着云原生系统的演进,如何保障系统的稳定性受到很大的挑战,混沌工程通过反脆弱思想,对系统注入故障,提前发现系统问题,提升系统的容错能力。ChaosBlade 工具可以通过声明式配置执行混沌实验,简单高效。
|
自然语言处理 Kubernetes 监控
ChaosBlade:从混沌工程实验工具到混沌工程平台
ChaosBlade 是阿里巴巴 2019 年开源的混沌工程项目,已加入到 CNCF Sandbox 中。起初包含面向多环境、多语言的混沌工程实验工具 ChaosBlade,到现在发展到面向多集群、多环境、多语言的混沌工程平台 chaosblade-box,平台支持实验工具托管和工具自动化部署,通过统一用户实验界面,将用户的精力聚焦在通过混沌工程解决云原生过程中高可用问题上。本文从混沌实验模型抽象、混沌实验工具开源和混沌工程平台升级项目三阶段出发,详细介绍 ChaosBlade。
638 2
ChaosBlade:从混沌工程实验工具到混沌工程平台
|
监控 搜索推荐 容灾
Chaos带你快速上手混沌工程实战体验2
Chaos带你快速上手混沌工程实战体验2
435 0
Chaos带你快速上手混沌工程实战体验2
|
Web App开发 数据安全/隐私保护 容器
Chaos带你快速上手混沌工程实验报告
Chaos带你快速上手混沌工程实验报告
200 0
Chaos带你快速上手混沌工程实验报告
|
Web App开发 存储 Kubernetes
带你快速上手混沌工程
容器服务Kubernetes版(简称ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理;是国内唯一入选2020年Gartner公共云容器报告的产品,并在2019年Forrester容器报告中获国内排名第一;整合了阿里云虚拟化、存储、网络和安全能力,助力企业高效运行云端Kubernetes容器化应用。
212 0
带你快速上手混沌工程
|
监控 Kubernetes Cloud Native
Chaos带你快速上手混沌工程
场景主要介绍混沌工程的思想及其原理,体验故障演练(AHAS Chaos),阿里云在混沌工程领域的产品。,11 月 9 日至 11 月 23 日期间,,完成体验即可获得“TOMY 多美卡合金车模一辆”。
Chaos带你快速上手混沌工程