RocketMQ集群环境部署

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

集群搭建完成

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RocketMQ是一个分布式的消息队列系统,支持高可用的集群部署方式。以下是RocketMQ集群部署的步骤: 1. 下载RocketMQ,解压缩后进入bin目录。 2. 修改conf文件夹下的配置文件,包括broker.conf、namesrv.conf、logback_broker.xml和logback_namesrv.xml等。其中,broker.conf和namesrv.conf是RocketMQ的核心配置文件,需要根据实际情况进行修改。 3. 启动NameServer。在bin目录下执行命令:nohup sh mqnamesrv &。这个命令将会在后启动NameServer。 4. 启动Broker。在bin目录下执行命令:nohup sh mqbroker -n localhost:9876 &。这个命令将会在后启动一个Broker实例,它会自动注册到NameServer上。 5. 配置集群。在配置文件broker.conf中,需要配置brokerClusterName和brokerName,这两个参数用于标识一个Broker所属的集群和Broker的名字。在同一个集群中,每个Broker的brokerClusterName必须相同,brokerName必须不同。 6. 启动多个Broker实例。在不同的服务器上启动多个Broker实例,它们都需要连接到同一个NameServer上。在启动Broker实例时,需要使用不同的brokerName参数。 7. 配置负载均衡。在配置文件broker.conf中,可以配置brokerIP1~4参数,这些参数用于配置Broker的IP地址。在同一个集群中,多个Broker实例之间可以通过负载均衡的方式进行消息的转发。 以上是RocketMQ集群部署的基本步骤,具体操作可以根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值