写点什么

Chaosd 模拟两地三中心集群的网络环境

  • 2023-03-24
    北京
  • 本文字数:2178 字

    阅读完需:约 7 分钟

作者: pepezzzz 原文来源:https://tidb.net/blog/0d4aa731

环境准备

集群名称和版本

tidb 集群: tidb-h


版本:v6.6.0


集群拓扑:单中心模拟部署两中心部署拓扑,延时要求如下:



软件版本:chaosd


x86 平台:


 curl -fsSL -o chaosd-v1.2.0-linux-amd64.tar.gz https://mirrors.chaos-mesh.org/chaosd-v1.2.0-linux-amd64.tar.gz
复制代码


$ ./chaosd versionChaosd Version: version.Info{GitVersion:"v1.2.0", GitCommit:"38e871fbcc62ab74dda45f65e13b35aa3b6ee8a8", BuildDate:"2022-04-28T06:18:30Z", GoVersion:"go1.16.2", Compiler:"gc", Platform:"linux/amd64"}
复制代码


arm 平台:


链接: https://pan.baidu.com/s/1dS4OcJgmZCy2iq1rEC286w?pwd=ps8s 提取码: ps8s


$ ./chaosd versionChaosd Version: version.Info{GitVersion:"v1.2.0-5+62d573059cf5bc", GitCommit:"62d573059cf5bcd2a7621aa5846774401791e573", BuildDate:"2022-06-07T09:59:46Z", GoVersion:"go1.18.2", Compiler:"gc", Platform:"linux/arm64"}
复制代码


依赖库 Glibc 版本 >= v2.17:


# rpm -qa |grep glibcglibc-common-2.17-260.el7.x86_64glibc-2.17-260.el7.x86_64glibc-devel-2.17-260.el7.x86_64glibc-headers-2.17-260.el7.x86_64
复制代码

软件推送

172.16.x.67 TiUP 节点上全局推送的 chaosd 二进制。


tiup cluster push tidb-h /home/tidb/chaosd-v1.2.0-linux-amd64/chaosd /home/tidb/chaosdtiup cluster exec tidb-h  --command "chmod +x /home/tidb/chaosd" 
复制代码

配置拓扑

到同城站点节点

同城双中心延时 1.5ms 模拟场景(同城 172.x.71,72 到 73,74)的故障注入命令如下:


# vi lat7172.shtiup cluster exec tidb-h  --command "/home/tidb/chaosd attack network delay -H 172.16.x.73,172.16.x.74 --device enp2s0f0 --latency 1.5ms" -N 172.16.x.71 --sudotiup cluster exec tidb-h  --command "/home/tidb/chaosd attack network delay -H 172.16.x.73,172.16.x.74 --device enp1s0f0 --latency 1.5ms" -N 172.16.x.72 --sudo
复制代码


注意:


  1. 因为 172.16.x.71~72 节点的网卡实例名不同,所以需要单独的命令指定。如果环境中所有节点的网卡实例名一样,可以用 tiup -N 172.16.x.71,172.16.x.72 同时指定多台。

  2. 网络延时故障配置不需要配置双边。

  3. 如果注入丢包等场景,请注意消除故障的网络是到达的,如 TiUP 操作机的 IP 不应该在 IP 列表里面。


同城双中心延时模拟场景的 Ping 验证命令如下,故障注入后进行测试测试,参数 -c 指定 Ping 包数量,需要根据注入故障场景指定。


# vi ping7172.shtiup cluster exec tidb-h --command "ping 172.16.x.73 -c 2" -N 172,17.45.71,172.16.x.72 |grep -Ei 'bytes|outputs'tiup cluster exec tidb-h --command "ping 172.16.x.74 -c 2" -N 172,17.45.71,172.16.x.72 |grep -Ei 'bytes|outputs'tiup cluster exec tidb-h --command "ping 172.16.x.71 -c 2" -N 172,17.45.73,172.16.x.74 |grep -Ei 'bytes|outputs'tiup cluster exec tidb-h --command "ping 172.16.x.72 -c 2" -N 172,17.45.73,172.16.x.74 |grep -Ei 'bytes|outputs'
复制代码


同城 172.x.71~72 到 73~74 的 ping 的结果大概会到 1.6 毫秒。

到远程站点节点

异地中心延时 200ms 模拟场景( 67 节点模拟远程)的故障注入命令如下:


# vi lat67.shtiup cluster exec tidb-h  --command "/home/tidb/chaosd attack network delay -H 172.16.x.67 --device enp2s0f0 --latency 200ms" -N 172.16.x.66 --sudo...
复制代码


Ping 67 节点的脚本如下,故障注入后进行测试测试,参数 -c 指定 Ping 包数量,需要根据注入故障场景指定。


vi ping67.shtiup cluster exec tidb-h --command "ping 172.16.x.67 -c 1" |grep -Ei 'bytes|outputs'
复制代码


同城 172.16.x.71~74 到 的 ping 172.16.x.67 的结果大概会到 200 毫秒。

全局关闭注入

每次测试结束后,完成一次全局删除注入故障,再进入下一轮测试。


先编写单机的恢复脚本。


# vi a.shhome/tidb/chaosd search --all |grep success |awk '{print "/home/tidb/chaosd recover "$1}'|bash
复制代码


全局推送的恢复脚本。


tiup cluster push tidb-h /home/tidb/a.sh /home/tidb/recoverlat.shtiup cluster exec tidb-h  --command "chmod +x /home/tidb/recoverlat.sh" 
复制代码


通过全局执行单机的恢复脚本,实现全局删除注入故障。


vi recoverall.shtiup cluster exec tidb-h --command "/home/tidb/recoverlat.sh" --sudo
复制代码


建议 recoverall.sh 执行两次,第二次执行应该无输出。

全局验证

Ping 所有节点的脚本如下,建设每次测试结束后,完成一次全局网络验证防止影响下一轮测试,参数 -c 指定 Ping 包数量,需要根据注入故障场景指定。


tiup cluster exec tidb-h --command "ping 172.16.x.66 -c 1" |grep -Ei 'bytes|outputs'...tiup cluster exec tidb-h --command "ping 172.16.x.68 -c 1" |grep -Ei 'bytes|outputs'tiup cluster exec tidb-h --command "ping 172.16.x.71 -c 1" |grep -Ei 'bytes|outputs'...tiup cluster exec tidb-h --command "ping 172.16.x.74 -c 1" |grep -Ei 'bytes|outputs'tiup cluster exec tidb-h --command "ping 172.16.x.77 -c 1" |grep -Ei 'bytes|outputs'
复制代码

总结

Chaosd 可以支持网络延时、丢包等模拟场景,通过统一控制网络模拟操作,可以实现两地三中心的网络条件的快速模拟和销毁。


发布于: 刚刚阅读数: 3
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
Chaosd 模拟两地三中心集群的网络环境_实践案例_TiDB 社区干货传送门_InfoQ写作社区