searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

消息队列RocketMQ 高可用测试案例

2023-06-08 06:32:50
41
0

场景一: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分钟

 

 

 

 

 

 

0条评论
0 / 1000