阿里云首页

应急预案:专有云V3环境中RocketMQ的Broker备节点上线的方法

1. 概述

本文主要介绍在专有云V3环境中,RocketMQ的Broker备节点上线的方法。

1.1. 适用范围

  • 专有云V3企业版,RocketMQ
    说明:适用于专有云V3.5.2~V3.14环境。

1.2. 用户告知

  • 适用平台:x86、ARM
  • 授权级别:L2(二线技术支持工程师)
  • 临时或固化方案:固化
  • 操作复杂度:高
  • 预估执行时长:25分钟
  • 业务影响:是
    说明:备机上下线过程中会有消息收发的秒级失败,需对业务进行评估,建议低峰期执行。
  • 风险等级:高

2. 问题描述

在专有云V3环境中,存在问题的备节点正常与非正常下线后,如何重新上线。

3. 解决方案

3.1. 环境检查

  1. 登录天基控制台,在Project框中搜索aliware-taokeeper,单击BasicCluster集群右侧的集群运维中心。选择aliware-taokeeper服务与taokeeper#服务角色,在过滤出来的主机右侧单击Terminal,登录对应的机器。
  2. 登录taokeeper容器,执行以下命令,进入ZooKeeper的命令行。
    sh /home/admin/taokeeper-3.4.6/zookeeper-3.4.6/bin/zkCli.sh
    说明:这里的路径因版本不同而不同。
    系统显示类似如下。
  3. 执行以下命令,查看Broker节点主备情况。
    get /MQFailover/StateMachine/[$Cluster]/[$Cluster_Broker]
    说明
    • [$Cluster]为集群名,[$Cluster_Broker]为Broker名称,可登录Broker节点,通过执行以下命令进行确认。
      sh /home/admin/rmq/bin/mqadmin clusterList
    • 返回值为SLAVE,则是备节点,返回其余值(ASYNC_MASTER或SYNC_MASTER),则是主节点。
    系统显示类似如下。
  4. 录上一步确定的备节点的宿主机,执行以下命令,确定备节点的/home/admin/store在宿主机中的挂载目录。
    sudo docker inspect [$Container_ID]
    说明:[$Container_ID]为备节点容器的ID。
    系统显示类似如下。

3.2. 实施步骤

停止备节点

说明:若备节点已停止,则忽略此步骤。

登录目标Broker节点所在宿主机,执行以下命令,停止备节点的运行。

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

系统显示类似如下。

如果以上命令长时间无反馈,可直接执行以下命令。

sudo tjc stop mq-broker.DeployBroker#

清理消息数据内容

  1. 登录环境检查中确定的备节点的宿主机,备份环境检查第4步确定的目录中的内容。
  2. 清理环境检查第4步确定的目录中的内容。只保留config目录下subscriptionGroup.jsontopics.json文件。

开启备节点

执行以下命令,启动broker容器。

sudo tjc start mq-broker.DeployBroker#

系统显示类似如下。

确认同步状态

  1. 执行以下命令,确认备节点已加入集群。
    sh /home/admin/rmq/bin/mqadmin clusterList
  2. 观察备机TPS,此时备机可能会大量拉取主机数据,进行同步,TPS远大于主机与其他节点的值,此为正常现象,持续观察,直至备机TPS稳定,且与主机一致。
  3. 请参见环境检查,在ZooKeeper的命令行,执行以下命令,检查ZooKeeper中该Broker节点的state属性,是否为"state":"SYNC_STATE"。若状态不符,请联系阿里云技术支持,确认是否需要核对数据一致性。
    get /MQFailover/StateMachine/[$Cluster]/[$Cluster_Broker]
    系统显示类似如下。

使禁止写入的节点恢复正常

登录任意一台deploy-broker容器,执行以下命令,使禁止写入的节点恢复正常。

sh /home/admin/rmq/bin/mqadmin updateBrokerConfig -b [$Broker_IP]:10911 -k brokerPermission -v 6

说明

  • -v:4为只读,6为可读写,遵循先恢复主节点,后恢复备节点的原则。
  • [$Broker_IP]:为需要恢复禁止写入的Broker节点机器的IP地址。

3.3. 结果验证

请参见确认同步状态,进行验证。

4. 回滚方案

  1. 登录任意一台deploy-broker容器,执行以下命令,禁止主备节点写入。
    sh /home/admin/rmq/bin/mqadmin updateBrokerConfig -b [$Broker_IP]:10911 -k brokerPermission -v 4
  2. 请参见停止备节点,停止备节点。
  3. 请参见清理消息数据内容,还原消息数据内容。
首页 应急预案:专有云V3环境中RocketMQ的Broker备节点上线的方法