4.5版本之前rocketmq的master节点挂掉之后只能手动切换master,4,5版本之后有了dledger模式,支持master挂掉之后选举出新的master
一.准备工作
1.准备3台centos7服务器,ip 192.168.3.110 192.168.3.111, 192.168.3.112(3台服务器都要安装上jdk1.8且配置到环境变量)
2.下载rocketmq二进制文件,这里以4.8.0演示,上传到三台服务器上
二. 修改配置
1.先修改broker的内存配置,原文件配置内存是8g,修改为512m,三台服务器都要修改
vim bin/runbroker.sh
2.修改broker的配置文件,在conf/dledger文件夹下面
在192.168.3.110节点 修改 broker-n0.conf
在192.168.3.111节点 修改 broker-n1.conf 注意是broker-n1.conf 文件,不是broker-n0.conf
在192.168.3.112节点 修改 broker-n2.conf 注意是broker-n2.conf 文件,不是broker-n0.conf
分别在三个节点启动 namesrv和broker,编写一键启动脚本
vim start-rocketmq.sh 写入下面内容,ROCKETMQ_DIR改成自己的路径
ROCKETMQ_DIR="/home/rocketmq4.8.0"
nohup sh ${ROCKETMQ_DIR}/bin/mqnamesrv > nohupNamesrv &
nohup sh ${ROCKETMQ_DIR}/bin/mqbroker > nohupBroker -c ${ROCKETMQ_DIR}/conf/dledger/broker-n0.conf &
echo "rocketmq启动成功^__^"
停止脚本
vim stop-rocketmq.sh 写入下面内容
ROCKETMQ_DIR="/home/rocketmq4.8.0"
nohup sh ${ROCKETMQ_DIR}/bin/mqshutdown broker
nohup sh ${ROCKETMQ_DIR}/bin/mqshutdown namesrv
echo "rocketmq停止成功^__^"
分别在三台服务器上执行start-rocketmq.sh脚本启动namesrv和broker,执行完可以用 jps命令查看是否启动成功
然后在任意一台服务器上执行该命令查看集群情况,BID为0代表是master
sh bin/mqadmin clusterList -n 127.0.0.1:9876
这时候110服务器是master,执行stop-rocketmq.sh脚本把110服务器上的broker停掉,然后再111或者112上面执行查看集群的命令
sh bin/mqadmin clusterList -n 127.0.0.1:9876
此时,112已经被选举成为了master,到此dledger模式集群搭建完成
springboot用的时候配置文件中添加多个namesrv地址中间用;隔开,如下
rocketmq:
name-server: 192.168.3.110:9876;192.168.3.111:9876;192.168.3.112:9876
producer:
group: my-group
retry-times-when-send-failed: 2