持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
前言
在此之前,我介绍了rocketmq的单master模式部署方式,此模式仅用于开发环境
生产环境需搭建高可用的集群部署方式,本文即介绍具体如何部署
对于开发环境下的部署方式可查看我之前的分享
准备工作
环境:centOS7.6
安装包:rocketmq-all-4.9.3-bin-release.zip
JDK1.8
maven环境
Ps:rocketmq使用官方最新版本,性能比4.8.x更高。
下载安装包
部署架构
| IP地址 | brokerRole | 部署应用 |
|---|---|---|
| 172.26.0.1 | broker-a(SYNC-MASTER) | nameserver,rocketmq |
| 172.26.0.2 | broker-a-s(SLAVE) | nameserver,rocketmq |
| 172.26.0.3 | broker-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
同理修改nameserver启动,修改/data/rocketmq/rocketmq4.9.1/bin/runbroker.sh,命令:
$ vi runserver.sh
修改三台机器的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部署)
停止172.26.0.1上的broker(master)查看效果发现rocketmq-console已经实现了自动切换主从
总结
至此已经实现了rocketmq的一主双从配置,并实现了当master宕机之后自动切换master的配置。