安装部署RocketMQ集群(双主双从)

  |   0 评论   |   0 浏览

前面,我们介绍了如果快速安装单个RocketMQ。快速安装意味着这只是在测试环境下的小打小闹,我们在单机安装的基础上,尝试安装RocketMQ集群。本次安装为了方便,使用的是已经编译好的二进制包进行安装部署。


1. RocketMQ的集群介绍

RocketMQ集群解决了单机版RocketMQ所存在的单点故障问题,并且还可以对RocketMQ性能进行横向的拓展。
下图是官网上的架构图,可以看到RocketMQ分为四个部分:

  1. 生产者集群 (只能往broker的master节点写入消息)
  2. 消费者集群 (能消费broker中的master和slave节点的消息)
  3. NameServer集群 (没有主备之分)
  4. Broker集群 (区分master和slave)

RocketMQ架构

其中,根据RocketMQ Broker的集群方式的不同,大概可以分为三种:

  • 多Master
  • 多Master多Slave异步复制
  • 多Master多Slave同步复制

在配置文件所在目录 conf 中,我们可以看到有三个文件夹:2m-noslave、2m-2s-async、2m-2s-sync。这三个目录刚好对应上面提到的三种集群方式,里面包含了官方给的配置示例,我们待会会在这个基础上修改。

同步复制和异步复制的解析:
异步复制和同步复制的区别在于,同步复制只有在master和slave都确认之后才向应用返回成功,而异步复制只需要master确认即可。所以,同步复制的效率比异步复制会低,据说低10%左右。当然,异步复制带来高性能的同时也会有数据丢失的风险。

2. 环境准备

下面我们将要部署双master双slave同步复制的RocketMQ集群,这里需要准备两个虚拟机。

主机IP地址角色模式
rockermq01192.168.113.11nameserver、broker-a-master、broker-b-slave主备
rockermq02192.168.113.12nameserver、broker-a-slave、broker-b-master主备

3. 启动多个Nameserv和Broker

3.1 下载安装RocketMQ

#下载二进制包
wget  http://mirror.bit.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-bin-release.zip

#解压到 /usr/local目录下,并创建软连接
unzip rocketmq-all-4.4.0-bin-release.zip
mv rocketmq-all-4.4.0-bin-release /usr/local/
ln -s /usr/local/rocketmq-all-4.4.0-bin-release  /usr/local/rocketmq

就这样,rockermq就安装好了,接下来我们要修改配置文件。

3.2 修改Broker配置文件

由于默认的数据和日志存储的位置是当前用户的家目录,我们还需要修改到 /data/rocketmq目录下:

#新建相关目录
mkdir -p /data/rocketmq/{store-a,store-b}

日志目录的配置文件在 conf的几个xml文件里面:

cd /usr/local/rocketmq/conf
sed -i "s/\${user.home}/\/data\/rocketmq/g"  logback_broker.xml
sed -i "s/\${user.home}/\/data\/rocketmq/g"  logback_namesrv.xml
sed -i "s/\${user.home}/\/data\/rocketmq/g"  logback_tools.xml

最后,我们进入到 2m-2s-sync 目录下,修改里面的broker配置文件:

cd /usr/local/rocketmq/conf/2m-2s-sync/
  1. 192.168.113.11 机器上Master-Broker的配置文件 broker-a.properties
namesrvAddr=192.168.113.11:9876;192.168.113.12:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerid=O
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
#修改存储路径
storePathRootDir=/data/rocketmq/store-a
storePathCommitLog=/data/rocketmq/store-a
storePathConsumeQueue=/data/rocketmq/store-a
storePathIndex=/data/rocketmq/store-a
storeCheckpoint=/data/rocketmq/store-a
abortFile=/data/rocketmq/store-a
  1. 192.168.113.11 机器上Slave-Broker的配置文件 broker-b-s.properties
namesrvAddr=192.168.113.11:9876;192.168.113.12:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=11011
#修改存储路径
storePathRootDir=/data/rocketmq/store-b
storePathCommitLog=/data/rocketmq/store-b
storePathConsumeQueue=/data/rocketmq/store-b
storePathIndex=/data/rocketmq/store-b
storeCheckpoint=/data/rocketmq/store-b
abortFile=/data/rocketmq/store-b
  1. 192.168.113.12 机器上Slave-Broker的配置文件 broker-a-s.properties
namesrvAddr=192.168.113.11:9876;192.168.113.12:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=11011
#修改存储路径
storePathRootDir=/data/rocketmq/store-a
storePathCommitLog=/data/rocketmq/store-a
storePathConsumeQueue=/data/rocketmq/store-a
storePathIndex=/data/rocketmq/store-a
storeCheckpoint=/data/rocketmq/store-a
abortFile=/data/rocketmq/store-a
  1. 192.168.113.12 机器上Master-Broker的配置文件 broker-b.properties
namesrvAddr=192.168.113.11:9876;192.168.113.12:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
#修改存储路径
storePathRootDir=/data/rocketmq/store-b
storePathCommitLog=/data/rocketmq/store-b
storePathConsumeQueue=/data/rocketmq/store-b
storePathIndex=/data/rocketmq/store-b
storeCheckpoint=/data/rocketmq/store-b
abortFile=/data/rocketmq/store-b

3.3 启动Nameserver和Broker

先启动两台机器的Nameserver

nohup sh bin/mqnamesrv &

然后分别启动4个Broker进程:

#在192.168.113.11上
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties &
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties &
#在192.168.113.12上
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties &
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties &

就这样,RocketMQ双主双从的集群就已经搭建好了,通过rocketmq-console的监控页面,可以看到如下的集群情况:


标题:安装部署RocketMQ集群(双主双从)
作者:pangcm
地址:http://pangcm.club/articles/2019/08/28/1566975360574.html