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

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

更新时间:2020-07-21 14:59:45

1. 概述

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

1.1. 适用范围

  • 专有云V3,RocketMQ

1.2. 用户告知

  • 操作复杂度:中
  • 预估执行时长:45分钟
  • 风险等级:低
    说明
    • Broker上电操作对已有的业务及RocketMQ服务无影响。
    • 如果一组Broker的主备节点全部下电,那么在这组Broker上电正常恢复到集群前不可操作RocketMQ控制台。
    • 如果想要操作RocketMQ控制台创建资源,那么需要将Broker上线,保证每组Broker至少有一个节点在集群中。

2. 问题描述

由于现场维修物理机完成后或其他需求,需要对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名称。

3.2. 实施步骤

开启物理机

根据现场情况开启要上电的Broker物理机。

开启Broker的运行

  1. 登录DeployBroker#服务角色的机器,执行以下命令,开启Broker。
    sudo tjc start mq-broker.DeployBroker#
    系统显示类似如下。
  2. 登录任意一个正常运行的mq-broker容器,执行以下命令,查看集群整体状态,应已包含需要上电的Broker,本例中恢复10.X.X.13到集群中。
    sh /home/admin/rmq/bin/mqadmin clusterList
    系统显示类似如下。
  3. 登录天基控制台,在Project框中搜索aliware-taokeeper,单击BasicCluster集群右侧的集群运维中心。选择aliware-taokeeper服务与taokeeper#服务角色,在过滤出来的主机右侧单击Terminal,登录对应的机器。
  4. 登录taokeeper容器,执行以下命令,查看Broker的整体情况是否符合预期。这里10.X.X.13已作为备节点恢复到cluster1_broker1002中,且cluster1_broker100为SYNC_STATE同步状态。
    sh /home/admin/taokeeper-3.4.6/zookeeper-3.4.6/bin/zkCli.sh
    说明:这里的路径因版本不同而不同。
    系统显示类似如下。
  5. 执行以下命令,查看节点状态。
    get /MQFailover/StateMachine/[$Cluster]/[$Cluster_Broker]
    说明:[$Cluster]为集群名,[$Cluster_Broker]为Broker名称。
    系统显示类似如下。

恢复Broker的禁写

参见以下KB文档,恢复Broker的禁写。

  • KB 110146 通用方案:RocketMQ的Broker节点禁止写入状态后的恢复方法

3.3. 结果验证

功能验证

  1. 登录任意一个正常运行的mq-broker容器,执行以下命令,确认Broker已正常恢复到集群中且TPS正常。

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

    系统显示类似如下。

  2. 参见以下步骤,检查原有Topic是否分布在所有Broker上。
    1. 登录专有云控制台,选择一个扩容前已经存在的Topic。

    2. 登录任意一个mq-namesrv容器,执行以下命令,确认该Topic分布在所有Broker上。

      sh /home/admin/rmq/bin/mqadmin topicRoute -n 127.0.0.1:9876 -t [$Topic_Old]

      说明:[$Topic_Old]指原有Topic的名称。

  3. 参考如下步骤,检查新创建的Topic是否分布在所有Broker上。
    1. 登录专有云控制台,创建一个Topic。
    2. 登录任意一个mq-namesrv容器,执行以下命令,确认该Topic分布在所有Broker上。

      sh /home/admin/rmq/bin/mqadmin topicRoute -n 127.0.0.1:9876 -t [$Topic_New]

      说明:[$Topic_New]指新创建的Topic名称。

巡检验证

参考如下步骤进行巡检验证。此处以其中一个Broker为例。

    1. 登录天基控制台,在集群运维页面搜索aliware-taokeeper集群,进入该集群的集群运维中心页面。
    2. 集群运维中心页面,选择 aliware-taokeeper 服务与taokeeper#服务角色,单击机器右边的Terminal,登录taokeeper#服务角色的机器。
    3. taokeeper#服务角色的机器上,执行以下命令,查询taokeeper容器的ID。
      sudo docker ps | grep taokeeper
    4. 执行以下命令,进入taokeeper容器。
      sudo docker exec -it [$Taokeeper_ID]
      说明:[$Taokeeper_ID]指上一步获取的taokeeper容器ID。
    5. 以admin用户执行以下命令,进入zk命令行模式。
      sh /home/admin/taokeeper-3.4.6/taokeeper/bin/zkcli.sh
    6. 在zk命令行模式中,执行以下命令,获取broker的zk状态,确认状态为“SYNC_STATE”。
      get /MQFailover/StateMachine/[$MQ_Cluster_Name]/[$MQ_Broker_Name]
      说明
      • [$MQ_Cluster_Name]指MQ集群的名字,可参考步骤1进行获取。这里的MQ集群的名字不是指天基控制台上MQ集群的名称。
      • [$MQ_Broker_Name]指MQ集群中Broker的名字,可参考步骤1进行获取。
      系统显示类似如下。

4. 回滚方案

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

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