用一主双从,自动切换主从的方式实现RocketMQ部署

745 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

前言

在此之前,我介绍了rocketmq的单master模式部署方式,此模式仅用于开发环境

生产环境需搭建高可用的集群部署方式,本文即介绍具体如何部署

对于开发环境下的部署方式可查看我之前的分享

# 使用单master模式实现RocketMQ部署

准备工作

环境:centOS7.6

安装包:rocketmq-all-4.9.3-bin-release.zip

JDK1.8

maven环境

Ps:rocketmq使用官方最新版本,性能比4.8.x更高。

下载安装包

官网下载地址

image.png

部署架构


IP地址brokerRole部署应用
172.26.0.1broker-a(SYNC-MASTER)nameserver,rocketmq
172.26.0.2broker-a-s(SLAVE)nameserver,rocketmq
172.26.0.3broker-a-s(SLAVE)rocketmq

说明:172.26.0.1上面部署为master,另外两台机器部署为slave,当172.26.0.1的broker宕机的时候,另外两台机器会自动选举一台作为master,实现高可用。

 解压


  • 使用MobaXterm工具连接linux服务器,上传rocketmq-all-4.9.1-bin-release.zip文件至/data/rocketmq/pkgs目录下

  • 解压zip文件并指定解压目录,命令:

$ unzip -d  /data/rocketmq   rocketmq-all-4.9.1-bin-release.zip
  • 修改解压后的文件夹名称 命令:
$ mv rocketmq-all-4.9.1-bin-release rocketmq4.9.1

 修改配置文件


broker启动时,会占用大量内存,修改配置文件减少内存消耗,修改/data/rocketmq/rocketmq4.9.1/bin/runbroker.sh,命令:

$ vi runbroker.sh

image.png

同理修改nameserver启动,修改/data/rocketmq/rocketmq4.9.1/bin/runbroker.sh,命令:

$ vi runserver.sh

image.png

修改三台机器的broker配置文件


`brokerClusterName=DefaultCluster`

`brokerName=broker-a ``#三台机器配置一样`

`brokerId=0 ``#172.26.0.1配置为0,172.26.0.1配置为1,172.26.0.3配置为2`

`deleteWhen=04`

`fileReservedTime=48`

`brokerRole=SLAVE ``#172.26.0.1配置为SYNC_MASTER,172.26.0.1配置为SLAVE,172.26.0.3配置为SLAVE`

`flushDiskType=ASYNC_FLUSH`

 

`brokerIP1=172.26.0.2 ``#配置为当前机器的IP即可`

`brokerIP2=172.26.0.2 ``#配置为当前机器的IP即可`

`namesrvAddr=172.26.0.1:9876;172.26.0.2:9876 ``#三台机器配置一样`

`storePathRootDir=``/data/rocketmq/store`     `#手动创建该目录`

`storePathCommitLog=``/data/rocketmq/store/commitlog`       `#手动创建该目录`

 

`#自动切换主从配置`

`enableDLegerCommitLog = ``true`

`dLegerGroup = broker-a      ``#集群名字`

`dLegerSelfId = n0       ``#172.26.0.1配置为n0,172.26.0.1配置为n1,172.26.0.3配置为n2`

`dLegerPeers = n0-172.26.0.1:40911;n1-172.26.0.2:40911;n2-172.26.0.3:40911       ``#三台机器配置一样`

 启动


  • 后台启动nameserver
 # 172.26.0.1和172.26.0.2两台机器操作一样
$ nohup /data/rocketmq/rocketmq4.9.1/mqnamesrv & 
  • 启动broker命令:
#启动broker的时候指定上一步配置好的broker文件
$ nohup /data/rocketmq/rocketmq4.9.1/bin/mqbroker - c /data/rocketmq/rocketmq4.9.1/conf/broker.conf &

 测试主从切换


三台机器都启动好之后,访问rocketmq-console(rocketmq-console部署详见# 使用单master模式实现RocketMQ部署

image.png

停止172.26.0.1上的broker(master)查看效果发现rocketmq-console已经实现了自动切换主从

image.png

总结

至此已经实现了rocketmq的一主双从配置,并实现了当master宕机之后自动切换master的配置。