RocketMQ升级到主从切换的方法教程

发布时间:2021-09-29 16:43:57 作者:iii
来源:亿速云 阅读:215
# RocketMQ升级到主从切换的方法教程

## 目录
1. [主从架构核心概念](#一主从架构核心概念)
   - 1.1 [RocketMQ集群模式对比](#11-rocketmq集群模式对比)
   - 1.2 [主从切换设计原理](#12-主从切换设计原理)
2. [升级前准备工作](#二升级前准备工作)
   - 2.1 [环境兼容性检查](#21-环境兼容性检查)
   - 2.2 [数据备份方案](#22-数据备份方案)
3. [主从配置实战](#三主从配置实战)
   - 3.1 [Broker角色配置](#31-broker角色配置)
   - 3.2 [HA服务参数调优](#32-ha服务参数调优)
4. [故障切换演练](#四故障切换演练)
   - 4.1 [手动触发主从切换](#41-手动触发主从切换)
   - 4.2 [自动故障检测机制](#42-自动故障检测机制)
5. [生产环境验证](#五生产环境验证)
   - 5.1 [监控指标配置](#51-监控指标配置)
   - 5.2 [回滚应急预案](#52-回滚应急预案)
6. [常见问题解决方案](#六常见问题解决方案)

---

## 一、主从架构核心概念
### 1.1 RocketMQ集群模式对比
| 模式类型       | 节点角色          | 数据一致性   | 故障恢复时间 |
|----------------|-------------------|--------------|--------------|
| 单Master       | 独立部署          | 无副本       | 不可恢复     |
| 多Master       | 全量节点平等      | 最终一致     | 分钟级       |
| **主从模式**   | Master-Slave分层  | 强一致性     | 秒级切换     |

```java
// 典型主从配置示例
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0  // 0表示Master,>0表示Slave
brokerRole = SYNC_MASTER  // 同步复制模式

1.2 主从切换设计原理

核心组件交互流程: 1. HAConnection建立长连接 2. Slave定期上报偏移量 3. Master心跳检测超时(默认10秒) 4. Controller选举新Master


二、升级前准备工作

2.1 环境兼容性检查

  1. 版本要求

    • 必须≥4.5.0版本
    • NameServer集群≥3节点
  2. 磁盘检测脚本

#!/bin/bash
df -h | grep /data/rocketmq/store
ls -lh /data/rocketmq/store/commitlog | wc -l

2.2 数据备份方案

推荐备份策略: 1. 停止Broker进程 2. 使用rsync增量备份

rsync -avzP /store_path root@backup:/rocketmq_backup/$(date +%Y%m%d)

三、主从配置实战

3.1 Broker角色配置

master节点broker-a.properties

listenPort=10911
brokerIP1=192.168.1.101
enableControllerMode=true
controllerAddr=192.168.1.101:9876

slave节点broker-a-s1.properties

brokerId=1
brokerRole=SLAVE
syncMasterFlushOffset=true
haMasterAddress=192.168.1.101:10911

3.2 HA服务参数调优

参数名 默认值 生产建议值
haSendHeartbeatInterval 5000 3000
haHousekeepingInterval 20000 15000
haTransferBatchSize 32768 65536

四、故障切换演练

4.1 手动触发主从切换

# 通过admin命令触发
mqadmin updateBrokerConfig -n ns1:9876 -b broker-a-s1 \
  -k brokerRole -v SYNC_MASTER

4.2 自动故障检测机制

检测逻辑时序图

sequenceDiagram
    Master->>Slave: 定时心跳(3s间隔)
    Slave->>Controller: 上报状态
    alt 心跳丢失
        Controller->>Slave: 发起选举
    end

五、生产环境验证

5.1 监控指标配置

Prometheus关键指标

- job_name: 'rocketmq_exporter'
  metrics_path: '/metrics'
  static_configs:
    - targets: ['mq-exporter:5557']
  relabel_configs:
    - source_labels: [__address__]
      regex: '(.*):9876'
      target_label: instance

5.2 回滚应急预案

  1. 停止所有Slave节点
  2. 修改Master配置:
brokerRole=ASYNC_MASTER
enableControllerMode=false

六、常见问题解决方案

问题1:切换后消息堆积 - 原因:Slave同步延迟 - 解决方案:

  UPDATE broker_stats SET flush_offset = (SELECT MAX(offset) FROM commitlog)

问题2:脑裂现象 - 现象:双Master同时写入 - 处理步骤: 1. 断开网络分区 2. 人工介入仲裁 3. 重建ZK临时节点


最佳实践建议:在业务低峰期执行切换操作,提前进行至少3次完整演练。监控Grafana看板应包含”HA_Status”和”SyncDelay”关键指标。 “`

注:本文为简化示例,实际完整版需补充以下内容: 1. 各配置参数的详细解释 2. 性能压测数据对比 3. 不同版本间的差异说明 4. 完整的运维操作手册 5. 企业级案例实践分析

推荐阅读:
  1. RocketMQ
  2. MySQL之主从切换

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rocketmq

上一篇:如何实现基于SpringCloudAlibaba和Nacos微服务体系下的FeignClient客户端负载均衡

下一篇:什么是TensorFlow

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》