首页 > 其他分享 >Chaosd 模拟两地三中心集群的网络环境

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

时间:2023-04-09 10:31:37浏览次数:35  
标签:exec -- tiup tidb cluster 集群 172.16 Chaosd 两地

作者: pepezzzz



环境准备



集群名称和版本

tidb 集群: tidb-h

版本:v6.6.0

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

模拟场景


目标

延时

同城

172.16.x.71,72

172.16.x.73,74

1.5ms

异地

172.16.x.66~68,71~74,77

172.16.x.67

200ms

软件版本: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 version
Chaosd 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 version
Chaosd 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 glibc
glibc-common-2.17-260.el7.x86_64
glibc-2.17-260.el7.x86_64
glibc-devel-2.17-260.el7.x86_64
glibc-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/chaosd
tiup cluster exec tidb-h  --command "chmod +x /home/tidb/chaosd"



配置拓扑



到同城站点节点

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

# vi lat7172.sh
tiup 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 --sudo
tiup 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.sh
tiup 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.sh
tiup 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.sh
tiup 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.sh
home/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.sh
tiup cluster exec tidb-h  --command "chmod +x /home/tidb/recoverlat.sh"

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

vi recoverall.sh
tiup 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 可以支持网络延时、丢包等模拟场景,通过统一控制网络模拟操作,可以实现两地三中心的网络条件的快速模拟和销毁。

标签:exec,--,tiup,tidb,cluster,集群,172.16,Chaosd,两地
From: https://blog.51cto.com/u_15550868/6178533

相关文章

  • Nginx 集群搭建
    Nginx集群搭建https://huaweicloud.csdn.net/63560e7dd3efff3090b591dc.html?spm=1001.2101.3001.6650.14&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-14-117463438-blog-127292749.235%5Ev28%5Epc_relevant_default......
  • centos7 mongodb4.4分片集群部署
    #创建mongo相应的目录mkdir-pv/data/app/mongodb/confmkdir-pv/data/app/mongodb/{configset,shared1,shared2,shared3}/logmkdir-pv/data/mongodb/{configset,shared1,shared2,shared3}/data #创建于用户,给权限useradd-s/sbin/nologin-Mmongodchown-Rmong......
  • 基于keepalived双vip的MySQL高可用集群
    一、机器准备及IP地址规划ansible2.9.27ip:192.168.1.124prometheus192.168.1.103MySQLRouter8.0.32mysql集群master192.168.1.150slave192.168.1.151slave192.168.1.152延迟备份backup192.168.1.153keepalived集群192.168.1.148192.168.1.149项目名称:基......
  • Proxmox VE Ceph 集群部署
    1、集群安装参考:https://www.cnblogs.com/a120608yby/p/17295938.html2、业务及管理网络创建参考:https://www.cnblogs.com/a120608yby/p/17140953.html3、Ceph网络创建#配置ceph多网卡绑定#vim/etc/network/interfaces...autobond1ifacebond1inetmanual......
  • 微服务 - 集群化 · 服务注册 · 健康检测 · 服务发现 · 负载均衡
    服务集群化集群化工具选择性很多,这里选Consul工具;官网:https://www.consul.io本篇计划用Docker辅助部署,所以需要了解点Docker知识;官网:https://www.docker.comConsul概括Consul是由N多个节点(机台/虚拟/容器)组成,每个节点中都有Agent运行着,各节点间用RPC通信,所有节点......
  • Redis三主三从集群
    Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。一组RedisCluster是由多个Redis实例组成,官方推荐使用6实例,其中3个为主节点,3个为从节点。一旦有主节点发生故障的时候,RedisCluster可以选举出对应的从节点成为新的主节点,继续对外服务,......
  • GaussDB(DWS)集群中寻找节点CPU占用高的语句
    摘要:本文主要通过实例讲解如何通过gs_cpuwatcher.sh脚本寻找CPU占用高语句。本文分享自华为云社区《GaussDB(DWS)gs_cpuwatcher.sh脚本如何寻找CPU占用高语句》,作者:fighttingman。【工具名称】gs_cpuwatcher【功能描述】1.寻找集群内节点占用CPU高的语句【使用场景】CPUsys使用......
  • GaussDB(DWS)集群中寻找节点CPU占用高的语句
    摘要:本文主要通过实例讲解如何通过gs_cpuwatcher.sh脚本寻找CPU占用高语句。本文分享自华为云社区《GaussDB(DWS)gs_cpuwatcher.sh脚本如何寻找CPU占用高语句》,作者:fighttingman。【工具名称】gs_cpuwatcher【功能描述】1.寻找集群内节点占用CPU高的语句【使用场景】CP......
  • K8S 高可用外部 etcd , Docker 容器运行时 (三) 加入K8S集群
    control-plane上执行1、#证如果过期了,可以使用下面命令生成新证书上传,这里会打印出certificatekey,后面会用到kubeadminitphaseupload-certs--upload-certs#你还可以在【init】期间指定自定义的--certificate-key,以后可以由join使用。要生成这样的密钥,可以使用以下......
  • MATLAB代码:分布式最优潮流 含分布式光伏的配电网集群划分和集群电压协调控制
    MATLAB代码:分布式最优潮流关键词:网络划分;分布式光伏;集群电压控制;分布式优化;有功缩减参考文档:《含分布式光伏的配电网集群划分和集群电压协调控制》仿真平台:MATLAB主要内容:本文以全局电压的低成本快速控制为目标,提出基于电气距离和区域电压调节能力的集群综合性能指标和网络划......