欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rocketmq 双主双从集群搭建

程序员文章站 2022-07-14 23:49:59
...

附:

1、rocketmq(github)

2、rocketmq-externals(github)

一、服务器环境

     jdk1.8,两台 centos 7.5虚拟机,rocketmq4.5.2

#nameserver  
192.168.47.133  rocketmq-nameserver1
192.168.47.134  rocketmq-nameserver2
 
#broker  
192.168.47.133  rocketmq-master1 broker-a.properties
192.168.47.133 rocketmq-slave2 broker-b-s.properties
192.168.47.134 rocketmq-master2 broker-b.properties
192.168.47.134  rocketmq-slave1 broker-a-s.properties

二、配置hosts(两台服务器操作一样)

1.编辑

vim /etc/hosts

2.新增如下内容

#nameserver
192.168.47.133 rocketmq-nameserver1
192.168.47.134 rocketmq-nameserver2

#broker
192.168.47.133 rocketmq-master1
192.168.47.133 rocketmq-slave2
192.168.47.134 rocketmq-master2
192.168.47.134 rocketmq-slave1

3.重启网卡

systemctl restart network

三、配置防火墙(两台服务器操作一样)

1、关闭防火墙(单独开启端口也可以)

firewall-cmd --state   #查看防火墙状态

systemctl start firewalld.service   #开启防火墙

systemctl stop firewalld.service     #关闭防火墙

systemctl disable firewalld.service  #禁止开机启动防火墙

四、下载/解压rocketmq(两台服务器操作一样)

1、下载(附:rocketmq-all-4.5.2-bin-release.zip

wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip

注:如果提示wget命令找不到,则使用yum install wget 下载;

2.解压

yum install unzip

注:如果提示unzip命令找不到,则使用yum install unzip 下载;

五、环境变量配置(两台服务器操作一样)

1、编辑

vim /etc/profile

2、配置

export JAVA_HOME="/opt/jdk1.8.0_144"
export CLASSPATH=".:$JAVA_HOME/lib"
export ROCKETMQ_HOME="/usr/local/rocketmq/"
export PATH="$JAVA_HOME/bin:$PATH:$ROCKETMQ_HOME/bin"

3、配置生效 

source /etc/profile

六、创建消息存储路径 (两台服务器操作一样)

#master
mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/master
mkdir /usr/local/rocketmq/store/master/commitlog
mkdir /usr/local/rocketmq/store/master/consumequeue
mkdir /usr/local/rocketmq/store/master/index

#slave
mkdir /usr/local/rocketmq/store/slave
mkdir /usr/local/rocketmq/store/slave/commitlog
mkdir /usr/local/rocketmq/store/slave/consumequeue
mkdir /usr/local/rocketmq/store/slave/index

 七、修改broker配置文件

rocketmq 双主双从集群搭建

虚拟机-----192.168.47.133:

注:修改两个broker-a.properties,broker-b-s.properties

1、修改2m-2s-sync/broker-a.properties

vim /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties

内容:

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker 名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer 地址,分号分割
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/store/master
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/master/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/master/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/master/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/master/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/master/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制 Master
#- SYNC_MASTER 同步双写 Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

2、修改2m-2s-sync/broker-b-s.properties

vim /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties

内容:

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker 名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer 地址,分号分割
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/store/slave
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/slave/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/slave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/slave/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/slave/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/slave/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

虚拟机-----192.168.47.134:

注:修改两个broker-b.properties,broker-a-s.properties

1、修改2m-2s-sync/broker-b.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker 名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer 地址,分号分割
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/store/master
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/master/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/master/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/master/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/master/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/master/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制 Master
#- SYNC_MASTER 同步双写 Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

2、修改2m-2s-sync/broker-a-s.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker 名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer 地址,分号分割
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/store/slave/
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/slave/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/slave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/slave/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/slave/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/slave/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、编辑runbroker.sh

vim /usr/local/rocketmq/bin/runbroker.sh

内容:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

2、编辑runserver.sh

vim /usr/local/rocketmq/bin/runserver.sh

内容: 

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

九、服务启动(两台服务器操作一样)

 1、启动nameserver

cd /usr/local/rocketmq/bin

nohup sh mqnamesrv &

rocketmq 双主双从集群搭建

2、启动broker集群

192.168.47.133:

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties &

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties &

192.168.47.134:

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties &

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties &

如图:两台虚拟机均用jps查看和查看nohup.out

rocketmq 双主双从集群搭建

rocketmq 双主双从集群搭建

注:搭建完成后,如果使用jps命令,可以在单个虚拟机上看到两个brokerstartup和一个namesrvstartup,但是过一会儿,再使用jps查看,可能某一个broker自动挂掉了。那么按照上面配置对照一下。

十、rocketmq-console

1、从github上拉取rocketmq-externals代码;

2、rocketmq-console修改application.properties:只需修改rocketmq.config.namesrvAddr

server.contextPath=
server.port=8080

### SSL setting
#server.ssl.key-store=classpath:rmqcngkeystore.jks
#server.ssl.key-store-password=rocketmq
#server.ssl.keyStoreType=PKCS12
#server.ssl.keyAlias=rmqcngkey

#spring.application.index=true
spring.application.name=rocketmq-console
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
logging.config=classpath:logback.xml
#if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876
rocketmq.config.namesrvAddr=192.168.47.133:9876;192.168.47.134:9876
#if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
rocketmq.config.isVIPChannel=
#rocketmq-console's data path:dashboard/monitor
rocketmq.config.dataPath=/tmp/rocketmq-console/data
#set it false if you don't want use dashboard.default true
rocketmq.config.enableDashBoardCollect=true
#set the message track trace topic if you don't want use the default one
rocketmq.config.msgTrackTopicName=
rocketmq.config.ticketKey=ticket

#Must create userInfo file: ${rocketmq.config.dataPath}/users.properties if the login is required
rocketmq.config.loginRequired=false

3、打包rocketmq-console

(1)注释掉pom.xml 中maven-checkstyle-plugin这个插件;

(2)mvn clean package -Dmaven.test.skip=true

ps:RocketMQ-Console Maven打包 报错: rocketmq-console-ng: Failed during checkstyle execution

4、部署rocketmq-console(我是放到192.168.47.133虚拟机中)

打的包是jar包,将jar包放到两台虚拟机任意虚拟机中,使用java -jar rocketmq-console-ng-1.0.1.jar命令启动;

5、访问http://192.168.47.133:8080/#/cluster

rocketmq 双主双从集群搭建

如果显示的少于4台,则搭建不成功;

 

相关标签: rocketmq