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。

  1. 首先在这两台机器上分别启动NameServer,这样我们就得到了一个无单点NameServer服务,服务地址分别为:192.168.100.131:9876,192.168.100.131:9876
  2. 然后启动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配置参数介绍

  1. namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876。NameServer可以是多个,用分号隔开。
  2. brokerClusterName=DefaultCluster 。 Cluster集群的名称,如果集群数量比较多,可以细分为多个Cluster,每个Cluster集群供某一个业务群使用。
  3. brokerName=broker-a Broker的名称,Master和Slave通过使用相同的Broker名称表明相互关系,以说明Slave跟Master的关联关系。
  4. brokerId=0 一个Master Broker可以有多个Slave,0表示Master,大于0表示不同Slave的ID。
  5. fileReservedTime=48 在磁盘保存的时长,单位是小时,自动删除超时的消息。
  6. deleteWhen=04 表明在几点做消息删除动作,默认04表示凌晨4点。
  7. brokerRole=SLAVE brokerRole有三种:SYNC_MASTER、ASYNC_MASTER、SLAVE

参考《RocketMQ实战与原理解析》

以上是关于RocketMQ实战-搭建高可用的分布式消息队列集群的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你搭建高可用 RocketMQ 集群!

公司nginx keepalived tomcat cxf 搭建高可用负载均衡实战系列1- keepalived安装配置

公司nginx keepalived tomcat cxf 搭建高可用负载均衡实战系列1- keepalived的安装配置

搭建高可用mongodb集群—— 深入副本集内部机制

搭建高可用mongodb集群(转)

搭建高可用mongodb集群—— 副本集