如何模拟 Redis 企业集群故障?
上次更新 2024 年 3 月 22 日
问题
如何模拟 Redis 企业集群故障?
答案
可以通过使用防火墙规则阻止到数据库端点端口的流量来模拟 Redis 企业集群故障。如果无法做到,可以执行以下操作(在每个 Redis 集群节点上):
停止节点监视器进程 supervisorctl stop node_wd
然后停止代理/端点进程,这样到所有数据库的连接都会失败,从而导致 LB 健康检查失败。 supervisorctl stop dmcproxy
并恢复 supervisorctl start node_wd
模拟网络电缆断开连接的良好脚本如下所示。
#!/bin/bash
# usage: ./faildrop.sh 60
# will default to 90 seconds otherwise
#
s1=${1:-90}
iptables -t filter -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -j DROP
iptables -t filter -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
iptables -t filter -A OUTPUT -j DROP
echo Killed, waiting ${s1} seconds...
sleep ${s1}
echo Resuming...
iptables -F INPUT
iptables -F OUTPUT
echo Done.