Linux环境 RocketMQ 5.X 三主三从集群部署

本文介绍了如何在Linux环境下,设置3台服务器作为nameserver和brokerserver,实现RocketMQ的2M-2S异步复制集群配置,包括master和slave的配置,服务启动和控制台安装步骤。

一、环境要求

  1. 64bit OS-Linux
  2. 64bit JDK 1.8
  3. 下载安装RocketMQ 5.3.3 版本

二、服务器规划

序号 IP 角色
1 192.168.239.130 nameserver、brokerserver
2 192.168.239.131 nameserver、brokerserver
3 192.168.239.132 nameserver、brokerserver

 

 

 

 

2.1 服务规划

  1. NameServer:每台服务器运行一个 NameServer 实例。
  2. Broker Master:每台服务器运行一个 Master Broker。
  3. Broker Slave:每台服务器运行一个 Slave Broker,作为另一台服务器上的 Master Broker 的从节点。

2.2防火墙规划

确保以下端口开放:

  1. NameServer:9876
  2. Broker Master/Slave:10911, 10912, 10921, 10922
一次放开端口:
sudo firewall-cmd --zone=public --add-port=9876/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10911/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10912/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10921/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10922/tcp --permanent

重新加载防火墙规则 :
sudo firewall-cmd --reload

检查开放的端口 :
sudo firewall-cmd --list-ports

三、下载安装

关于RocketMQ 5.3.3 下载安装可移步:https://www.cnblogs.com/luotengteng/p/19024820 

先在第一台服务器下载安装包到我们想要安装的目录(本文的安装路径在/usr/local/rocketmq/rocketmq-cluster),然后进行配置文件修改以及日志目录修改,具体如下:

本文是多主多从异步复制集群配置,需要/usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async 目录针对master-a配置以及salve-b进行配置:

 broker-a.properties配置文件如下:(master节点)

# 集群名,不同broker节点集群名是一样的
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master ,>0 表示 Slave
brokerId=0
#nameServer地址,多个用分号分割
namesrvAddr=192.168.239.130:9876;192.168.239.131:9876;192.168.239.132:9876
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.239.130
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上建议关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上建议关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口
listenPort=10921
#用于 Broker 主从同步的监听端口,默认值:listenPort - 1,可自己修改
haListenPort=10922
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=18
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/rocketmq-cluster/store-s
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-cluster/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/rocketmq-cluster/store-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/rocketmq-cluster/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/rocketmq-cluster/store-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/rocketmq-cluster/store-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

broker-b-s.properties配置文件如下:(salve节点)

# 集群名,不同broker节点集群名是一样的
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master ,>0 表示 Slave
brokerId=1
#nameServer地址,多个用分号分割
namesrvAddr=192.168.239.130:9876;192.168.239.131:9876;192.168.239.132:9876
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.239.130
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上建议关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上建议关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口
listenPort=10921
#用于 Broker 主从同步的监听端口,默认值:listenPort - 1,可自己修改
haListenPort=10922
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=18
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/rocketmq-cluster/store-s
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-cluster/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/rocketmq-cluster/store-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/rocketmq-cluster/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/rocketmq-cluster/store-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/rocketmq-cluster/store-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

注意事项:

1. 两个配置文件中都设置了存储路径,需要注意在自己的服务器上创建相应的目录
2. 注意brokerId的设置,0:表示master 大于0:表示salve
3. 两个配置文件中broker对外服务的监听端口listenPort和haListenPort注意设置不一样,不然会导致端口冲突
4. 分别修改 /usr/local/tools/rocketmq/rocketmq/bin 目录下 runserver.sh 和 runbroker.sh 的JAVA_OPT内存大小,不然启动不了

把第一台服务器的安装配置分别复制到第二和第三台服务器

scp -r /usr/local/rocketmq/rocketmq-cluster luoteng@192.168.239.131:/usr/local/rocketmq/

scp -r /usr/local/rocketmq/rocketmq-cluster luoteng@192.168.239.132:/usr/local/rocketmq/

分别修改第二和第三台服务器broker配置,其实和第一台差不多,只是改下broker配置文件名称以及配置文件中的brokerName:

第二台服务器将broker-a.properties改为broker-b.properties,broker-b-s.properties改为broker-c-s.properties
第三台服务器将broker-b.properties改为broker-c.properties,broker-c-s.properties改为broker-a-s.properties
broker-b.properties,broker-c-s.properties配置文件内brokerName分别改为 broker-b,broker-c
broker-c-s.properties,broker-a-s.properties配置文件内brokerName分别改为 broker-c,broker-a

四、服务启动

#第一步:分别在三台服务器启动nameserver
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqnamesrv &
 
#第二步:分别在三台服务器启动master-broker
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-a.properties &
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-b.properties &
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-c.properties &
 
#第三步:分别在三台服务器启动salve-broker
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-b-s.properties &
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-c-s.properties &
nohup sh /usr/local/rocketmq/rocketmq-cluster/bin/mqbroker -c /usr/local/rocketmq/rocketmq-cluster/conf/2m-2s-async/broker-a-s.properties &
 
#分别在三台服务器执行jps命令,查看服务是否全部启动成功:
jps
#没错误的话应该有如下输出:
62196 Jps
8999 NamesrvStartup
18219 BrokerStartup
18015 BrokerStartup

五、修改RocketMQ控制台配置

更改配置文件application.properties,设置刚刚部署的nameserver地址:rocketmq.config.namesrvAddr=192.168.239.130:9876;192.168.239.131:9876;192.168.239.132:9876

重新打包部署:

image

 RocketMQ控制台安装,可以移步:https://www.cnblogs.com/luotengteng/p/19025379

然后访问RocketMQ控制台,可以看到rocketmq集群信息:

image

 至此,RocketMQ三主三从异步复制部署完成。

 

原文参考链接:https://blog.csdn.net/weixin_36818110/article/details/115654762

 

posted @ 2025-08-11 17:54  LuoTengteng  阅读(226)  评论(0)    收藏  举报