【中间件】RocketMQ集群搭建(双主双从)

本文介绍了RocketMQ集群的多种模式,并重点讲述了双主双从集群的搭建步骤,包括服务器环境配置、防火墙设置、环境变量配置、消息存储路径创建、broker配置、启动脚本修改以及NameServer和Broker的启动。通过这个教程,读者能够理解并实现高可用的RocketMQ集群部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一,集群介绍

1.1单Master模式

1.2多Master模式

1.3多Master多Slave模式(异步)

1.4多Master多Slave模式(同步)

二,双主双从集群搭建

1,工作流程

2,集群搭建

2.1 服务器环境

2.2 添加host信息(两台都要添加)

 2.3 防火墙配置

2.4 环境变量配置

2.5 创建消息存储路径(master与slave指定的储存路径名字不能相同)

 2.6 broker配置文件

1,master1

2,slave2

4,slave1

2.7修改启动脚本文件

2.8 启动NameServe集群

验证


一,集群介绍

1.1单Master模式

这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。

1.2多Master模式

一个集群无Slave,全是Master,例如2个Master或者3个Master,这种模式的优缺点如下:

  • 优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;

  • 缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。

1.3多Master多Slave模式(异步)

每个Master配置一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:

  • 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;

  • 缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

1.4多Master多Slave模式(同步)

每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:

  • 优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;

二,双主双从集群搭建

1,工作流程

消息高可用采用2m-2s(两个主节点,两个从节点,数据之间同步双写)的方式

 集群工作流程

- 1 )启动NameServer,NameServer启动后开始监听端口,等待Broker、Producer、Consumer连接。

- 2 )启动Broker时,Broker会与所有的NameServer建立并保持长连接,然后每 30 秒向NameServer定时发送心跳包。

- 3 )发送消息前,可以先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,当然,在创建Topic时也会将Topic与Broker的关系写入到NameServer中。不过,这步是可选的,也可以在发送消息时自动创建Topic。

- 4 )Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中获取路由信息,即当前发送的Topic消息的Queue与Broker的地址(IP+Port)的映射关系。然后根据算法策略从队选择一个Queue,与队列所在的Broker建立长连接从而向Broker发消息。当然,在获取到路由信息后,Producer会首先将路由信息缓存到本地,再每 30 秒从NameServer更新一次路由信息。

- 5 )Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取其所订阅Topic的路由信息,然后根据算法策略从路由信息中获取到其所要消费的Queue,然后直接跟Broker建立长连接,开始消费其中的消息。Consumer在获取到路由信息后,同样也会每 30 秒从NameServer更新一次路由信息。不过不同于Producer的是,Consumer还会向Broker发送心跳,以确保Broker的存活状态。

2,集群搭建

2.1 服务器环境

序号 ip 角色 架构模式
1 192.168.135.188 nameserver,brokerserver master1,slave2
2 192.168.135.189 nameserver,brokerserver master2,slave1

2.2 添加host信息(两台都要添加)

vim /etc/hosts

配置如下

#nameserver
192.168.135.188 rocketmq-nameserver1
192.168.135.189 rocketmq-nameserver2
#broker
192.168.135.188 rocketmq-master1
192.168.135.188 rocketmq-slave2
192.168.135.189 rocketmq-master2
192.168.135.189 rocketmq-slave1

 配置完成后, 重启网卡

systemctl restart network

 2.3 防火墙配置

宿主机需要远程访问虚拟机的rocketmq服务和web服务,需要开放相关的端口号,简单粗暴的方式是直接关闭防火墙

 # 关闭防火墙
 systemctl stop firewalld.service 
 # 查看防火墙的状态
 firewall-cmd --state 
&nbs
### 设置和管理 RocketMQ 双主双从集群架构 #### 名词解释 为了更好地理解如何设置和管理 RocketMQ双主双从集群架构,先来了解一下各个组件及其作用。NameServer 是名称服务器,在整个消息队列体系里负责路由管理和负载均衡;Producer 生产者用于发送消息到指定的主题(Topic),而 Consumer 则是从特定主题订阅并消费这些消息的应用程序实例[^2]。 #### 架构特点 该种类型的集群由两个 Master 和两个 Slave 组成,其中每一对 Master-Slave 形成了一个逻辑上的节点对。这种设计不仅提高了系统的可靠性还增强了容错能力。当其中一个 Master 出现故障时,其对应的 Slave 将接管工作继续提供服务,从而保证了业务连续性[^3]。 #### 环境准备与配置 要成功建立这样一个高可用性的消息中间件环境,需完成如下几个关键步骤: ##### Host 添加信息 编辑 `/etc/hosts` 文件加入所有参与构建此集群机器之间的映射关系,确保它们可以通过主机名互相访问[^4]。 ##### 防火墙配置 允许必要的端口通信以便于不同角色之间能够正常交互。通常情况下涉及到了 NameServer 默认监听9876端口、Broker默认使用的10911端口等[^5]。 ##### 环境变量设定 通过修改用户的 shell profile (如 `.bashrc`) 来定义 `ROCKETMQ_HOME` 并将其 bin 目录添加至 PATH 中,使得命令行工具可以被全局调用。 ```shell export ROCKETMQ_HOME=/usr/local/rocketmq export PATH=$PATH:$ROCKETMQ_HOME/bin ``` ##### 存储路径创建 为每一个 Broker 实例单独设立存放日志和其他运行时数据的空间是非常重要的一步操作。这有助于保持良好的性能表现同时也便于后期维护管理工作。 #### Broker 配置调整 针对每个不同的 Broker 成员都需要精心定制相应的参数选项以满足实际应用场景的需求。具体来说就是分别编写适用于 master1, slave1, master2 以及 slave2 的配置文件,并放置在合适的位置下。 对于同步双写的场景而言,特别需要注意的是要在 slave 的配置文件中指明 syncMasterEnable=true 这样才能开启同步复制功能。 #### 启动顺序和服务验证 按照一定的次序依次启动 NameServer 和 Brokers ,即先让所有的 NameServers 上线之后再逐一激活 Masters 和 Slaves 。最后借助官方提供的客户端工具或者其他方式测试消息能否顺利发布与接收以此确认整体架构已经正确无误地搭建完毕。 #### 使用 RocketMQ Dashboard 进行监控 一旦完成了上述全部准备工作,则可通过安装部署 RocketMQ Dashboard 来获取关于当前集群状态的各种统计图表及报警提示等功能支持,进一步简化运维人员日常工作的复杂度[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AKA|布鲁克林欧神仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值