https://cn.pingcap.com/blog/cannot-use-chaosmesh-without-k8s-then-try-chaosd

Chaosd 是什么?

相信大家对 Chaos Mesh 已经比较了解了:支持多种类型的混沌实验,有 Dashboard web 界面直接管理实验,TiDB 使用它保障产品质量,还有小鹏汽车、网易、某银行等众多用户。这么好的工具当然想亲手试一试,动手的时候发现:没有 K8s 环境用不了!

这是因为 Chaos Mesh 是云原生的混沌工程测试平台,专门为 K8s 设计的。然而你的应用还是用物理机环境部署的,太遗憾了,有故障的时候看告警邮件吧。

请留步,试试 Chaosd?

可能你还是第一次听说 Chaosd,它是 Chaos Mesh 提供的一款混沌工程测试工具,用于在物理机环境上注入故障,并提供故障恢复功能。看它的名子是不是和 Chaos Mesh 中的组件 chaos-daemon 比较相似?是的,它正是由 chaos-daemon 演化而来,并针对物理机的特点增加了一些专门的混沌实验功能。

Chaosd 有什么优势

Chaosd 具有以下这些优点:

  • 易用性强:输入简单的 Chaosd 命令即可创建混沌实验,并对实验进行管理。

  • 故障类型丰富:在物理机的不同层次、不同类型上都提供了故障注入的功能,包括进程、网络、JVM、压力、磁盘、主机等,且更多的功能在不断扩展中。

  • 支持多种模式:Chaosd 既可作为命令行工具使用,也可以作为服务使用,满足不同场景的使用需求。

说了这么多,让我们来试一试。最近我们刚发布了 v1.0.1版本,就用这个版本来简单演示一下。

Chaosd 的使用

1. 下载

首先要下载 Chaosd,执行以下命令:

curl -fsSL -o chaosd-v1.0.1-linux-amd64.tar.gz https://mirrors.chaos-mesh.org/chaosd-v1.0.1-linux-amd64.tar.gz

解压这个文件,可以看到它包含一个 chaosd 文件和一个 tools 文件夹。chaosd 是工具的入口;tools 文件夹下面包含执行混沌实验所需要的一些工具,包括 stress-ng(压力场景)、byteman(JVM 故障)、PortOccupyTool(网络故障占用端口)等。

2. 创建实验

我们以创建一个网络类型的混沌实验为例,注入故障,使服务器无法访问 chaos-mesh.org,执行以下命令:

sudo ./chaosd attack network loss --percent 100 --hostname chaos-mesh.org --device ens33

Attack network successfully, uid: c55a84c5-c181-426b-ae31-99c8d4615dbe

简单来说,这个命令的作用是:通过 ens33 网卡向 chaos-mesh.org 发送或者接收的网络包会 100% 丢失。使用 sudo 是因为该实验会修改网络规则, 需要 root 权限。

此外,别忘了保存好这个实验的 uid,用于后续的实验恢复。

3. 检查实验效果

让我们通过 ping 命令来检查是否可以正常访问 chaos-mesh.org:

ping chaos-mesh.org

PING chaos-mesh.org (185.199.109.153) 56(84) bytes of data.

^C

--- chaos-mesh.org ping statistics ---

2 packets transmitted, 0 received, 100% packet loss, time 1021ms

执行命令后会卡住,迟迟得不到响应,按 CTRL C 退出后可以看到 ping 的统计信息:100% packet loss。说明我们的实验确实生效了。

4. 恢复实验

运行以下命令恢复实验:

sudo ./chaosd recover c55a84c5-c181-426b-ae31-99c8d4615dbe

Recover c55a84c5-c181-426b-ae31-99c8d4615dbe successfully

恢复实验时也会修改网络规则,因此也需要使用 sudo。在执行完成后,可以再 ping chaos-mesh.org 确认网络已经恢复。

后续的规划

提高易用性 & 平台化

从上面的使用示例中可以看到,Chaosd 用起来还是挺简单的,通过命令行就可以创建实验。但是肯定有些人还不太满意:有 Dashboard web 界面能用吗? 答案是:目前还没有,但是已经在着手开发了。

我们会继续加强它的易用性,提供 Dashboard web 管理功能,不仅可以管理物理机上 Chaosd 的实验,还可以管理 Chaos Mesh 上的实验,这样就把物理机环境和 K8s 环境的混沌实验统一管理起来。在去年的 TiDB Hackathon 中我们简单做了一个 demo,架构如下: 

详细介绍可以参考 Chaos Mesh 的 Chaos Engineering as a Service 探索之路

更多的故障注入功能

目前 Chaosd 提供了进程、网络、JVM、压力、磁盘、主机总共六大故障注入功能,但是仍然需要继续拓展。后续我们计划将 Chaos Mesh 在 K8s 环境支持的一些故障注入功能在 Chaosd 中实现,包括 HTTP、IO 等。

大家可以通过 Chaosd 的 使用文档,尝试创建一些混沌实验来体验一下。在使用过程中遇到什么问题,或者有新的需求,都可以提 issue来反馈。

