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

RocketMQ集群搭建

程序员文章站 2022-07-15 08:00:52
...

1.今天我们来实操下RocketMQ的集群搭建,目标如下:

nameserver集群部署
2台机器
namesverA在A(10.3.21.14 )机器上
namesverA在B(10.3.21.15 )机器上
broker集群部署
有A,B两组brocker
A组包含2个节点:Brocker-Master-A,Brocker-Slave-A
B组包含2个节点:Brocker-Master-B,Brocker-Slave-B
Brocker-Master-A,Brocker-Slave-B在A(10.3.21.14 )机器上
Brocker-Master-B,Brocker-Slave-A在B(10.3.21.15 )机器上

2.具体步骤:

前提条件,java8已经安装好,且环境变量已经配置好。

1.准备2台机器
机器A:10.3.21.14 机器B:10.3.21.15
A与B之间要相互ping通,我是用VirtualBox搭建的两个centos7系统,网络使用桥接网卡,具体网络配置见我另一篇博客:https://blog.csdn.net/LuoZheng4698729/article/details/102987680

2.机器都下载好rocketmq
wget http://apache.mirrors.tds.net/rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip
RocketMQ集群搭建
3.修改host信息, A与B机器配置一致
vim /etc/hosts
RocketMQ集群搭建
1.两个nameserver分布落在14和15机器
2.brocker配置两组
A组:主brockerA从brockerA 分别落在14和15机器上。
B组:主brockerB从brockerB 分别落在15和14机器上。

机器A和机器B同样配置,完成后重启网卡
systemctl restart network

4.关闭防火墙
可以参见我的另一个博客【关闭防火墙】https://blog.csdn.net/LuoZheng4698729/article/details/102995427

5.配置环境变量(A,B机器共同配置)

vim /etc/profile
========================================
#你的rocketmq安装目录
ROCKETMQ_HOME=/usr/local/app/rocketmq/
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
========================================
##环境变量生效
source /etc/profile

6.创建brocker存储消息持久化的路径(A,B机共同配置)

[aaa@qq.com rocketmq]# mkdir /usr/local/app/rocketmq/store-A/
[aaa@qq.com rocketmq]# mkdir /usr/local/app/rocketmq/store-A/commitlog
[aaa@qq.com rocketmq]# mkdir /usr/local/app/rocketmq/store-A/consumequeue
[aaa@qq.com rocketmq]# mkdir /usr/local/app/rocketmq/store-A/index

[aaa@qq.com rocketmq]# mkdir /usr/local/app/rocketmq/store-B/
[aaa@qq.com rocketmq]# mkdir /usr/local/app/rocketmq/store-B/commitlog
[aaa@qq.com rocketmq]# mkdir /usr/local/app/rocketmq/store-B/consumequeue
[aaa@qq.com rocketmq]# mkdir /usr/local/app/rocketmq/store-B/index

7.brocker配置文件
机器A上
创建A组brocker的master配置文件:
vim /usr/local/app/rocketmq/broker-master-groupA.properties

#集群名字
brokerClusterName=order-cluster
#broker名字
brokerName=broker-a
#0代表Master, >0 代表Slave
brokerId=0
#nameServer地址
namesrvAddr=rocketmq-nameserverA:9876;rocketmq-nameserverB:9876
#发消息时,自动创建服务器不存在的topic,默认创建队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Brocker对外服务的监听端口
listenPort=10911
#删除文件的时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
filereservedTime=120
#commitLog每个文件的大小 默认1G
mapedFileSizeConsumeQueue=300000
#检查物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/app/rocketmq/store-A
#commitLog 存储路径
storePathCommitLog=/usr/local/app/rocketmq/store-A/commitLog
#消费队列存储路径
storePathConsumeQueue=/usr/local/app/rocketmq/store-A/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/app/rocketmq/store-A/index
#限制的消息大小
maxMessageSize=65536
#SYNC_MASTER:同步主从复制,ASYNC_MASTER:异步主从复制
brokerRole=SYNC_MASTER
#刷盘方式
flushDiskType=SYNC_FLUSH

创建B组brocker的slave配置文件:
vim /usr/local/app/rocketmq/broker-slave-groupB.properties

#集群名字
brokerClusterName=order-cluster
#broker名字
brokerName=broker-b
#0代表Master, >0 代表Slave
brokerId=1
#nameServer地址
namesrvAddr=rocketmq-nameserverA:9876;rocketmq-nameserverB:9876
#发消息时,自动创建服务器不存在的topic,默认创建队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Brocker对外服务的监听端口
listenPort=10100
#删除文件的时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
filereservedTime=120
#commitLog每个文件的大小 默认1G
mapedFileSizeConsumeQueue=300000
#检查物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/app/rocketmq/store-B
#commitLog 存储路径
storePathCommitLog=/usr/local/app/rocketmq/store-B/commitLog
#消费队列存储路径
storePathConsumeQueue=/usr/local/app/rocketmq/store-B/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/app/rocketmq/store-B/index
#限制的消息大小
maxMessageSize=65536
#SYNC_MASTER:同步主从复制,ASYNC_MASTER:异步主从复制
brokerRole=SLAVE
#刷盘方式
flushDiskType=ASYNC_FLUSH

