搭建rocketmq4.5.1双主双从集群

准备192.168.220.135和192.168.220.136两台机器上模拟搭建2主2从集群,

其中135搭建的两台是节点broker1的主(master1)和broker2的从(slave2),136上搭建的两台是broker2的主(master2)和broker1的从(slave1)

先配置一下host,为集群准备,当然也可以不配置域名,配置处直接使用ip就行

192.168.220.135 rocketmq-nameserver1
192.168.220.136 rocketmq-nameserver2

192.168.220.135 rocketmq-master1
192.168.220.135 rocketmq-slave2

192.168.220.136 rocketmq-master2
192.168.220.136 rocketmq-slave1

1、下载rocketmq

wget  https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip

2、解压

unzip  rocketmq-all-4.5.1-bin-release.zip 

3、配置环境变量,也可以不配置

vim /etc/profile,追究如下内容

export ROCKETMQ_HOME=/usr/local/rocketmq-all-4.5.1-bin-release
export PATH=$PATH:${ROCKETMQ_HOME}/bin

最后记得: source  /etc/profile

4、创建RocketMQ存储文件的目录

因为要在192.168.220.135和192.168.220.136两台机器上模拟搭建2主2从集群,所以各在两天机器上创建两套数据存储目录。

进入192.168.220.135的rocketmq-all-4.5.1-bin-release目录,创建RocketMQ存储文件的目录,依次执行如下命令:

midir broker-a1
cd broker-a1
mkdir logs mkdir store cd store
/ mkdir commitlog mkdir consumequeue mkdir index

然后cp出一份刚才创建的目录,作为broker2的从机使用,命令  cp -r  broker-a1  broker-b2

同理,在192.168.220.136的rocketmq-all-4.5.1-bin-release目录,创建RocketMQ存储文件的目录,依次执行如下命令:

midir broker-b1
cd broker-b1
mkdir logs
mkdir store
cd store/
mkdir commitlog
mkdir consumequeue
mkdir index

然后cp出一份刚才创建的目录,作为broker2的从机使用,命令  cp -r  broker-b1  broker-a2

5、配置文件

在192.168.220.135机器进入2m-2s-sync目录:/usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync

配置broker-a的主服务器配置文件broker-a.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示Master, > 0 表示slave
brokerId=0
#nameServer 地址,分号分割
#namesrvAddr=192.168.220.135:9876;192.168.220.136:9876
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认是凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store
#commitLog存储路径
storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a1/store/abort
#限制的消息大小
maxMessageSize=65536
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageTreadPoolNums=128
#拉消息线程池数量
#pullMessageTreadPoolNums=128

配置broker-b的从服务器配置文件broker-b-s.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示Master, > 0 表示slave
brokerId=1
#nameServer 地址,分号分割
#namesrvAddr=192.168.220.135:9876;192.168.220.136:9876
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认是凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store
#commitLog存储路径
storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b2/store/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
#发消息线程池数量
#sendMessageTreadPoolNums=128
#拉消息线程池数量
#pullMessageTreadPoolNums=128

在192.168.220.136机器进入2m-2s-sync目录:/usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync

配置broker-a的从服务器配置文件broker-a-s.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示Master, > 0 表示slave
brokerId=1
#nameServer 地址,分号分割
#namesrvAddr=192.168.220.135:9876;192.168.220.136:9876
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认是凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88

#存储路径
storePathRootDir=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store
#commitLog存储路径
storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-a2/store/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
#发消息线程池数量
#sendMessageTreadPoolNums=128
#拉消息线程池数量
#pullMessageTreadPoolNums=128

配置broker-b的主服务器配置文件broker-b.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示Master, > 0 表示slave
brokerId=0
#nameServer 地址,分号分割
#namesrvAddr=192.168.220.135:9876;192.168.220.136:9876
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认是凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88

#存储路径
storePathRootDir=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store
#commitLog存储路径
storePathCommitLog=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-all-4.5.1-bin-release/brocker-b1/store/abort

#限制的消息大小
maxMessageSize=65536
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageTreadPoolNums=128
#拉消息线程池数量
#pullMessageTreadPoolNums=128

6、启动

6.1 启动NameServer集群,每台上执行如下命令:

cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
nohup sh mqnamesrv &

6.2 启动broker集群

在192.168.220.135上启动master1

[root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
[root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a.properties &

在192.168.220.135上启动slave2

[root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
[root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b-s.properties &

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

在192.168.220.136上启动master2

[root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
[root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b.properties &

在192.168.220.136上启动slave1

[root@localhost bin]# cd /usr/local/rocketmq-all-4.5.1-bin-release/bin/
[root@localhost bin]# nohup sh mqbroker -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a-s.properties &

如果启动失败,记得修改一下bin目录的两个文件runbroker.sh 和runserver.sh,将默认的内存设置改小一点,最好设置为1g。

#修改runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

#修改runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"

 启动后,通过jps -l 命令查看一下进程:每台服务器上有1个namesrv进程和2个broker进程

7、查看日志

对于nameserver和broker日志默认位置在:~/logs/rocketmqlogs/namesrv.log和broker.log中,

nameserver和broker日志位置都可以手动配置,具体配置文件就是conf下的logback_broker.xml和logback_namesrv.xml

8 、安装rocketmq控制台

8.1 下载rocketmq控制台项目,github地址:https://github.com/apache/rocketmq-externals

# 方式一、git下载,执行如下命令
git clone https://github.com/apache/rocketmq-externals.git

# 方式二、直接下载,访问如下地址即可
https://github.com/apache/rocketmq-externals/archive/master.zip

8.2编译打包rocketmq-console

下载下来的是对rocketmq扩展的开源项目incubator-rocketmq-externals,这个项目中有一个子模块叫“rocketmq-console”,这个便是管理控制台项目。
进入到rocketmq-console根目录,也就是pom.xml所在目录,通过maven对其进行编译打包。

#注意打包前先在rocketmq-console的配置文件中配置Namesrv集群的地址
#编辑一下rocketmq-console里面的application.properties文件,将项目使用的rocketmq.config.namesrvAddr配置上去(或者在项目启动时,以参数的形式配进去)
rocketmq.config.namesrvAddr=192.168.220.135.9876;192.168.220.136:9876
#mvn命令打包
mvn clean package
-Dmaven.test.skip=true

8.3 上传打包生成的rocketmq-console-ng-1.0.1.jar到部署服务器,这是是springboot项目,所以直接用java命令启动就行。

nohup java -jar rocketmq-console-ng-1.0.1.jar  --server.port=8085 &

或者:

###设置两个参数:--server.port为运行的这个web应用的端口,如果不设置的话默认为8080;--rocketmq.config.namesrvAddr为RocketMQ命名服务地址,如果不设置的话默认为“”
nohup java -jar target/rocketmq-console-ng-1.0.0.jar --server.port=12581 --rocketmq.config.namesrvAddr=192.168.220.135.9876;192.168.220.136:9876 &

9、应用rocketmq控制台

浏览器打开rocketmq-console的部署地址:http://192.168.220.135:8085

10、如果想停掉服务,可以先停掉broker:

sh mqshutdown broker

再关闭namesrv:

sh mqshutdown namesrv

参考文章:

Linux下搭建RocketMQ4.5.2集群并设置开机自启

原文地址:https://www.cnblogs.com/tyhj-zxp/p/13233227.html