[转帖]没 K8s 用不了 Chaos Mesh?试试 Chaosd的更多相关文章

  1. 技术分享 | 在GreatDB分布式部署模式中使用Chaos Mesh做混沌测试

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 需求背景与万里安全数据库软件GreatDB分布式部署模式介绍 1.1 需求背景 混沌测试是检测分布式系统不确定性.建 ...

  2. [转帖]springboot+k8s+抛弃springcloud.eureka

    springboot+k8s+抛弃springcloud.eureka https://www.cnblogs.com/lori/p/12048743.html springboot开发微服务框架一般 ...

  3. [转帖]在 k8s 中通过 Ingress 配置域名访问

    在 k8s 中通过 Ingress 配置域名访问 https://juejin.im/post/5db8da4b6fb9a0204520b310 在上篇文章中我们已经使用 k8s 部署了第一个应用,此 ...

  4. [转帖]在 k8s 中自动为域名配置 https

    在 k8s 中自动为域名配置 https https://juejin.im/post/5db8d94be51d4529f73e2833 随着 web 的发展,https 对于现代网站来说是必不可少的 ...

  5. [转帖]理解k8s 的 Ingress

    理解k8s 的 Ingress https://www.jianshu.com/p/189fab1845c5/ 暴露一个http服务的方式 service 是 k8s 暴露http服务的默认方式, 其 ...

  6. 【转帖】K8S Deployment 命令

    K8S Deployment 命令 https://www.cnblogs.com/Tempted/p/7831604.html 今天学习了一下 kubectl scale deployment xx ...

  7. [转帖]当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?

    改天学习一下. https://www.cnblogs.com/alisystemsoftware/p/11570806.html   当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题 ...

  8. 【转帖】k8s之Deployment与service

    k8s之Deployment与service 2018年08月05日 18:11:00 xiyou_pen/pen 阅读数 5894   版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...

  9. [转帖]解决K8S 安装只有 一直提示:kernel:unregister_netdevice: waiting for eth0 to become free. Usage count = 1 的方法

    Centos7 终端报Message from syslogd :kernel:unregister_netdevice https://www.jianshu.com/p/96d7e2cd9e99 ...

  10. 腾讯云 K8S 集群实战 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 应用

    Linkerd 是 Kubernetes 的服务网格. 它通过为您提供运行时调试(runtime debugging).可观察性(observability).可靠性(reliability)和安全性 ...

随机推荐

  1. H3C 存储换盘操作

    实际存储型号H3C CF8844 环境说明:H3C存储设备存在一个坏盘需要更换. 更换准备 1. 取出备件检查完毕后放置到安全场所(请严格按照<IT产品现场工程师通用服务规(维修篇)>操作 ...

  2. freemarker实现自定义标签

    freemarker实现自定义标签 freemarker实现自定义标签其实并没有什么难度,这个功能我们叫自定义标签,在官网中称为指令,也并不是什么高级技术,只是大家没发现而已,参考下官网文档就能实现: ...

  3. MySQL思维导图:MySQL的架构介绍

    MySQL的架构介绍(思维导图形式) MySQL简介 概述 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. ...

  4. 实例讲解基于Sermant快速开发服务治理插件

    本文分享自华为云社区<Sermant框架下的服务治理插件快速开发及使用指南>,作者: 华为云开源 . Sermant是基于Java字节码增强技术的云原生无代理服务网格,它具有非侵入.插件化 ...

  5. 一文带你掌握Redis操作指南

    摘要:Redis是一种支持Key-Value等多种数据结构的存储系统. Redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存,事件发布或订阅,高速队列等场景.该数据库使用ANSI ...

  6. LiteOS内核源码分析:消息队列Queue

    摘要:本文通过分析LiteOS队列模块的源码,掌握队列使用上的差异. 队列(Queue)是一种常用于任务间通信的数据结构.任务能够从队列里面读取消息,当队列中的消息为空时,挂起读取任务:当队列中有新消 ...

  7. U2Net基于ModelArts Notbook的仿真实验

    摘要:U2Net是一个优秀的显著性目标检测算法,由Qin Xuebin等人发表在Pattern Recognition 2020期刊[Arxiv].U2Net名称的来源在于其网络结构由两层嵌套的Une ...

  8. 云图说:云数据库 RDS for MySQL一键开通读写分离,轻松应对业务高峰期

    摘要:华为云数据库 RDS for MySQL提供一键开通读写分离功能,只需要一个连接地址,让您在业务高峰期不再迷茫,不再慌乱,so easy 的应对业务. 本文分享自华为云社区<云图说 | 第 ...

  9. 1g云主机升级centos8不满足centos 8 至少2g内存要求,linux虚拟内存来凑

    centos8 官方说,至少2g内存,推荐4g内存,像我的个人博客,zhoulujun.cn ,这种个人博客有不赚钱,丢个5美金一个月的1g内存,1核cpu,就够了. 强制升级到centos8,ngi ...

  10. Tomcat 优雅关闭之路

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/ZqkmoAR4JEYr0x0Suoq7QQ作者:马运杰 本文通过阅读Tomcat启动和关闭流程 ...