rocketmq5以后,加入了主从自动切换的功能:
官网
https://rocketmq.apache.org/zh/docs/deploymentOperations/03autofailover
准备工作
1)关闭将要升级的nameserver、master、slave
2)复制master的store文件到其他两台机器,确保broker启动前数据的一致,不然主备无法切换
nameserver
三个配置相同,controllerDLegerSelfId 不相同。
嵌入 NameServer 部署时只需要在 NameServer 的配置文件中设置 enableControllerInNamesrv=true,并填上 Controller 的配置即可
在conf文件夹创建:
vim namesrv.conf
enableControllerInNamesrv = true
controllerDLegerGroup = broker-a-group
controllerDLegerPeers = n0-dev1.rocketmq.leve.com:9877;n1-dev1.rocketmq.leve.com:9877;n2-dev1.rocketmq.leve.com:9877
controllerDLegerSelfId = n0
controllerStorePath = /opt/rocketmq-store/dledgerController
enableElectUncleanMaster = false
notifyBrokerRoleChanged = true
参数解释:
- enableControllerInNamesrv:Nameserver 中是否开启 controller,默认 false。
- controllerDLegerGroup:DLedger Raft Group 的名字,同一个 DLedger Raft Group 保持一致即可。
- controllerDLegerPeers:DLedger Group