RocketMQ实战-搭建高可用的分布式消息队列集群
Posted 肖凯瀚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RocketMQ实战-搭建高可用的分布式消息队列集群相关的知识,希望对你有一定的参考价值。
文章目录
RocketMQ各部分角色
NameServer,Broker,Producer,Consumer
类比邮政系统,Producer是发信人;Consumer是收信人;Broker是负责暂存、传输信件的邮局;NameServer是负责协调各邮局的管理机构。
启动RocketMQ的顺序是先启动NameServer,再启动Broker。
为了消除单点故障,增加可靠性或增大吞吐量,可以在多台机器上部署多个NameServer和Broker,为每个Broker部署一个或多个Slaver。
RocketMQ多集群配置和部署实战
使用两台物理机,搭建双主、双从,无单点故障的高可用RocketMQ集群。假设两台物理机的IP分别为192.168.100.131,192.168.100.131。两台物理机已安装RocketMQ。
- 首先在这两台机器上分别启动NameServer,这样我们就得到了一个无单点NameServer服务,服务地址分别为:192.168.100.131:9876,192.168.100.131:9876。
- 然后启动Broker, 每台机器上都分别一个Master角色和一个Slaver角色的Broker(每台机器把RocketMQ复制一份,一个启动为Master,一个启动为Slaver)。 集群使用交叉部署。
192.168.100.131机器上的Master Broker配置文件:
namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-a
192.168.100.131机器上的Slaver Broker配置文件:
namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=11011
storePathRootDir=/home/rocketmq/store-b
192.168.100.132机器上的Master Broker配置文件:
namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-b
192.168.100.132机器上的Slaver Broker配置文件:
namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocketmq/store-a
然后分别使用如下命令启动四个Broker(根据具体路径):
nohup sh ./bin/mqbroker -c config_file &
启动完毕之后,变搭建完成一个高可用的RocketMQ集群。
集群查看方式
命令行:sh mqadmin clusterList -n 127.0.0.1:9876
页面查看: 可以在任一台机器上启动rocketmq-console,例如在机器192.168.100.131启动,则可通过访问192.168.100.131:8080,在浏览器中查看集群状态。
Broker配置参数介绍
- namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876。NameServer可以是多个,用分号隔开。
- brokerClusterName=DefaultCluster 。 Cluster集群的名称,如果集群数量比较多,可以细分为多个Cluster,每个Cluster集群供某一个业务群使用。
- brokerName=broker-a Broker的名称,Master和Slave通过使用相同的Broker名称表明相互关系,以说明Slave跟Master的关联关系。
- brokerId=0 一个Master Broker可以有多个Slave,0表示Master,大于0表示不同Slave的ID。
- fileReservedTime=48 在磁盘保存的时长,单位是小时,自动删除超时的消息。
- deleteWhen=04 表明在几点做消息删除动作,默认04表示凌晨4点。
- brokerRole=SLAVE brokerRole有三种:SYNC_MASTER、ASYNC_MASTER、SLAVE
参考《RocketMQ实战与原理解析》
以上是关于RocketMQ实战-搭建高可用的分布式消息队列集群的主要内容,如果未能解决你的问题,请参考以下文章
公司nginx keepalived tomcat cxf 搭建高可用负载均衡实战系列1- keepalived安装配置
公司nginx keepalived tomcat cxf 搭建高可用负载均衡实战系列1- keepalived的安装配置