【RocketMQ集群】Linux搭建RocketMQ双主双从集群

在当今大数据时代,消息队列系统成为了构建高可用、可扩展和可靠的分布式应用的重要组件之一。而Apache RocketMQ作为一款开源的分布式消息中间件,以其高吞吐量、低延迟和可靠性而备受青睐。为了满足大规模应用的需求,搭建RocketMQ集群是一种常见的部署方式。

本文将介绍如何在Linux系统上搭建RocketMQ双主双从集群。通过搭建双主双从集群,我们可以实现消息的高可用性和容错性,确保在单个Broker节点故障时仍能保持服务的正常运行。

首先,让我们了解一下RocketMQ集群的基本概念。RocketMQ集群由多个Broker节点组成,每个节点负责存储和传递消息。在双主双从集群中,我们将集群划分为两个主节点和两个从节点。主节点负责接收和处理消息的写入请求,而从节点则负责复制主节点的消息,并提供读取请求的服务。通过这种方式,我们可以实现消息的冗余备份和负载均衡,提高系统的可用性和性能。

这次我们要搭建的是双主双从集群异步除了这种集群官方还支持以下几种集群方式:

集群搭建方式 冗余备份 同步方式 写入性能 数据一致性 可用性 链接
单主单从集群 【Spring Cloud Alibaba】Linux安装RocketMQ
多主多从集群
双主双从集群异步 异步
双主双从集群同步 同步

从上表可以看出,不同的集群搭建方式在冗余备份、同步方式、写入性能、数据一致性和可用性等方面存在差异。

  • 冗余备份:单主单从集群没有冗余备份,其他集群搭建方式都有冗余备份。
  • 同步方式:双主双从集群异步模式是异步复制,而双主双从集群同步模式和其他集群搭建方式是同步复制。
  • 写入性能:单主单从集群和多主多从集群具有较高的写入性能,而双主双从集群异步模式的写入性能也较高,但双主双从集群同步模式的写入性能较低。
  • 数据一致性:双主双从集群同步模式具有较高的数据一致性,其他集群搭建方式的数据一致性较低。
  • 可用性:多主多从集群和双主双从集群(异步和同步模式)具有较高的可用性,而单主单从集群的可用性较低。

需要根据具体的业务需求和性能要求来选择适合的集群搭建方式。如果对于消息的可用性要求较高,可以选择多主多从集群或双主双从集群。如果对于写入性能要求较高,可以选择单主单从集群或双主双从集群异步模式。如果对于数据一致性要求较高,可以选择双主双从集群同步模式。

这次的搭建我们需要准备以下的服务器环境:

ip 角色 名称
192.168.65.130 Linux003
192.168.65.131 Linux004
192.168.65.132 Linux001
192.168.65.133 Linux002

第一步,安装前的准备

安装的这些步骤博主原来都写过。

安装jdk:Linux安装Java环境(OracleJDK) 安装并解压rockemq:【Spring Cloud Alibaba】Linux安装RocketMQ

关闭四台服务器的防火墙:

java 复制代码
 systemctl stop firewalld.service 

第二步,启动NameServer

我们使用下面两台机器作为NameServer的集群

ip 角色 名称
192.168.65.132 Linux001
192.168.65.133 Linux002

两台机器执行一样的操作:

运行bin文件夹里面的mqnamesrv脚本

java 复制代码
sh mqnamesrv

出现下面语句则启动成功

java 复制代码
The Name Server boot success. serializeType=JSON

编写启动脚本后台运行

java 复制代码
vim startupmqnamesrv.sh

添加内容如下

java 复制代码
nohup sh bin/mqnamesrv &

运行启动脚本即可后台运行

第三步,编辑双主节点配置文件

配置文件 描述 分配
broker-a.properties Broker A主节点的配置文件,用于配置Broker A节点的相关参数和属性。 Linux001
broker-a-s.properties Broker A从节点的安全配置文件,用于配置Broker A节点的安全相关参数和属性。 Linux003
broker-b.properties Broker B主节点的配置文件,用于配置Broker B节点的相关参数和属性。 Linux002
broker-b-s.properties Broker B从节点的安全配置文件,用于配置Broker B节点的安全相关参数和属性。 Linux004

Linux001:

java 复制代码
vim 2m-2s-async/broker-a.properties 

配置NameServer的地址为

java 复制代码
namesrvAddr=192.168.65.132:9876;192.168.65.133:9876
  • brokerClusterName=DefaultCluster:指定Broker所属的集群名称,这里设置为"DefaultCluster"。
  • brokerName=broker-a:指定Broker的名称,这里设置为"broker-a"。
  • brokerId=0:指定Broker的唯一标识符,这里设置为0。
  • deleteWhen=04:指定消息文件的删除时间,这里设置为04,表示消息文件在存储超过4天后会被删除。
  • fileReservedTime=48:指定消息文件的保留时间,这里设置为48,表示消息文件在不活动超过48小时后会被删除。
  • brokerRole=ASYNC_MASTER:指定Broker的角色,这里设置为ASYNC_MASTER,表示该Broker是双主双从集群中的异步主节点。
  • flushDiskType=ASYNC_FLUSH:指定消息刷盘方式,这里设置为ASYNC_FLUSH,表示消息异步刷盘到磁盘。
  • namesrvAddr=192.168.65.132:9876;192.168.65.133:9876:指定NameServer的地址,这里设置了两个NameServer的地址,分别是192.168.65.132:9876和192.168.65.133:9876。

