在线停机
-
线上一台RocketMQ节点存在问题(比如:磁盘故障、电池故障、其他硬件故障等)
-
使用docker模拟在线停机
服务 端口 状态 rocketmq-master1 10911 正常 rocketmq-master2 10911 不正常 rocketmq-slave1 10911 正常 rocketmq-slave2 10911 正常 rocketmq-nameserver1 9876 正常 rocketmq-nameserver2 9876 正常
操作步骤
-
第一步:关闭不正常Broker的写权限(rocketmq-master2节点)
- Broker的写权限关闭后,非顺序消息不会立即拒绝,而是等客户端路由信息更新后,才会再向Broker发送消息
- Broker关闭写权限之后,对应的消费者并不会触发重平衡,这可能导致关联到只读Broker的消费者永远不能消费集群中的消息。所以处理完毕后,需要将写权限放开
# brokerPermission 2是只写,4是只读、6是读写权限 # updateBrokerConfig 修改Broker内存,同时也会修改broker.properties配置文件 $ bin/mqadmin updateBrokerConfig -b rocketmq-master2:10911 -n \ 'rocketmq-nameserver1:9876;Rocketmq-nameserver2:9876' -k brokerPermission -v 4 update broker config success, rocketmq-master2:10911
-
第二步:观察节点流量,
InTPS
和OutTPS
流量。如果持续一段时间InTPS
和OutTPS
都为0,表示该节点即可下线# 关闭前 $ bin/mqadmin clusterList -n 'rocketmq-nameserver1:9876;Rocketmq-nameserver2:9876' #Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE DefaultCluster rocketmq-master1 0 172.19.0.4:10911 V4_3_1