rocketmq 双主双从集群搭建

附:

1、rocketmq(github)

2、rocketmq-externals(github)

一、服务器环境

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

ps: jdk使用oracke jdk,用open jdk可能会出现启动不成功情况。

#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(两台服务器操作一样)

ps:不配置hosts也可以,不过配置文件当中的rocketmq-nameserver1,rocketmq-nameserver2就需要用ip代替。(用ip的话,第二步配置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下载

ps:若 http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.5.2/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

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

mv rocketmq-all-4.5.2-bin-release rocketmq #重命名,否则下面创建文件夹,会提示/usr/local/rocketmq这个文件夹找不到

#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配置文件

虚拟机-----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 &

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

注:搭建完成后,如果使用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

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

发布了186 篇原创文章 · 获赞 146 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/qq_37495786/article/details/102616093