RocketMQ 集群的扩容操作主要涉及两个核心组件:Broker 扩容 与 NameServer 扩容。

- Broker 扩容:指添加新的 Broker Master(或包含 Slave 的主从组),这是最常见的水平扩容方式,旨在提升整个集群的消息写入与读取吞吐能力。
- NameServer 扩容:NameServer 作为轻量级的路由注册与发现中心,本身无状态,扩容相对简单,主要用于应对高并发路由请求或服务端节点数量增长带来的压力。
NameServer 扩容
何时需要扩容 NameServer?
- 客户端(Producer/Consumer)发起路由请求的 QPS 过高。
- 集群中 Broker、Producer 或 Consumer 的实例数量庞大,对服务发现层造成压力。

扩容流程:
- 直接部署并启动新的 NameServer 实例。
- 修改所有客户端(Producer、Consumer)以及现有 Broker 的配置,将新的 NameServer 地址加入到
namesrvAddr 列表中。
Broker 扩容
Broker 扩容是提升集群处理能力的关键。基本流程为:准备新服务器 -> 配置新的 broker.conf 文件 -> 启动新的 Broker 进程。

关键配置步骤:
- 在新增的机器上,准备 RocketMQ 运行环境。
-
创建或从现有配置拷贝并修改 conf/broker.conf,需特别注意以下参数:
# 所属集群名称(必须与现有集群一致)
brokerClusterName=your-cluster-name
# Broker 名称(建议唯一,如 broker-c;若为现有组增加 Slave,则复用主节点名称,但 brokerId 不同)
brokerName=broker-c
# 节点角色,Master 为 0,Slave 为大于 0 的整数(如 1)
brokerId=0
# NameServer 地址列表(需包含所有在线的 NameServer,用分号分隔)
namesrvAddr=ns1:9876;ns2:9876;ns3:9876
# 生产环境建议关闭,避免自动创建 Topic 导致混乱
autoCreateTopicEnable=false
# Broker 监听端口,确保不与现有服务冲突
listenPort=10911
# 数据存储路径,指向新磁盘或目录
storePathRootDir=/data/rocketmq/store
- 使用修改后的配置文件启动新的 Broker。
nohup sh bin/mqbroker -c conf/broker.conf &
运维要点:
Broker 成功启动并向 NameServer 注册后,客户端会自动感知到新的节点。整个扩容过程是构建和维护高可用消息中间件集群的常规操作。为了确保线上系统的稳定,建议在非高峰时段进行,并提前做好配置检查和备份恢复演练。对于大规模集群,可以考虑结合自动化运维工具来提升效率。
|