RocketMQ集群环境部署

本文详细介绍了如何在三台虚拟机上搭建RocketMQ集群,包括准备环境、修改主机名以实现互访、配置SSH免密登录、配置RocketMQ的2主2从异步刷盘集群,以及启动集群的步骤。每个节点的角色和配置文件都进行了说明。
摘要由CSDN通过智能技术生成

1. 准备环境

  1. 准备好三台虚拟机,下面是我的虚拟机的一些基本信息
名称ip地址
worker010.117.33.135
worker110.117.39.202
worker210.117.9.52
  1. 三台虚拟机都已经部署了rabbitMQ以及maven和jdk环境
  2. 防火墙都已经关闭了

2. 修改主机名

通过修改主机名,三台虚拟机可以通过主机名来互相访问了(三台主机都要配置)

vim /etc/hosts
10.117.33.135 worker0
10.117.39.202 worker1
10.117.9.52   worker2

在这里插入图片描述

3. 免密登录配置

使用ssh-keygen生成密钥(三个机器都要生成)

ssh-keygen

在这里插入图片描述
将生成的密钥进行互相分发

先分发worker0的密钥

ssh-copy-id worker0
ssh-copy-id worker1
ssh-copy-id worder2

同样的操作,将worker1以及worker2的密钥也进行一个分发

在这里插入图片描述

测试一下看是否可以进行免密登录:这里我使用worker1来登录worker2

ssh worker2

可以发现免密登录成功

在这里插入图片描述

4. 配置RocketMQ集群

使用conf/2m-2s-async下的配置文件搭建一个2主2从的异步刷盘集群,集群的设计情况如下:

机器名nameserver节点部署broker节点部署
worker0nameServer
worker1nameServerbroker-a,broker-b-s
worker2nameServerbroker-b,broker-a-s

可以看出上面的配置中,worker0作为nameserver服务器(三个机器都部署了nameserver),woker1与worke2在不同的集群中互为主从节点

配置方式介绍:conf目录下存在三种配置方式

  • 2m-2s-async:2主2从异步刷盘(吞吐量较大,但是消息可能会丢失)
  • 2m-2s-sync:2主2从同步刷盘(吞吐量会下降,但是消息更安全)
  • 2m-noslave:2主无从(单点故障问题)。然后还可以直接配置broker.conf,进行单点环境部署
  • dleger就是用来实现主从切换的,集群中的节点会基于Raft协议随机选择一个leader,其它的都是follows,通常正式环境都会采用这种方式来搭建集群

5. 搭建RocketMQ集群

首先保证RocketMQ环境在三台机器上都已经安装了,没有安装的参考我这篇博客

  • 进入worker1机器的RocketMQ的目录下的2m-2s-async的目录下

在这里插入图片描述

根据前面的规划,worker2作为broker-a的主节点,作为broker-b的从节点

  • 配置worker1

首先配置broker-a.properties:即进行brokera的主节点配置

#所属集群名字,名字一样的节点在一个集群
brokerClusterName=DefaultCluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker.a
#brokerId,0表示是master,大于0表示是Slave
brokerId=0
#nameserver地址,分号分割
namesrvAddr=worker0:9876;worker1:9876;worker2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broler自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口
listenPort=10911
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留的时间点,默认48小时
fileReservedTime=120
#commitlog每个文件大小默认为1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件的磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketStore
#commitlog存储路径
storePathCommitLog=/usr/local/rocketStore/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketStore/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketStore/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketStore/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketStore/abort
#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushComsumeQueueThoroughInterval=60000
#broker的角色
#-ASYNC_MASTER异步复制Master
#-SYNC_MASTER同步双写Master
#-SLAVE
brokerRole=SLAVE
#刷盘方式
#-ASYNC_FLUSH:异步刷盘
#-SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=falise
#发消息的线程池数量
#sendMessageThreadPoolNums=128
#拉消息的线程池数量
#pullMessageThreadPoolNums=128

然后配置broker-b-s.properties:即进行brokerb的从节点配置