机器B上
创建A组brocker的slave配置文件:
vim /usr/local/app/rocketmq/broker-slave-groupA.properties

#集群名字
brokerClusterName=order-cluster
#broker名字
brokerName=broker-a
#0代表Master, >0 代表Slave
brokerId=1
#nameServer地址
namesrvAddr=rocketmq-nameserverA:9876;rocketmq-nameserverB:9876
#发消息时,自动创建服务器不存在的topic,默认创建队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Brocker对外服务的监听端口
listenPort=10100
#删除文件的时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
filereservedTime=120
#commitLog每个文件的大小 默认1G
mapedFileSizeConsumeQueue=300000
#检查物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/app/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/usr/local/app/rocketmq/store/commitLog
#消费队列存储路径
storePathConsumeQueue=/usr/local/app/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/app/rocketmq/store/index
#限制的消息大小
maxMessageSize=65536
#SYNC_MASTER:同步主从复制,ASYNC_MASTER:异步主从复制
brokerRole=SLAVE
#刷盘方式
flushDiskType=ASYNC_FLUSH

创建B组brocker的master配置文件:
vim /usr/local/app/rocketmq/broker-master-groupB.properties

#集群名字
brokerClusterName=order-cluster
#broker名字
brokerName=broker-b
#0代表Master, >0 代表Slave
brokerId=0
#nameServer地址
namesrvAddr=rocketmq-nameserverA:9876;rocketmq-nameserverB:9876
#发消息时,自动创建服务器不存在的topic,默认创建队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Brocker对外服务的监听端口
listenPort=10911
#删除文件的时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
filereservedTime=120
#commitLog每个文件的大小 默认1G
mapedFileSizeConsumeQueue=300000
#检查物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/app/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/usr/local/app/rocketmq/store/commitLog
#消费队列存储路径
storePathConsumeQueue=/usr/local/app/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/app/rocketmq/store/index
#限制的消息大小
maxMessageSize=65536
#SYNC_MASTER:同步主从复制,ASYNC_MASTER:异步主从复制
brokerRole=SYNC_MASTER
#刷盘方式
flushDiskType=SYNC_FLUSH

7.修改启动脚本文件(把内存相关调小)
vim /usr/local/app/rocketmq/bin/runserver.sh

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

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

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
...
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=256m"

8.启动nameserver集群
机器A,B

##启动nameserver
[aaa@qq.com bin]#sh /usr/local/app/rocketmq/binmqnamesrv &
###查看 启动成功
[aaa@qq.com bin]# jps
5312 NamesrvStartup
5330 Jps

9.启动brocker集群
机器A
1.启动A组的broker master

sh mqbroker -c /usr/local/app/rocketmq/broker-master-groupA.properties &

###查看端口看启动成功没有 LISTEN监听成功
[aaa@qq.com bin]# netstat -anp | grep 10911
tcp6       0      0 :::10911                :::*                    LISTEN      5346/java

2.启动B组的broker slave

sh mqbroker -c /usr/local/app/rocketmq/broker-slave-groupB.properties &

###查看端口看启动成功没有 LISTEN监听成功
[aaa@qq.com bin]# netstat -anp |grep 10100
tcp6       0      0 :::10100                :::*                    LISTEN      6098/java

机器B
1.启动A组的broker slave

sh mqbroker -c /usr/local/app/rocketmq/broker-slave-groupA.properties &
###查看启动成功
[aaa@qq.com-nameserverB bin]# netstat -anp | grep 10100
tcp6       0      0 :::10100                :::*                    LISTEN      10533/java

2.启动B组的brocker master

##启动
sh mqbroker -c /usr/local/app/rocketmq/broker-master-groupB.properties &
##查看
[aaa@qq.com-nameserverB bin]# jps
10801 Jps
10533 BrokerStartup
10331 NamesrvStartup
10734 BrokerStartup

10.查看启动日志

##查看nameserver的启动日志
tail -100f ~/logs/rocketmqlogs/namesrv.log
##查看brocker的启动日志
tail -100f ~/logs/rocketmqlogs/broker.log

老生常谈:深圳有爱好音乐的会打鼓(吉他,键盘,贝斯等)的程序员和其它职业可以一起交流加入我们乐队一起嗨。我的QQ:657455400 表演视频实例https://v.qq.com/x/page/f0517awx0x4.html

相关标签: rocketmq集群