通用方案:专有云V3环境中RocketMQ集群Broker节点断电方法

通用方案:专有云V3环境中RocketMQ集群Broker节点断电方法

更新时间:2020-07-21 14:54:34

1. 概述

本文主要介绍在专有云V3环境中,RocketMQ集群Broker节点的断电方法。

1.1. 适用范围

  • 专有云V3,RocketMQ

1.2. 用户告知

  • 操作复杂度:中
  • 预估执行时长:45分钟
  • 风险等级:高
    说明
    • 本方案在下线Broker前会对Broker进行禁写操作,不影响业务,业务侧需评估Broker下线后集群中剩余的Broker能否支撑业务量。
    • 下线Broker后,定时消息会有延迟,需要确保主备节点至少禁写3天以上,紧急情况至少5小时,部分定时消息可能要到机器上线后才恢复或手动恢复。具体禁写多久要根据定时消息最长多久确定,如果是备节点没有要求,如果是主节点,需要禁写足够长的时间。
    • 如果一组Broker的主备节点全部下电,那么在这组Broker上电正常恢复到集群前不可操作RocketMQ控制台。
    • 如果想要操作RocketMQ控制台创建资源,那么需要将Broker上线,保证每组Broker至少有一个节点在集群中。

2. 问题描述

在专有云V3环境,由于现场维修需求或其他需求,需要对RocketMQ的Broker物理机进行下电维修。

3. 解决方案

3.1. 环境检查

查看集群状态

参考以下步骤,查看集群状态并确定需要断电的Broker。

  1. 登录天基控制台,确认RocketMQ集群已达终态且服务功能正常。
  2. Project框中搜索mq,单击BasicCluster集群右侧的集群运维中心。选择mq-broker服务与DeployBroker#服务角色,在过滤出来的主机右侧单击Terminal,登录对应的机器。
  3. 登录任意一个正常运行的mq-broker容器,执行以下命令,查看集群整体状态。
    sh /home/admin/rmq/bin/mqadmin clusterList
    系统显示类似如下。
    说明
    • #BID为0的是主节点,为1的是备节点。
    • #Cluster Name列为集群名。
    • #Broker Name列为Broker名称。

查看消息保留时间

登录任意一个正常运行的mq-broker容器,执行以下命令,查看消息的保留时间,单位为小时。

sh /home/admin/rmq/bin/mqadmin getBrokerConfig -b 127.0.0.1:10911 |grep fileReservedTime

3.2. 实施步骤

备份Broker配置文件

登录任意一个正常运行的mq-broker容器,执行以下命令,备份/home/admin/rmq/conf/broker.conf文件,主节点和备节点都需要进行备份。

cp /home/admin/rmq/conf/broker.conf /tmp/broker.conf

禁写需下线的Broker

参见以下KB文档,禁写需下线的Broker,禁写的持续时间需超过查看消息保留时间步骤中确定的时间。

  • KB 109612 通用方案:RocketMQ集群Broker节点禁止写入数据的通用方法

关闭Broker

登录DeployBroker#服务角色的机器,执行以下命令,关闭Broker。

sudo docker exec -ti [$Container_ID] sh /home/admin/rmq/bin/mqshutdown broker && sudo tjc stop mq-broker.DeployBroker#

说明:[$Container_ID]为mq-broker容器的ID。

系统显示类似如下。

关闭Broker物理机

使用halt命令或根据现场的情况关闭Broker所在的物理机。

3.3. 结果验证

确认关闭的Broker已下线

登录任意一个正常运行的mq-broker容器,执行以下命令,确认需下线的Broker已连接不上。

sh /home/admin/rmq/bin/mqadmin clusterList

系统显示类似如下。

查看Broker在ZooKeeper上的状态

  1. 登录taokeeper容器,执行以下命令,查看Broker的整体情况是否符合预期。本例下线10.X.X.13机器,cluster1_broker1002这组剩余一个主节点,故节点状态为ONLY_MASTER。
    sh /home/admin/taokeeper-3.4.6/zookeeper-3.4.6/bin/zkCli.sh
    说明:这里的路径因版本不同而不同。
    系统显示类似如下。
  2. 执行以下命令,查看节点状态。
    get /MQFailover/StateMachine/[$Cluster]/[$Cluster_Broker]
    说明:[$Cluster]为集群名,[$Cluster_Broker]为Broker名称。
    系统显示类似如下。

4. 回滚方案

参见以下KB文档,进行回滚操作。

  • KB 154228 通用方案:专有云V3环境中RocketMQ集群Broker节点上电方法