Skip to content

RocketMQ部署

1. rocketMQ单机部署(单master模式)

  • 使用命令unzip rocketmq-all-4.8.0-bin-release.zip解压安装包

  • 启动namesrv服务

shell
nohup sh bin/mqnamesrv > /app/dcits/logs/rocketmqlogs/mqnamesrv.log 2>&1 &
  • 启动broker服务
shell
nohup sh bin/mqbroker -n 192.168.164.179:9876 autoCreateTopicEnable=true &
nohup sh bin/mqbroker -n xxxx:9876 autoCreateTopicEnable=true -c conf/broker.conf & > broker.log
// 启动broker,xxxx为你的公有ip,或者是localhost也可以,路径根据自己的实际路径
  • 关闭namesrv服务
shell
sh bin/mqshutdown namesrv
  • 关闭broker服务
shell
sh bin/mqshutdown broker
  • 测试
shell
export NAMESRV_ADDR=192.168.164.179:9876
1、模拟producer产生消息
cd /opt/rocketmq/
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
2、模拟consumer消费消息
cd /opt/rocketmq/
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

2. rocketMQ集群部署(2m-2s-sync模式)

  • 系统部署架构,使用的模式是 2m-2s-sync,即2Master 、2Slave

  • Master 1:192.168.164.179
  • Slave 1: 192.168.164.180
  • Master 2:192.168.164.181
  • Slave 2: 192.168.164.184

namesrv 机器信息(复用3 台主机做 Name Server。正式生产环境考虑配置单独的 3 台主机做 Name Server)

  • Name Server 1:192.168.164.179
  • Name Server 2:192.168.164.180
  • Name Server 3:192.168.164.181

配置 rocketmq broker-a(在 Master 1 上操作)

properties
# vim conf/2m-2s-sync/broker-a.properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.164.179:9876;192.168.164.180:9876;192.168.164.181:9876

配置 rocketmq broker-a-s(在 Slave 1 上操作)

properties
# vim conf/2m-2s-sync/broker-a-s.properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.164.179:9876;192.168.164.180:9876;192.168.164.181:9876

配置 rocketmq broker-b(在 Master 2 上操作)

properties
# vim conf/2m-2s-sync/broker-b.properties
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.164.179:9876;192.168.164.180:9876;192.168.164.181:9876

配置 rocketmq broker-b-s(在 Slave 2 上操作)

properties
# vim conf/2m-2s-sync/broker-b-s.properties
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.164.179:9876;192.168.164.180:9876;192.168.164.181:9876

在 4 台主机上操作,更改默认日志路径和JVM大小

shell
# mkdir -p ~/logs/rocketmqlogs
# sed -i 's#${user.home}/logs/#/data/logs/#g' conf/logback_broker.xml
# sed -i 's#${user.home}/logs/#/data/logs/#g' conf/logback_namesrv.xml
# sed -i 's#${user.home}/logs/#/data/logs/#g' conf/logback_tools.xml

# vim bin/runbroker.sh
// 根据机器实际内存调整,这里演示的机器内存比较小,配置的值比较小
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
# vim bin/runserver.sh
// 根据机器实际内存调整,这里演示的机器内存比较小,配置的值比较小
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
# vim bin/tools.sh
// 根据机器实际内存调整,这里演示的机器内存比较小,配置的值比较小
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"

启动集群 启动 Name Server,在 3 台 Name Server 上操作

shell
nohup sh bin/mqnamesrv > ~/logs/rocketmqlogs/mqnamesrv.log 2>&1 &

启动 Master 1,在 Master 1 上操作

shell
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties > ~/logs/rocketmqlogs/broker-a.log 2>&1 &

启动 Slave 1,在 Slave 1 上操作

shell
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties > ~/logs/rocketmqlogs/broker-a-s.log 2>&1 &

启动 Master 2,在 Master 2 上操作

shell
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties > ~/logs/rocketmqlogs/broker-b.log 2>&1 &

启动 Slave 2,在 Slave 2 上操作

