RocketMQ集群dlegger部署

#rocketmq #消息队列 #dledger #集群部署 #安装

总结
  • 3 台机器部署 3 个 NameServer + 9 个 Broker(3 组,每组 3 个),组内自动选举 master
  • 配置文件主要改三个地方:brokerIP1、namesrvAddr、dLegerPeers
  • 每台机器跑 3 个 Broker 容器,对应的配置文件不同
  • 部署完在 console 看到所有 Broker 都是在线状态就说明成功了

1. 架构说明

RocketMQ 用 Dledger 模式部署,3 台机器,每台跑 1 个 NameServer + 3 个 Broker,共 9 个 Broker 分 3 组,组内通过 Raft 协议自动选 master。单机挂了会自动重新选举,不影响业务。

三台机器 IP:192.168.50.18192.168.50.245192.168.50.9

机器 IP 部署服务 Broker 配置文件
A 192.168.50.18 NameServer + Broker broker-n 0、broker-n 5、broker-n 7
B 192.168.50.245 NameServer + Broker broker-n 2、broker-n 4、broker-n 6
C 192.168.50.9 NameServer + Broker broker-n 1、broker-n 3、broker-n 8

2. 配置文件处理

配置文件在 NAS 上,下载后需要改三个地方:

建议用统一替换,别手动一个个改,容易漏。

把配置文件放到 /home/rocketmq/config

mkdir -p /home/rocketmq/config

3. NameServer 部署

A、B、C 三台机器各执行一次:

docker run -d \
--restart=always \
--name rmqnamesrv \
--privileged=true \
-p 10111:9876 \
-v /etc/localtime:/etc/localtime \
-v /home/rocketmq/logs:/home/rocketmq/logs \
-v /home/rocketmq/store:/home/rocketmq/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
-e "JAVA_OPT_EXT=-server -Xms1g -Xmx1g" \
apache/rocketmq:4.9.7 \
sh mqnamesrv

4. Broker 部署

4.1 创建用户和目录

三台机器都执行,创建 rocketmq 用户:

groupadd rocketmq && useradd -g rocketmq rocketmq && groupmod -g 3000 rocketmq && usermod -u 3000 rocketmq

创建 9 个 Broker 的工作目录:

for ((i=0; i<=8; i++))
do
  mkdir -p /home/rocketmq/broker-n${i}/logs
  mkdir -p /home/rocketmq/broker-n${i}/store
done

授权:

chown -R rocketmq:rocketmq /home/rocketmq

4.2 启动 Broker 容器

每台机器跑 3 个 Broker 容器,对应的配置文件不同:

A 机器(192.168.50.18)

sh install-n0.sh && sh install-n5.sh && sh install-n7.sh

B 机器(192.168.50.245)

sh install-n2.sh && sh install-n4.sh && sh install-n6.sh

C 机器(192.168.50.9)

sh install-n1.sh && sh install-n3.sh && sh install-n8.sh

安装脚本在 NAS 上,下载后放到对应机器执行即可。

5. Console 部署

改一下真实的 IP,执行:

docker run -d \
--name rmqconsole \
-v /etc/localtime:/etc/localtime:ro \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.50.18:10111;192.168.50.245:10111;192.168.50.9:10111 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 18080:8080 \
-t styletang/rocketmq-console-ng

访问 http://IP:18080 进入 Console 页面。

6. 验证

部署完成后在 Console 页面看到所有 Broker 都是在线状态,说明安装成功:

4f5162fe18eb088567f375b3f18bd773 MD5

重点看: