zoukankan      html  css  js  c++  java
  • RocketMQ系列:运维之集群节点下线操作

    运维场景

    我搭建了一个3m-3s的rocketmq集群(参考:3m-3s的rocketmq搭建),假设限制有一套master节点的机器发生了故障,需要摘除机器,该如何进行平滑运维?

    例如我搭建了一个3m-3s的broker集群,架构如下:

    如果我要摘除集群中的broker-a节点,该如何操作?

    首先要明确的有三点:

    第一点:首先要将broker-a变成不可接收新消息的状态(即新来的消息都落到broker-b和broker-c上),但是不能影响正在处理的消息落盘。

    第二点:设置完第一步后,broker-a-s为其slave机器;第一步操作不能影响从slave消费之前已落盘的消息。

    第三点:摘除broker-a后,集群的规模变小了,还是否能经得起当前生产和消费的TPS。

    其中第三步是可以评估的,一般集群规模最大能承受TPS应该的水位线是2/3,比如当前集群最大TPS为10000,那生产环境实际的TPS建议不要超过7000,超过7000就得扩容broker集群了。

    操作

    首先我们了解下topic的perm属性,这里可以在控制台查看:

    perm指的是topic的读写属性:

    6:可读可写

    4:只读

    2:只写

    了解了perm之后,我们就可以利用perm作文章了。

    步骤1

    为了达到第一点所说,只要将broker-a上的所有topic置为只读,那么消息就不会继续写入到broker-a中了,所以对于已创建并关联到broker-a的所有topic,需将这些topic的perm设置为4。

    方式:

    1. 可以点击控制台的TOPIC子页面,在topic里面中,分别点击每项的“topic config”,修改broker-a的perm为4,  如下图:

      

    2.也可以在命令行通过mqadmin updateTopicPerm修改对应topic的权限,如下图:

    步骤2

    1. 查看broker-a写入流量

    查看broker-a的master节点的InTPS,直到InTPS为0,说明该topic已经不再接受新的消息。

    2. 查看broker-a-s的读出流量

    观察broker-a-s上的OutTPS(消费),OutTPS也为0之后,说明消息理论上已经全部被消费完毕。

    步骤3

    查看broker-a上的consumer是否全部消费完毕,且没有diff(有diff说明有的落盘的消息没有被消费到,一般是客户端consumer有bug)

    步骤4

    确认上述后,为了保险起见,建议将broker-a(master和slave机器)分别保留3天,等三天后通过mqshutdown命令停止broker-a和broker-a-s

    至此,摘除故障机器的操作就OK了

    博主:测试生财(一个不为996而996的测开码农)

    座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。

    内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。

    csdn:https://blog.csdn.net/ccgshigao

    博客园:https://www.cnblogs.com/qa-freeroad/

    51cto:https://blog.51cto.com/14900374

    微信公众号:测试生财(定期分享独家内容和资源)

  • 相关阅读:
    .Net中的AOP系列之《方法执行前后——边界切面》
    【信息学奥赛一本通】题解目录
    7219:复杂的整数划分问题
    1039 数的划分
    7215:简单的整数划分问题
    大整数阶乘的计算
    大数阶乘的位数和精确值计算【转】
    Window.Open详解
    在asp.net中显示PDF的方法:
    位运算技巧
  • 原文地址:https://www.cnblogs.com/qa-freeroad/p/13753779.html
Copyright © 2011-2022 走看看