powershell
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties > ~/logs/rocketmqlogs/broker-b-s.log 2>&1 &

查看 NameServer(9876) 和 Broker(10909、10911、10912) 启动情况,在 4 台主机上操作

shell
# netstat -nltup|egrep "9876|10909|10911|10912"
tcp        0      0 0.0.0.0:9876            0.0.0.0:*               LISTEN      1560/java           
tcp        0      0 0.0.0.0:10909           0.0.0.0:*               LISTEN      1775/java           
tcp        0      0 0.0.0.0:10911           0.0.0.0:*               LISTEN      1775/java           
tcp        0      0 0.0.0.0:10912           0.0.0.0:*               LISTEN      1775/java

测试集群生产消费情况

shell
// 4 台主机上操作
# export NAMESRV_ADDR='192.168.164.179:9876;192.168.164.180:9876;192.168.164.181:9876'
// 在其中 3 台机器上操作,启动 3 个消费者
# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
// 在其中 1 台机器上操作,启动一个生产者,在 3 个消费者机器就可以看到消费信息
# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

3. rocketMQ集群部署(Dledger模式)

该案例演示双中心下,每个中心部署一个集群,每个集群3台服务器,每个服务器运行一个nameserver和一个broker。

每个nameserver独立运行,互补干扰,只要还有一个nameserver运行,集群就能正常提供服务。3个broker通过Raft算法选举出一个节点作为Leader,其余节点作为Follower。

三个服务器上的配置基本一致,这里以一个节点为例。

3.1 配置broker

登录服务器,执行命令:

cd /app/dcits/software/rocketmq-all-4.8.0-bin-release/conf/dledger

进入dledger配置目录下。

image-20230304105019249

在dledger目录下存在3个配置文件,broker-n0.conf、broker-n1.conf、broker-n2.conf

这里面的默认配置是rocketmq官方给出的在一台服务器下搭建集群使用的。由于我们是在三台机器上搭建,所以使用一个配置文件即可。这里统一使用broker-n0.conf作为broker配置文件。

执行 vim broker-n0.conf 命令,编辑配置文件,按 “i” 进入编辑模式。

找到文件最下面的配置,如下图所示,只需修改红框圈出来的配置即可

image-20230304105217418

namesrvAddr 修改为三台服务器的ip:9876,地址之间用英文分号隔开

storePathRootDir 修改为/app/dcits/software/rocketmq-all-4.8.0-bin-release/data/rmqstore/node00

storePathCommitLog 修改为/app/dcits/software/rocketmq-all-4.8.0-bin-release/data/rmqstore/node00/commitlog

dLegerPeers 修改为3个节点的id-ip:40911,如图中所示id为n0,n1,n2

dLegerSelfId为当前节点的id, dLegerPeers中的一个,该id在集群中必须唯一。

其他配置保持默认即可。

修改限制的消息大小为4M.

image-20230304105457967

其他2个broker节点的配置除dLegerSelfId外,均与上述配置保持一致。

3.2 启动

  • 启动三台服务器上namesrv服务
shell
nohup sh bin/mqnamesrv > /app/dcits/logs/rocketmqlogs/mqnamesrv.log 2>&1 &
  • 启动179上broker服务
shell
nohup sh bin/mqbroker -n 192.168.164.179:9876 autoCreateTopicEnable=true -c conf/dledger/broker-n0.conf & > broker.log
  • 启动180上broker服务
shell
nohup sh bin/mqbroker -n 192.168.164.180:9876 autoCreateTopicEnable=true -c conf/dledger/broker-n0.conf & > broker.log
  • 启动181上broker服务
shell
nohup sh bin/mqbroker -n 192.168.164.181:9876 autoCreateTopicEnable=true -c conf/dledger/broker-n0.conf & > broker.log

查看是否启动成功

jps -lm

image-20230304105840394

3.3 测试

关闭作为主节点的broker(BID为0代表主节点)

sh bin/mqshutdown broker

image-20230304110046720

查看其它服务器是否成为主节点

sh bin/mqadmin clusterList -n 127.0.0.1:9876

image-20230304141401950