#所属集群名字,名字一样的节点在一个集群
brokerClusterName=DefaultCluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker.b
#brokerId,0表示是master,大于0表示是Slave
brokerId=1
#nameserver地址,分号分割
namesrvAddr=worker0:9876;worker1:9876;worker2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broler自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口
listenPort=11011
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留的时间点,默认48小时
fileReservedTime=120
#commitlog每个文件大小默认为1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件的磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketStoreslave
#commitlog存储路径
storePathCommitLog=/usr/local/rocketStoreslave/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketStoreslave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketStoreslave/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketStoreslave/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketStoreslave/abort
#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushComsumeQueueThoroughInterval=60000
#broker的角色
#-ASYNC_MASTER异步复制Master
#-SYNC_MASTER同步双写Master
#-SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#-ASYNC_FLUSH:异步刷盘
#-SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=falise
#发消息的线程池数量
#sendMessageThreadPoolNums=128
#拉消息的线程池数量
#pullMessageThreadPoolNums=128

到此worker1机器就配置完毕了

  • 配置worker2

进入worker2机器的RocketMQ的目录下的2m-2s-async的目录下

首先配置broker-b.properties:即进行brokerb的主节点配置

#所属集群名字,名字一样的节点在一个集群
brokerClusterName=DefaultCluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker.b
#brokerId,0表示是master,大于0表示是Slave
brokerId=0
#nameserver地址,分号分割
namesrvAddr=worker0:9876;worker1:9876;worker2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broler自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口
listenPort=10911
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留的时间点,默认48小时
fileReservedTime=120
#commitlog每个文件大小默认为1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件的磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketStore
#commitlog存储路径
storePathCommitLog=/usr/local/rocketStore/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketStore/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketStore/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketStore/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketStore/abort
#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushComsumeQueueThoroughInterval=60000
#broker的角色
#-ASYNC_MASTER异步复制Master
#-SYNC_MASTER同步双写Master
#-SLAVE
brokerRole=SLAVE
#刷盘方式
#-ASYNC_FLUSH:异步刷盘
#-SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=falise
#发消息的线程池数量
#sendMessageThreadPoolNums=128
#拉消息的线程池数量
#pullMessageThreadPoolNums=128

然后配置broker-a-s.properties:即进行brokera的从节点配置

#所属集群名字,名字一样的节点在一个集群
brokerClusterName=DefaultCluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker.a
#brokerId,0表示是master,大于0表示是Slave
brokerId=1
#nameserver地址,分号分割
namesrvAddr=worker0:9876;worker1:9876;worker2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broler自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口
listenPort=11011
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留的时间点,默认48小时
fileReservedTime=120
#commitlog每个文件大小默认为1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件的磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketStoreslave
#commitlog存储路径
storePathCommitLog=/usr/local/rocketStoreslave/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketStoreslave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketStoreslave/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketStoreslave/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketStoreslave/abort
#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushComsumeQueueThoroughInterval=60000
#broker的角色
#-ASYNC_MASTER异步复制Master
#-SYNC_MASTER同步双写Master
#-SLAVE
brokerRole=SLAVE
#刷盘方式
#-ASYNC_FLUSH:异步刷盘
#-SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=falise
#发消息的线程池数量
#sendMessageThreadPoolNums=128
#拉消息的线程池数量
#pullMessageThreadPoolNums=128

worker2就到此配置完了

6. 启动集群

  • 启动三个机器的nameserver服务(在bin目录下)
nohup sh ./mqnamesrv &
#观察日志查看是否启动成功
cat -f nohup.out
  • 在worker1上启动broker-a节点和broker-b-s节点
nohup  sh ./mqbroker -c ../conf/2m-2s-async/broker-a.properties &
nohup  sh ./mqbroker -c ../conf/2m-2s-async/broker-b-s.properties &
#查看日志观察是否启动成功
cat -f nohup.out

在这里插入图片描述

  • 在worker2上启动broker-a-s节点和broker-b节点
nohup  sh ./mqbroker -c ../conf/2m-2s-async/broker-a-s.properties &
nohup  sh ./mqbroker -c ../conf/2m-2s-async/broker-b.properties &
#查看日志观察是否启动成功
cat -f nohup.out

集群搭建完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值