背景
具有HA(高可用)的软件服务在集群某节点出现断网的时候,整个集群依旧可以提供正常的服务。很多开源软件都有HA版本(比如rocketmq,kafka),如果现在有一个软件需要进行高可用测试,该如何模拟其中的断网场景呢?
比如3台机器A,B,C组成的一个集群环境,其中A机器断网,B和C依旧能够正常工作。
A:192.168.21.23
B:192.168.21.24
C:192.168.21.25
跳板机D:192.168.21.26
现在尝试模拟A机器断网,B和C机器无法访问A的情况。
步骤
1. 首先保证有机器(跳板机)可以ssh到A机器,以防止A机器设置断网后,无法再登陆到A机器上恢复A的网络。(如果跳板机D已经和A建立ssh互信,可以跳过此步骤)
#如果跳板机D上有ssh公钥:~/.ssh/id_rsa.pub,则跳过下面命令执行;如果没有,执行如下命令生成一个。ssh-keygen -t rsa
#拷贝跳板机D的~/.ssh/id_rsa.pub到A机器的信任文件末尾vi ~/.ssh/authorized_keys
#测试互通,在跳板机D上执行如下,如果能执行说明互信建立成功ssh 192.168.21.23 true
2. 模拟断网:在A机器上执行iptables命令设置规则
登陆到A机器上执行如下命令,只让跳板机D能够访问A
iptables -t raw -I PREROUTING -s 192.168.21.26 -j ACCEPT
iptables -t raw -A PREROUTING -j DROP
3. 恢复网络:在A机器上执行iptables清除规则
iptables -t raw -F
清除iptables的各种命令
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -F
iptables -X
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t raw -F
iptables -t raw -X
iptables -t raw -P PREROUTING ACCEPT
iptables -t raw -P OUTPUT ACCEPT
博主:测试生财
座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。
csdn:https://blog.csdn.net/ccgshigao
来源:oschina
链接:https://my.oschina.net/u/4278787/blog/4674771