场景一:Broker异常
测试目的:模拟主Broker宕机场景下的高可用切换能力
测试步骤:
1、主从Broker均处于正常状态
2、主动停掉主Broker
3、 Leader NameServer检测到主Broker不可用,执行主从切换请求
4、从Broker接收到主从切换请求,提升为主Broker。
5、重启旧主Broker,Leader NameServer重新分配brokerId,执行降级为从节点操作
测试结果预期:
停止主节点后,从节点自动提升为主节点,再次重启旧主节点后,旧主节点成功降级为从节点。
场景二:从Broker异常退出
测试目的:模拟从Broker宕机场景下的高可用切换能力
测试步骤:
1、主从Broker均处于正常状态
2、手动停止从Broker
3、主Broker改变同步复制模式为异步
测试结果预期:
停止从节点后,在启用复制模式自动转换配置项时,主节点的复制模式能从SYNC_MASTER改变为ASYNC_MASTER。
场景三:主从假死
测试目的:模拟主Brokerfull gc、oom等资源异常场景
测试步骤:
1、主从Broker均处于正常状态
2、使用Kill -STOP夯住主节点
测试结果预期:
1、NameServer感知主Broker心跳超时,发起主备切换。
2、从Broker提升为主节点
场景四:NameServer Leader 宕机
测试目的:模拟NameServer Leader宕机时的高可用
测试步骤:
1、主从Broker和NameServer1、2、3集群节点均处于正常状态
2、在集群均正常的情况下,在NameServer1上 Kill掉Leader NameServer。
3、Kill掉主Broker
测试结果预期:
1、Follower NameServer宕机时,整个NameServer和Broker集群不受影响,消息正常收发
2、Broker主从切换能自动发起
3、Broker向该NameServer1 超时,NameServer2、NameServer3其中一节点被选为新主NameSever
场景五:Broker与NameServer网络分区
测试目的:Master Broker和NameServer所有节点全部隔离,是否能成功执行主备切换
测试步骤:
1、主从节点均正常情况下
在NameServer1上执行 iptables -A INPUT -s Master BrokerIP -p tcp --dport 9876 -j DROP
在NameServer2上执行 iptables -A INPUT -s Master BrokerIP -p tcp --dport 9876 -j DROP
2、观察:主Broker出现发送心跳超时,NameServer感知Broker心跳超时执行主备切换请求操作。
3、 清除防火墙规则,旧主节点自动降级为从节点。
测试结果预期:
1、主Broker出现发送心跳超时,NameServer感知Broker心跳超时执行主备切换请求操作
2、旧主网络恢复,自动恢复为从节点
场景六:多次主备切换后,节点可用性
测试目的:测试极端弱网丢包条件下频繁切换的高可用性
测试步骤:
1、broker 主 挂了,broker 从提升为主节点。
2、broker 新主 进行生产/消费。
3、broker 旧主 恢复为新从。
反复发起上述步骤5次
测试结果预期:
1、同步复制情况下无消息丢失,
2、两个Broker正常恢复,恢复使用时间小于5分钟