RocketMQ集群部署

RocketMQ集群部署

RocketMQ5.3.0-control-多 Master 多 Salve-异步复制-集群搭建

机器

ip以真实设备为准

两台机器 部署broker-a形成一主一从

服务器 IP NameServer BROKER角色
服务器1 83.1.12.30 83.1.12.30:9876
服务器2 83.1.12.31 83.1.12.31:9876 broker-a(master),broker-b-s(slave)
服务器3 83.1.12.32 83.1.12.32:9876 broker-b(master),broker-a-s(slave)

参考文档

1
https://rocketmq.apache.org/zh/docs/quickStart/01quickstart

Host配置

1
2
3
echo "83.1.12.30 rocketmq-n0" | tee -a /etc/hosts
echo "83.1.12.31 rocketmq-n1" | tee -a /etc/hosts
echo "83.1.12.32 rocketmq-n2" | tee -a /etc/hosts

安装包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 下载安装包

cd /home
wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.0/rocketmq-all-bin-release.zip

unzip rocketmq-all-5.3.0-bin-release.zip  
mv /home/rocketmq-all-5.3.0-bin-release /home/rocketmq

mkdir -p /home/rocketmq/logs
sed -i 's#${user.home}#/home/rocketmq#g' /home/rocketmq/conf/*.xml

# 根据实际情况修改内存
sed -i 's#-Xms8g -Xmx8g#-Xms2g -Xmx2g#g' /home/rocketmq/bin/runbroker.sh
sed -i 's#-Xms4g -Xmx4g#-Xms1g -Xmx1g#g' /home/rocketmq/bin/runserver.sh

Namesrv配置

三台设备都要执行

83.1.12.30设备

1
2
3
4
5
6
7
8
9
10
tee /home/rocketmq/conf/namesrv.conf <<-'EOF'
listenPort=9876
enableControllerInNamesrv=true
controllerDLegerGroup=group1
controllerDLegerPeers=n0-rocketmq-n0:9878;n1-rocketmq-n1:9878;n2-rocketmq-n2:9878
controllerDLegerSelfId=n0
controllerStorePath=/home/rocketmq/controller/DledgerController
enableElectUncleanMaster=true
notifyBrokerRoleChanged=true
EOF

83.1.12.31设备

1
2
3
4
5
6
7
8
9
10
11
tee /home/rocketmq/conf/namesrv.conf <<-'EOF'
listenPort=9876
enableControllerInNamesrv=true
controllerDLegerGroup=group1
controllerDLegerPeers=n0-rocketmq-n0:9878;n1-rocketmq-n1:9878;n2-rocketmq-n2:9878
controllerDLegerSelfId=n2
controllerStorePath=/home/rocketmq/controller/DledgerController
enableElectUncleanMaster=true
notifyBrokerRoleChanged=true
EOF

83.1.12.32设备

1
2
3
4
5
6
7
8
9
10
tee /home/rocketmq/conf/namesrv.conf <<-'EOF'
listenPort=9876
enableControllerInNamesrv=true
controllerDLegerGroup=group1
controllerDLegerPeers=n0-rocketmq-n0:9878;n1-rocketmq-n1:9878;n2-rocketmq-n2:9878
controllerDLegerSelfId=n3
controllerStorePath=/home/rocketmq/controller/DledgerController
enableElectUncleanMaster=true
notifyBrokerRoleChanged=true
EOF

三台设备都要执行,启动namesrv

1
2
3
4
5
sh /home/rocketmq/bin/mqshutdown namesrv
nohup sh /home/rocketmq/bin/mqnamesrv  -c /home/rocketmq/conf/namesrv.conf > /home/rocketmq/logs/mqnamesrv.log 2>&1 &

# 查看日志是否启动成功
tail -f /home/rocketmq/logs/mqnamesrv.log 2>&1 &

Broker配置

1
broker-a、broker-b-s这两台broker是配置在服务器31上,broker-b、broker-a-s这两台broker是配置在服务器32上。这两对主从节点在不同的服务器上,服务器30上没有部署broker。需要修改每台broker的配置文件。注意,同⼀台服务器上的两个broker保存路径不能⼀样。

broker-a-master

在服务器31上,进⼊到conf/2m-2s-async⽂件夹内,修改broker-a.properties⽂件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
cd /home/rocketmq/conf/2m-2s-async

vi broker-a.properties

# 指定整个broker集群的名称,或者说是RocketMQ集群的名称
brokerClusterName=DefaultCluster
# 指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群
brokerName=broker-a
# broker所在服务器的ip
brokerIP1=rocketmq-n1
# broker的id,0表示master,>0表示slave
brokerId=0
# 指定删除消息存储过期文件的时间为凌晨4点
deleteWhen=04
# 指定未发生更新的消息存储文件的保留时长为48小时,48小时后过期,将会被删除
fileReservedTime=48
# 指定当前broker为异步复制master
brokerRole=ASYNC_MASTER
# 指定刷盘策略为异步刷盘
flushDiskType=ASYNC_FLUSH
# 指定Name Server的地址
namesrvAddr=rocketmq-n0:9876;rocketmq-n1:9876;rocketmq-n2:9876
# 在发送消息⾃动创建不存在的topic时,默认创建的队列数为4个
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# broker对外服务的监听端口
listenPort=10911
# abort文件存储路径
abortFile=/home/rocketmq/store/abort
# 消息存储路径
storePathRootDir=/home/rocketmq/store
# commitLog存储路径
storePathCommitLog=/home/rocketmq/store/commitlog
# 消费队列存储路径
storePathConsumeQueue=/home/rocketmq/store/consumequeue
# 消息索引存储路径
storePathIndex=/home/rocketmq/store/index
# checkpoint文件存储路径
storeCheckpoint=/home/rocketmq/store/checkpoint
# 限制的消息大小
maxMessageSize=65536

broker-a-salve

在服务器32上,进⼊到conf/2m-2s-async文件夹内,修改broker-a-s.properties文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
cd /opt/home/rocketmq4.8.0/conf/2m-2s-async

vi broker-a-s.properties

# 指定整个broker集群的名称,或者说是RocketMQ集群的名称
brokerClusterName=DefaultCluster
# 指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群
brokerName=broker-a
# broker所在服务器的ip
brokerIP1=rocketmq-n2
# broker的id,0表示master,>0表示slave
brokerId=1
# 指定删除消息存储过期文件的时间为凌晨4点
deleteWhen=04
# 指定未发生更新的消息存储文件的保留时长为48小时,48小时后过期,将会被删除
fileReservedTime=48
# 指定当前broker为异步复制master
brokerRole=SLAVE
# 指定刷盘策略为异步刷盘
flushDiskType=ASYNC_FLUSH
# 指定Name Server的地址
namesrvAddr=rocketmq-n0:9876;rocketmq-n1:9876;rocketmq-n2:9876
# 在发送消息⾃动创建不存在的topic时,默认创建的队列数为4个
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# broker对外服务的监听端口
listenPort==11011
# abort文件存储路径
abortFile=/data/rocketmq/store-slave/abort
# 消息存储路径
storePathRootDir=/data/rocketmq/store-slave
# commitLog存储路径
storePathCommitLog=/data/rocketmq/store-slave/commitlog
# 消费队列存储路径
storePathConsumeQueue=/data/rocketmq/store-slave/consumequeue
# 消息索引存储路径
storePathIndex=/data/rocketmq/store-slave/index
# checkpoint文件存储路径
storeCheckpoint=/data/rocketmq/store-slave/checkpoint
# 限制的消息大小
maxMessageSize=65536

broker-b-master

在服务器32上,进入到conf/2m-2s-async文件夹内,修改broker-b.properties文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
cd /home/rocketmq/conf/2m-2s-async

vi broker-b.properties

# 指定整个broker集群的名称,或者说是RocketMQ集群的名称
brokerClusterName=DefaultCluster
# 指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群
brokerName=broker-b
# broker所在服务器的ip
brokerIP1=rocketmq-n2
# broker的id,0表示master,>0表示slave
brokerId=0
# 指定删除消息存储过期文件的时间为凌晨4点
deleteWhen=04
# 指定未发生更新的消息存储文件的保留时长为48小时,48小时后过期,将会被删除
fileReservedTime=48
# 指定当前broker为异步复制master
brokerRole=ASYNC_MASTER
# 指定刷盘策略为异步刷盘
flushDiskType=ASYNC_FLUSH
# 指定Name Server的地址
namesrvAddr=rocketmq-n0:9876;rocketmq-n1:9876;rocketmq-n2:9876
# 在发送消息⾃动创建不存在的topic时,默认创建的队列数为4个
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# broker对外服务的监听端口
listenPort=10911
# abort文件存储路径
abortFile=/home/rocketmq/store/abort
# 消息存储路径
storePathRootDir=/home/rocketmq/store
# commitLog存储路径
storePathCommitLog=/home/rocketmq/store/commitlog
# 消费队列存储路径
storePathConsumeQueue=/home/rocketmq/store/consumequeue
# 消息索引存储路径
storePathIndex=/home/rocketmq/store/index
# checkpoint文件存储路径
storeCheckpoint=/home/rocketmq/store/checkpoint
# 限制的消息大小
maxMessageSize=65536

在服务器31上,进入到conf/2m-2s-async文件夹内,修改broker-b-s.properties文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
cd /home/rocketmq/conf/2m-2s-async

vi broker-b-s.properties

# 指定整个broker集群的名称,或者说是RocketMQ集群的名称
brokerClusterName=DefaultCluster
# 指定master-slave集群的名称。一个RocketMQ集群可以包含多个master-slave集群
brokerName=broker-b
# broker所在服务器的ip
brokerIP1=rocketmq-n1
# broker的id,0表示master,>0表示slave
brokerId=1
# 指定删除消息存储过期文件的时间为凌晨4点
deleteWhen=04
# 指定未发生更新的消息存储文件的保留时长为48小时,48小时后过期,将会被删除
fileReservedTime=48
# 指定当前broker为异步复制master
brokerRole=SLAVE
# 指定刷盘策略为异步刷盘
flushDiskType=ASYNC_FLUSH
# 指定Name Server的地址
namesrvAddr=rocketmq-n0:9876;rocketmq-n1:9876;rocketmq-n2:9876
# 在发送消息⾃动创建不存在的topic时,默认创建的队列数为4个
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# broker对外服务的监听端口
listenPort=11011
# abort文件存储路径
abortFile=/home/rocketmq/store-slave/abort
# 消息存储路径
storePathRootDir=/home/rocketmq/store-slave
# commitLog存储路径
storePathCommitLog=/home/rocketmq/store-slave/commitlog
# 消费队列存储路径
storePathConsumeQueue=/home/rocketmq/store-slave/consumequeue
# 消息索引存储路径
storePathIndex=/home/rocketmq/store-slave/index
# checkpoint文件存储路径
storeCheckpoint=/home/rocketmq/store-slave/checkpoint
# 限制的消息大小
maxMessageSize=65536

在服务器31中启动broker-a(master)broker-b-s(slave)

1
2
3
cd /home/rocketmq/bin
nohup ./mqbroker -c ../conf/2m-2s-async/broker-a.properties > /home/rocketmq/logs/broker-a.out 2>1 &
nohup ./mqbroker -c ../conf/2m-2s-async/broker-b-s.properties > /home/rocketmq/logs/broker-b-s.out 2>1 &

在服务器32中启动broker-b(master)broker-a-s(slave)

1
2
3
cd /home/rocketmq/bin
nohup ./mqbroker -c ../conf/2m-2s-async/broker-b.properties > /home/rocketmq/logs/broker-b.out 2>1 &
nohup ./mqbroker -c ../conf/2m-2s-async/broker-a-s.properties > /home/rocketmq/logs/broker-a-s.out 2>1 &

RocketMQ集群部署
http://ziiix.cn/2025/04/01/RocketMQ集群部署/
作者
John Doe
发布于
2025年4月1日
许可协议