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

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

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

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

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

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

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

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

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

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

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

文章目录

    • 第一步,安装前的准备
    • 第二步,启动NameServer
    • 第三步,编辑双主节点配置文件
      • Linux001:
      • Linux002:
      • Linux003:
      • Linux004:
    • 第四步,启动Broker
      • Linux001:
      • Linux002:
      • Linux003:
      • Linux004:
    • 第五步,验证成果

第一步,安装前的准备

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

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

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

 systemctl stop firewalld.service 

第二步,启动NameServer

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

ip角色名称
192.168.65.132Linux001
192.168.65.133Linux002

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

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

sh mqnamesrv

在这里插入图片描述
出现下面语句则启动成功

The Name Server boot success. serializeType=JSON

编写启动脚本后台运行

vim startupmqnamesrv.sh

添加内容如下

nohup sh bin/mqnamesrv &

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

在这里插入图片描述

在这里插入图片描述

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

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

Linux001:

在这里插入图片描述

vim 2m-2s-async/broker-a.properties 

在这里插入图片描述
配置NameServer的地址为

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:

vim 2m-2s-async/broker-b.properties 

在这里插入图片描述

Linux003:

vim 2m-2s-async/broker-a-s.properties

在这里插入图片描述

Linux004:

vim 2m-2s-async/broker-b-s.properties

在这里插入图片描述
在这里插入图片描述

第四步,启动Broker

Linux001:

vim startupmqbroker.sh

在这里插入图片描述

nohup sh bin/mqbroker -c /opt/rocketmq/rocketmq-all-4.9.1-bin-release/conf/2m-2s-async/broker-a.properties &

在这里插入图片描述
启动

sh startupmqbroker.sh

查看是否启动成功

ps -ef | grep rocket

在这里插入图片描述

Linux002:

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

Linux003:

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

Linux004:

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

第五步,验证成果

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

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双主双从集群有所帮助。如果大家有任何问题或疑问,请随时向我提问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/103807.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript进阶 第二天笔记

JavaScript 进阶 - 第2天 了解面向对象编程的基础概念及构造函数的作用,体会 JavaScript 一切皆对象的语言特征,掌握常见的对象属性和方法的使用。 了解面向对象编程中的一般概念能够基于构造函数创建对象理解 JavaScript 中一切皆对象的语言特征理解引用…

Flutter页面滑动回调处理解决方法

文章目录 TabBarViewTabBarView简介TabBarView详细介绍 TabBarView滑动时如何处理事务例子 PageControllerPageController介绍PageController 的详细介绍 TabBarView TabBarView简介 TabBarView 是 Flutter 中的一个用于显示选项卡视图的小部件。它通常与 TabBar 一起使用&am…

使用树莓派(香橙派)搭建文件共享服务器-samba服务器

域网内部通过文件共享来传输文件是一种非常方便的方式,小米摄像头也支持用文件共享smb模式将视频备份到局域网中的文件服务器上。之前我一直使用荣耀pro路由器游戏版,是自带USB接口支持文件共享服务的,接上USB移动硬盘,小米摄像头…

linux-防火墙

目录 一、防火墙概念 1.软件防火墙 2.iptables默认规则 3.iptables的五链 4.iptables动作 5.四表五链 6.iptables实例 一、防火墙概念 linux下防火墙一般分为软件防火墙、硬件防火墙 硬件防火墙:在硬件的级别实现防火墙过滤功能,性能高&#xf…

docker部署rabbitmq的坑

背景 今天用docker部署rabbitmq,启动都一起正常,但是当访问15672端口时,不能加载出页面。 排查 1.防火墙是否开启 ufw status2.ip是否能ping通 ping 192.168.x.x3.检查docker日志 docker psdocker logs -f 容器id4.进入容器&#xff0c…

RabbitMQ运行机制和通讯过程介绍

