RocketMQ-为什么必要集群?主从架构搭建

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

单机版本RocketMQ搭建,请移步《RocketMQ服务快速搭建和体验消息收发》。
1、为什么必要分布式集群架构?

之前快速搭建的是单机版的RocketMQ服务,会存在单点故障。一旦NameServer服务或Broker服务出现问题,整个RocketMQ服务就无法正常工作。更严峻的是,如果服务器出现问题,比如磁盘坏了或被中毒,存储在磁盘上的数据就会丢失。所以,单机版一样平常是不用于生产环境,必要一个分布式集群服务来解决。
RocketMQ的分布式集群基于主从架构搭建,在多个服务器组成的集群中,指定一部门节点为Master,负责响应客户端的请求;指定一部门节点为Slave,负责备份Master节点的数据。作用是当Master节点出现故障时,Slave节点可以包管数据不会丢失。

2、搭建分布式集群【主从架构】

2.1、环境准备

准备三台雷同配置的Linux服务器【可用假造机代替】。
方便更清晰描述三台服务器的操纵,给【每个服务器】指定一个host映射。
  1. # 编辑命令
  2. vim /etc/hosts
  3. # IP地址为自己服务器的IP
  4. 192.168.242.50 rmq1
  5. 192.168.242.51 rmq2
  6. 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服务即可。
  1. # 三台的启动命令都一样
  2. # 切换到RocketMQ运行包根目录
  3. 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,示例配置如下:
  1. #所属集群名字,名字一样的节点就在同一个集群内
  2. brokerClusterName=rocketmq-cluster
  3. #broker名字,名字一样的节点就是一组主从节点。
  4. brokerName=broker-a
  5. #brokerid,0就表示是Master,>0的都是表示 Slave
  6. brokerId=0
  7. #nameServer地址,分号分割
  8. namesrvAddr=rmq1:9876;rmq2:9876;rmq3:9876
  9. deleteWhen=04
  10. fileReservedTime=120
  11. #存储路径
  12. storePathRootDir=/opt/apps/server/rocketmq/store
  13. storePathCommitLog=/opt/apps/server/rocketmq/store/commitlog
  14. storePathConsumeQueue=/opt/apps/server/rocketmq/store/consumequeue
  15. storePathIndex=/opt/apps/server/rocketmq/store/index
  16. storeCheckpoint=/opt/apps/server/rocketmq/store/checkpoint
  17. abortFile=/opt/apps/server/rocketmq/store/abort
  18. #Broker 的角色
  19. brokerRole=ASYNC_MASTER
  20. flushDiskType=ASYNC_FLUSH
  21. #Broker 对外服务的监听端口
  22. listenPort=10911
复制代码
配置第⼀组broker-a的Slave服务
服务器:rmq3,路径:/conf/2m-2s-async/broker-a-s.properties,示例配置如下:
  1. #所属集群名字,名字一样的节点就在同一个集群内
  2. brokerClusterName=rocketmq-cluster
  3. #broker名字,名字一样的节点就是一组主从节点。
  4. brokerName=broker-a
  5. #brokerid,0就表示是Master,>0的都是表示 Slave
  6. # 【Slave服务与Master服务的不同点】
  7. brokerId=1
  8. #nameServer地址,分号分割
  9. namesrvAddr=rmq1:9876;rmq2:9876;rmq3:9876
  10. deleteWhen=04
  11. fileReservedTime=120
  12. #存储路径
  13. # 【Slave服务与Master服务的不同点,注意store有加了Slave区分】
  14. storePathRootDir=/opt/apps/server/rocketmq/storeSlave
  15. storePathCommitLog=/opt/apps/server/rocketmq/storeSlave/commitlog
  16. storePathConsumeQueue=/opt/apps/server/rocketmq/storeSlave/consumequeue
  17. storePathIndex=/opt/apps/server/rocketmq/storeSlave/index
  18. storeCheckpoint=/opt/apps/server/rocketmq/storeSlave/checkpoint
  19. abortFile=/opt/apps/server/rocketmq/storeSlave/abort
  20. #Broker 的角色
  21. # 【Slave服务与Master服务的不同点】
  22. brokerRole=SLAVE
  23. flushDiskType=ASYNC_FLUSH
  24. #Broker 对外服务的监听端口
  25. # 【Slave服务与Master服务的不同点】
  26. listenPort=11011
复制代码
配置第二组broker-b的Master服务和Slave服务的配置
直接复制broker-a的配置,只修改brokerName=broker-b 就行,其他都一样。
2.4、启动Broker服务

启动Broker服务,与单机版本不同,必要增长-c参数,指向对应的配置⽂件。
在rmq2上,启动broker-a的master服务和broker-b的slave服务:
  1. # 切换到RocketMQ运行包根目录
  2. cd /opt/apps/server/rocketmq-all-5.3.1-bin-release
  3. # 启动命令
  4. nohup mqbroker -c ./conf/2m-2s-async/broker-a.properties &
  5. nohup mqbroker -c ./conf/2m-2s-async/broker-b-s.properties &
复制代码
在rmq3上,启动broker-b的master服务和broker-a的slave服务:
  1. # 切换到RocketMQ运行包根目录
  2. cd /opt/apps/server/rocketmq-all-5.3.1-bin-release
  3. # 启动命令
  4. nohup mqbroker -c ./conf/2m-2s-async/broker-b.properties &
  5. nohup mqbroker -c ./conf/2m-2s-async/broker-a-s.properties &
复制代码
2.5、检查集群服务状态

检察服务启动状态,仍然可用jps命令和跟踪nohup.out日志文件的方式。但集群部署方式,建议使用bin目录下的mqadmin指令。该命令可以及时检察集群broker集群的运行状态。在恣意一台服务器运行该命令即可。
  1. # 切换到RocketMQ运行包根目录
  2. cd /opt/apps/server/rocketmq-all-5.3.1-bin-release
  3. # 查看broker集群运行状态命令
  4. ./bin/mqadmin clusterlist
复制代码

2.6、Dashboard配置修改

修改配置文件application.yml里面的namesrvAddrs,把集群的nameserver地址添加进去。
  1. rocketmq:
  2.   config:
  3.     namesrvAddrs:
  4.       - 192.168.242.50:9876
  5.       - 192.168.242.51:9876
  6.       - 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表