美文网首页学习
RocketMq集群搭建(双主双从同步双写)并安装可视化平台Ro

RocketMq集群搭建(双主双从同步双写)并安装可视化平台Ro

作者: Rami | 来源:发表于2023-02-15 18:11 被阅读0次

一、环境准备

linux环境、64位 JDK 1.8+、RocketMQ环境包
官网:https://rocketmq.apache.org/zh/

二、服务器环境及规划

ip                                                角色                                 架构模式
10.0.0.22           nameserver1:9876、broker-master1:10911、broker-slave2:11011      Master1、Slave2
10.0.0.23           nameserver2:9876、broker-master2:10911、broker-slave1:11011      Master2、Slave1

2.1 开放端口

每个服务器需开放七个端口
9876 #namesrv
10911、10909、10912 #broker主节点
11011、11009、11012 #broker从节点
端口规则说明:
namesrv默认端口:9876
假设broker配置的 ListenPort 端口:10911
则vip 通道端口为:ListenPort - 2 = 10909
则HA 通道端口为: ListenPort + 1 = 10912

三、开始部署

3.1 做hosts解析(全部机器)

vim /etc/hosts
10.0.0.22   rocketmq-1
10.0.0.23   rocketmq-2

3.2 下载包(这里选择的4.9.3版本)

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

3.3 解压软件包并配置环境变量(全部机器)

unzip rocketmq-all-4.9.3-bin-release.zip  -d /usr/local/rocketmq/

vim /etc/profile
ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-4.9.3
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH

source  /etc/profile

3.4 修改配置

进入/usr/local/rocketmq/rocketmq-4.9.3/conf目录查看

2m-2s-async  目录为双master双slave异步复制配置目录
2m-2s-sync    目录为双master双slave同步双写配置目录
2m-noslave    目录为多master配置目录

这里我们只需要配置2m-2s-sync这个目录即可

10.0.0.22 服务器:broker配置

master1

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

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=10.0.0.22:9876;10.0.0.23: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/master
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/master/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/master/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/master/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/master/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/master/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=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

slave2

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

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

10.0.0.23 服务器:broker配置

master2

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

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=10.0.0.22:9876;10.0.0.23: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/master
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/master/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/master/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/master/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/master/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/master/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=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

slave1

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

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

3.5 修改启动脚本(所有服务器)

原因:我启动的虚拟机的内存设置的是4G,而mq默认的JVM最小的堆内容是8G,太大了,不修改将无法启动。

vim /usr/local/rocketmq/rocketmq-4.9.3/bin/runserver.sh
修改如下:

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

vim /usr/local/rocketmq/rocketmq-4.9.3/bin/runbroker.sh
修改如下:

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

3.6 启动服务

创建日志目录

mkdir /usr/local/rocketmq/rocketmq-4.9.3/logs

启动nameserver (全部机器)

cd  /usr/local/rocketmq/rocketmq-4.9.3/bin/ 
nohup  sh mqnamesrv  > /usr/local/rocketmq/rocketmq-4.9.3/logs/mqnamesrv.log  2>&1 &

tail -f /usr/local/rocketmq/rocketmq-4.9.3/logs/mqnamesrv.log
下面表示启动成功


image.png

启动broker

10.0.0.22机器

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties  >  /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-a.log &
tail  -f /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-a.log

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties  >  /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-b-s.log &
tail  -f /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-b-s.log

10.0.0.23机器

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties  >  /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-b.log &
tail  -f /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-b.log

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties  >  /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-a-s.log &
tail -f /usr/local/rocketmq/rocketmq-4.9.3/logs/broker-a-s.log

启动完成,通过jps查看java进程

[root@rocketmq-1 rocketmq-4.9.3]# jps
23635 BrokerStartup
23733 BrokerStartup
23038 NamesrvStartup
23823 Jps

关闭命令

停止服务的时候需要注意,要先停止broker,其次停止nameserver。

关闭broker服务 :  sh /usr/local/rocketmq/rocketmq-4.9.3/bin/mqshutdown broker
关闭namesrv服务:  sh /usr/local/rocketmq/rocketmq-4.9.3/bin/mqshutdown namesrv

四、安装可视化平台RocketMq-Dashboard

参考官方文档:https://rocketmq.apache.org/zh/docs/4.x/deployment/03Dashboard

4.1 安装docker,拉取 rocketmq-dashboard 镜像

docker pull apacherocketmq/rocketmq-dashboard:latest

4.2 docker 容器中运行rocketmq-dashboard

docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=10.0.0.22:9876;10.0.0.23:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
namesrv.addr:port 替换为 rocketmq 中配置的 nameserver 地址:端口号

默认端口配置下,需开放端口号:控制台:8080;namesrv:9876;broker:10909、10911

相关文章

网友评论

    本文标题:RocketMq集群搭建(双主双从同步双写)并安装可视化平台Ro

    本文链接:https://www.haomeiwen.com/subject/bstukdtx.html