文章目录 1.RabbitMQ 环境搭建2.RabbitMQ简介3.RabbitMQ的优势:4. rabbitmq服务介绍4.1 rabbitmq关键词说明4.2 消息队列运行机制4.3 exchange类型 5.wireshark抓包查看RabbitMQ通讯过程 1.RabbitMQ 环境搭建 参考我的另一篇:RabbitMQ安装及使用教程&am…

UE4 材质实操记录

TexCoord的R通道是从左到右的递增量,G通道是从上到下的递增量,R通道减去0.5,那么左边就是【-0.5~0】区间,所以左边为全黑,Abs取绝对值,就达到一个两边向中间的一个递减的效果,G通道同理&#xf…

【linux】安装rpmrebuild

rpmrebuild是一种从已经安装的包中构建RPM文件的工具。它可以用于轻松构建修改后的包,并适用于任何使用RPM的Linux发行版。 访问地址 rpm rebuild download | SourceForge.net 选择版本 版本地址:版本地址 下载安装包 安装 rpm -ivh rpmrebuild-2.15…

[C语言]排序的大乱炖——喵喵的成长记

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要…

Python:实现日历功能

背景 日常生活中,每天都要用到日历,日历成为我们生活中的必需品,那么如何制作日历呢,其实方法有很多,可以直接在excel中制作,也可以手画等等。 学习过编程的朋友,能否想到用Python编写一…

Docker从入门到实战

Docker基本概念 1、解决的问题 1、统一标准 应用构建 ○ Java、C、JavaScript ○ 打成软件包 ○ .exe ○ docker build … 镜像应用分享 ○ 所有软件的镜像放到一个指定地方 docker hub ○ 安卓,应用市场应用运行 ○ 统一标准的 镜像 ○ docker run 容器化技术 …

STM32:TTL串口调试

一.TTL串口概要 TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。 二.TTL串口调试 实现电脑通过STM32发送…

current file is not included in a workspace moduleg 存在多个 main函数的 Go项目 无法成功导包

报错缘由 学习 hystria, 尝试自测案例,使用了 go get “github.com/afex/hystrix-go/hystrix” 进行导入包, 导入成功后,在代码里利用 import 导入,但遇到了以下报错 could not import github.com/afex/hystrix-go/hystrix (current file i…

【前端性能】性能优化手段-高频面试题

持续更新.............................最近更新2023/10/24 1. 讲一下png8、png16、png32的区别,并简单讲讲 png 的压缩原理 PNG8、PNG16、PNG32 是 PNG 图像格式的不同变种,它们主要区别在于颜色深度和透明度支持的不同。 区别 PNG8: PN…

指定顺序输出

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

Django 注册及创建订单商品

注册功能的实现 user/views from rest_framework.generics import GenericAPIView from rest_framework.views import APIViewfrom apps.user.models import User from apps.user.serializers import UserSerializer from utils import ResponseMessage from utils.jwt_auth …

C++前缀和算法的应用:从仓库到码头运输箱子原理、源码、测试用例

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 双指针 单调双向队列 题目 你有一辆货运卡车,你需要用这一辆车把一些箱子从仓库运送到码头。这辆卡车每次运输有 箱子数目的限制 和 总重量的限制 。 给你…

JAVA基础(JAVA SE)学习笔记(八)面向对象编程(高级)

前言 1. 学习视频: 尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第二阶段:Java面向对象编程 6.面向对象编程(基础) 7.面向对象编程&…

【干货】FMEA的实施流程——SunFMEA

DFMEA和PFMEA的实施流程基本一致,都是先定义过程/功能、故障模式分析、故障原因分析、预防/探测措施的制定、风险风险,最后到制定补偿措施,具体如下图: FMEA实施流程——SunFMEA 一、定义过程/功能 FMEA工作的第一步,…

IDEA配置HTML和Thymeleaf热部署开发

IDEA配置HTML和Thymeleaf热部署开发 1.项目配置2. IDEA配置3. 使用 需求:现在我们在开发不分离项目的时候(SpringBootThmeleaf)经常会改动了类或者静态html文件就需要重启一下服务器, 这样不仅时间开销很大,而且经常重…
最新文章