官网地址:https://rocketmq.apache.org/zh/docs/4.x/deployment/01deploy
参考文档:
https://blog.csdn.net/wangqingjia/article/details/125408142
https://blog.csdn.net/lvxiucai/article/details/104907614
配置说明
使用俩台机子,部署同步刷新集群,slaver和master错开部署,可以防止一台服务器宕机后,集群依然可用
ip | broker |
---|---|
192.168.20.202 | broker-a |
192.168.20.202 | broker-b-s |
192.168.20.203 | broker-b |
192.168.20.203 | broker-a-s |
修改内存
修改bin目录下runserver.sh和runbroker.sh的内存大小,网上有,就不做说明了
配置文件
在conf/2m-2s-sync文件夹中配置
在192.168.20.202中配置broker-a和broker-b-s
在192.168.20.203中配置broker-b和broker-a-s
1、broker-a
#下面是自带的,可以不用动
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
#这个是broker启动端口,一个机子启动多个broker一定要配置下
listenPort=10911
namesrvAddr=192.168.20.202:9876;192.168.20.203:9876
#这个是文件位置,同一机子上启动多个broker一定要配置
storePathRootDir=/root/rocket/store-a
storePathCommitLog=/root/rocket/store-a/commitlog
storePathConsumeQueue=/root/rocket/store-a/consumequeue
storePathIndex=/root/rocket/store-a/index
storeCheckPoint=/root/rocket/store-a/checkpoint
abortFile=/root/rocket/store-a/abort
2、broker-b-s
#下面是自带的,可以不用动
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
#这个是broker启动端口,一个机子启动多个broker一定要配置下
listenPort=10918
namesrvAddr=192.168.20.202:9876;192.168.20.203:9876
#这个是文件位置,同一机子上启动多个broker一定要配置
storePathRootDir=/root/rocket/store-b-s
storePathCommitLog=/root/rocket/store-b-s/commitlog
storePathConsumeQueue=/root/rocket/store-b-s/consumequeue
storePathIndex=/root/rocket/store-b-s/index
storeCheckPoint=/root/rocket/store-b-s/checkpoint
abortFile=/root/rocket/store-b-s/abort
3、broker-b
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
namesrvAddr=192.168.20.202:9876;192.168.20.203:9876
storePathRootDir=/root/rocket/store-b
storePathCommitLog=/root/rocket/store-b/commitlog
storePathConsumeQueue=/root/rocket/store-b/consumequeue
storePathIndex=/root/rocket/store-b/index
storeCheckPoint=/root/rocket/store-b/checkpoint
abortFile=/root/rocket/store-b/abort
4、broker-a-s
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=10918
namesrvAddr=192.168.20.202:9876;192.168.20.203:9876
storePathRootDir=/root/rocket/store-a-s
storePathCommitLog=/root/rocket/store-a-s/commitlog
storePathConsumeQueue=/root/rocket/store-a-s/consumequeue
storePathIndex=/root/rocket/store-a-s/index
storeCheckPoint=/root/rocket/store-a-s/checkpoint
abortFile=/root/rocket/store-a-s/abort
启动
1、启动nameserver
分别在俩台服务器上的rocket目录下执行下列命令
nohup sh bin/mqnamesrv &
通过jps命令查看到NamesrvStartup即启动成功,启动成功会占用9876端口
2、启动broker
1、192.168.20.202启动主服务(broker-a)
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties &
2、192.168.20.203启动主服务(broker-b)
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties &
3、192.168.20.202启动从服务(broker-b-s)
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties &
4、192.168.20.203动从服务(broker-a-s)
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties &
通过jps命令查看到BrokerStartup即启动成功
配置注意事项(一个服务器启动多个broker才会出现问题)
1、启动主服务没有问题,启动从服务器报rocketmq已存在错误
这种就是文件路径一致导致的,只需要在配置文件中将以下配置文件路径设置成不一样即可
storePathRootDir=/root/rocket/store-a-s
storePathCommitLog=/root/rocket/store-a-s/commitlog
storePathConsumeQueue=/root/rocket/store-a-s/consumequeue
storePathIndex=/root/rocket/store-a-s/index
storeCheckPoint=/root/rocket/store-a-s/checkpoint
abortFile=/root/rocket/store-a-s/abort
2、启动从服务器报端口占用问题
将listenPort配置尽量拉开,我发现配置listenPort后会服务会在占用listenPort端口后,自动占用另俩个端口,一个是listenPort+1,一个是listenPort-2。(具体作用参考:https://blog.csdn.net/yucaifu1989/article/details/127983899)
举一个列子,broker-a的listenPort配置10911,broker-b-s的listenPort配置10912,broker-a占用三个端口为10909、10911、10912,broker-b-s占用三个端口为10910、10912、10913,那么俩个服务都会争10912,就会报端口占用,服务启动不了。
所以我上面配置的时候listenPort一个配置10911,一个配置了10918,所以端口占用如下