Linux002:

java 复制代码
vim 2m-2s-async/broker-b.properties 

Linux003:

java 复制代码
vim 2m-2s-async/broker-a-s.properties

Linux004:

java 复制代码
vim 2m-2s-async/broker-b-s.properties

第四步,启动Broker

Linux001:

java 复制代码
vim startupmqbroker.sh
java 复制代码
nohup sh bin/mqbroker -c /opt/rocketmq/rocketmq-all-4.9.1-bin-release/conf/2m-2s-async/broker-a.properties &

启动

java 复制代码
sh startupmqbroker.sh

查看是否启动成功

java 复制代码
ps -ef | grep rocket

Linux002:

java 复制代码
vim startupmqbroker.sh
java 复制代码
nohup sh bin/mqbroker -c /opt/rocketmq/rocketmq-all-4.9.1-bin-release/conf/2m-2s-async/broker-b.properties &
java 复制代码
sh startupmqbroker.sh
java 复制代码
ps -ef | grep rocket

Linux003:

java 复制代码
vim startupmqbroker.sh
java 复制代码
nohup sh bin/mqbroker -c /opt/rocketmq/rocketmq-all-4.9.1-bin-release/conf/2m-2s-async/broker-a-s.properties &
java 复制代码
sh startupmqbroker.sh
java 复制代码
ps -ef | grep rocket

Linux004:

java 复制代码
vim startupmqbroker.sh
java 复制代码
nohup sh bin/mqbroker -c /opt/rocketmq/rocketmq-all-4.9.1-bin-release/conf/2m-2s-async/broker-b-s.properties &
java 复制代码
sh startupmqbroker.sh
java 复制代码
ps -ef | grep rocket

第五步,验证成果

使用mqadmin命令查看集群环境:

java 复制代码
sh mqadmin clusterList -n 127.0.0.1:9876
  • Cluster Name:集群名称,这里是"DefaultCluster"。
  • Broker Name:Broker节点名称,这里有两个节点,分别是"broker-a"和"broker-b"。
  • BID:Broker节点的唯一标识符,0表示主节点,1表示从节点。
  • Addr:Broker节点的地址和端口号。
  • Version:RocketMQ的版本号,这里是"V491"。
  • InTPS(LOAD):消息的入站速率和负载情况。
  • OutTPS(LOAD):消息的出站速率和负载情况。
  • PCWait(ms):消息生产者和消费者的等待时间。
  • Hour:Broker节点的运行时间。
  • SPACE:消息存储空间的使用情况。

可以成功看到集群已经搭建成功!!

在本文中,我们详细介绍了如何在Linux上搭建RocketMQ双主双从集群。通过设置双主双从集群,我们可以实现高可用性、容错性、负载均衡和可扩展性。我们提供了逐步指南,包括下载和安装RocketMQ、配置集群、启动NameServer和Broker节点以及验证集群状态。我们还解释了双主双从集群与其他集群搭建方式的区别,以及不同模式的优势和适用场景。

搭建RocketMQ双主双从集群是构建可靠消息传递系统的重要一步。通过合理配置和调优,我们可以满足不同业务需求的可用性、一致性和性能要求。在实际应用中,我们应根据具体情况选择适合的集群搭建方式,并进行相应的配置和管理。

希望本文对大家在Linux上搭建RocketMQ双主双从集群有所帮助。如果大家有任何问题或疑问,请随时向我提问

相关推荐
夜色呦21 分钟前
现代电商解决方案:Spring Boot框架实践
数据库·spring boot·后端
叫我龙翔23 分钟前
【计网】实现reactor反应堆模型 --- 多线程方案优化 ,OTOL方案
linux·运维·网络
mit6.82425 分钟前
[Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题
linux·运维·docker·容器·架构
爱敲代码的小冰29 分钟前
spring boot 请求
java·spring boot·后端
WangYaolove131443 分钟前
请解释Python中的装饰器是什么?如何使用它们?
linux·数据库·python
7yewh1 小时前
嵌入式硬件实战提升篇(一)-泰山派RK3566制作多功能小手机
linux·arm开发·驱动开发·嵌入式硬件·物联网·智能手机·硬件架构
java小吕布2 小时前
Java中的排序算法:探索与比较
java·后端·算法·排序算法
YRr YRr2 小时前
ubuntu ros 解决建完图后 保存的地图非常小的问题
linux·运维·ubuntu
脸ル粉嘟嘟2 小时前
常用命令之Linux&Oracle&Hive&Python
linux·hive·oracle
Goboy2 小时前
工欲善其事,必先利其器;小白入门Hadoop必备过程
后端·程序员