ToB企服应用市场:ToB评测及商务社交产业平台
标题:
RocketMQ-为什么必要集群?主从架构搭建
[打印本页]
作者:
八卦阵
时间:
2025-1-7 00:45
标题:
RocketMQ-为什么必要集群?主从架构搭建
单机版本RocketMQ搭建,请移步《RocketMQ服务快速搭建和体验消息收发》。
1、为什么必要分布式集群架构?
之前快速搭建的是单机版的RocketMQ服务,会存在单点故障。一旦NameServer服务或Broker服务出现问题,整个RocketMQ服务就无法正常工作。更严峻的是,如果服务器出现问题,比如磁盘坏了或被中毒,存储在磁盘上的数据就会丢失。所以,单机版一样平常是不用于生产环境,必要一个分布式集群服务来解决。
RocketMQ的分布式集群基于主从架构搭建,在多个服务器组成的集群中,指定一部门节点为Master,负责响应客户端的请求;指定一部门节点为Slave,负责备份Master节点的数据。作用是当Master节点出现故障时,Slave节点可以包管数据不会丢失。
2、搭建分布式集群【主从架构】
2.1、环境准备
准备三台雷同配置的Linux服务器【可用假造机代替】。
方便更清晰描述三台服务器的操纵,给【
每个服务器
】指定一个host映射。
# 编辑命令
vim /etc/hosts
# IP地址为自己服务器的IP
192.168.242.50 rmq1
192.168.242.51 rmq2
192.168.242.52 rmq3
复制代码
本次搭建,以RocketMQ默认配置2主2从集群,将主从节点分别部署在不同服务器上。集群规划如下:
host映射NameServer服务部署Broker服务部署rmq1NameServerrmq2NameServerbroker-a, broker-b-srmq3NameServerbroker-b, broker-a-s 假造机克隆,可参考《配置可复用的假造机,不难!》
2.2、部署nameServer服务
nameServer服务不必要做特别的配置,跟单机部署一样的步调,在三台服务器上都分别部署nameServer服务即可。
# 三台的启动命令都一样
# 切换到RocketMQ运行包根目录
nohup mqnamesrv &
复制代码
2.3、对Broker服务进⾏集群配置
在RocketMQ运⾏包的conf⽬录下,提供了多种集群的部署配置⽂件模板,不必要我们手动创建,只需在原来的基础做调解就好。
集群模式简介
2m-noslave:
2主⽆从的集群参考配置,存在单点故障。
2m-2s-async和2m-2s-sync:
2主2从的集群参考配置,主从不会自动切换。async和sync表示主从节点之间是同步或异步。
dledger:
具备主从切换功能的⾼可⽤集群。集群中的节点会基于Raft协议随机选举出⼀个Leader,作⽤类似于Master节点。其他的节点都是follower,作⽤类似于Slave节点。
此次采⽤2m-2s-async的⽅式搭建集群,必要在rmq2和rmq3上修改这个目录下的配置⽂件。
配置第⼀组broker-a的Master服务
服务器:rmq2
,路径:/conf/2m-2s-async/broker-a.properties,示例配置如下:
#所属集群名字,名字一样的节点就在同一个集群内
brokerClusterName=rocketmq-cluster
#broker名字,名字一样的节点就是一组主从节点。
brokerName=broker-a
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rmq1:9876;rmq2:9876;rmq3:9876
deleteWhen=04
fileReservedTime=120
#存储路径
storePathRootDir=/opt/apps/server/rocketmq/store
storePathCommitLog=/opt/apps/server/rocketmq/store/commitlog
storePathConsumeQueue=/opt/apps/server/rocketmq/store/consumequeue
storePathIndex=/opt/apps/server/rocketmq/store/index
storeCheckpoint=/opt/apps/server/rocketmq/store/checkpoint
abortFile=/opt/apps/server/rocketmq/store/abort
#Broker 的角色
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=10911
复制代码
配置第⼀组broker-a的Slave服务
服务器:rmq3
,路径:/conf/2m-2s-async/broker-a-s.properties,示例配置如下:
#所属集群名字,名字一样的节点就在同一个集群内
brokerClusterName=rocketmq-cluster
#broker名字,名字一样的节点就是一组主从节点。
brokerName=broker-a
#brokerid,0就表示是Master,>0的都是表示 Slave
# 【Slave服务与Master服务的不同点】
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rmq1:9876;rmq2:9876;rmq3:9876
deleteWhen=04
fileReservedTime=120
#存储路径
# 【Slave服务与Master服务的不同点,注意store有加了Slave区分】
storePathRootDir=/opt/apps/server/rocketmq/storeSlave
storePathCommitLog=/opt/apps/server/rocketmq/storeSlave/commitlog
storePathConsumeQueue=/opt/apps/server/rocketmq/storeSlave/consumequeue
storePathIndex=/opt/apps/server/rocketmq/storeSlave/index
storeCheckpoint=/opt/apps/server/rocketmq/storeSlave/checkpoint
abortFile=/opt/apps/server/rocketmq/storeSlave/abort
#Broker 的角色
# 【Slave服务与Master服务的不同点】
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
#Broker 对外服务的监听端口
# 【Slave服务与Master服务的不同点】
listenPort=11011
复制代码
配置第二组broker-b的Master服务和Slave服务的配置
直接复制broker-a的配置,只修改brokerName=broker-b 就行,其他都一样。
2.4、启动Broker服务
启动Broker服务,与单机版本不同,必要增长-c参数,指向对应的配置⽂件。
在rmq2上,启动broker-a的master服务和broker-b的slave服务:
# 切换到RocketMQ运行包根目录
cd /opt/apps/server/rocketmq-all-5.3.1-bin-release
# 启动命令
nohup mqbroker -c ./conf/2m-2s-async/broker-a.properties &
nohup mqbroker -c ./conf/2m-2s-async/broker-b-s.properties &
复制代码
在rmq3上,启动broker-b的master服务和broker-a的slave服务:
# 切换到RocketMQ运行包根目录
cd /opt/apps/server/rocketmq-all-5.3.1-bin-release
# 启动命令
nohup mqbroker -c ./conf/2m-2s-async/broker-b.properties &
nohup mqbroker -c ./conf/2m-2s-async/broker-a-s.properties &
复制代码
2.5、检查集群服务状态
检察服务启动状态,仍然可用jps命令和跟踪nohup.out日志文件的方式。但集群部署方式,建议使用bin目录下的mqadmin指令。该命令可以及时检察集群broker集群的运行状态。在恣意一台服务器运行该命令即可。
# 切换到RocketMQ运行包根目录
cd /opt/apps/server/rocketmq-all-5.3.1-bin-release
# 查看broker集群运行状态命令
./bin/mqadmin clusterlist
复制代码
2.6、Dashboard配置修改
修改配置文件application.yml里面的namesrvAddrs,把集群的nameserver地址添加进去。
rocketmq:
config:
namesrvAddrs:
- 192.168.242.50:9876
- 192.168.242.51:9876
- 192.168.242.52:9876
复制代码
重启服务,在集群菜单页便可看到集群的运行的环境。
如果没搭建过RocketMQ Dashboard的同砚,请移步《RocketMQ-管控利器【Dashboard 2.0】服务搭建》。
2.7、Broker服务集群配置留意点
store开头的一系列配置:
表示RocketMQ的存盘⽂件地址。在同⼀个呆板上必要部署多个Broker服务时,
不同服务的存储目录不能雷同
。
listenPort:
表示Broker对外提供服务的端⼝,默认值10911。在同⼀个呆板上部署多个Broker服务时,
不同服务占⽤的端口不能雷同
。
3、我的公众号&资料获取
敬请关注我的公众号:
大象只为你
,连续更新技术知识…
相干资料获取:
如需RocketMQ资源包,请后台复兴:RocketMQ
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4