【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.mzph.cn/news/116226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot实现基于Java的超市进销存系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现基于Java的超市进销存系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,超市进销存系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大&#x…

Weights and Biases使用教程

Weights and Biases使用教程 安装和初始化实验跟踪跟踪指标跟踪超参数可视化模型检查日志 数据和模型版本控制使用Sweeps进行超参数调优数据可视化report Weights and Biases已经成为AI社区中最受欢迎的库之一。该团队在创建了一个平台,使机器深度学习学习工程师能够…

云安全—docker原理

0x00 前言 因为要学习docker相关的检测技术,所以需要对docker的原理进行基本的原因,不求彻底弄懂,但求懂点皮毛,如有不妥之处,还请斧正。 0x01 docker概述 docker起源 docker公司是在旧金山,由法裔美籍…

Java操作Elasticsearch(新增数据)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

广告掘金全自动挂机项目,单设备30+【软件脚本+技术教程】

广告掘金项目是一种越来越受欢迎的赚钱方式,它通过观看广告视频来获取收益。然而,手动观看每个广告视频可能会耗费大量时间和精力。为了简化操作并提升效率,我们可以利用全自动挂机脚本来完成这一任务。接下来,将为您介绍如何使用…

PLC单按钮启停算法汇总

单按钮启停在三菱PLC里可以通过简单的取反指令"ALT"实现,西门子PLC如何实现ALT指令,请参考下面文章链接,这篇博客我们汇总常用的单按钮启停实现方法,希望大家读了本篇博客后有所收获。 博途ALT指令 博途S7-1200/1500PLC 取反指令(ALT)-CSDN博客SMART PLC的ALT指…

安卓 实现60s倒计时的CountDownTimer(小坑)

安卓 实现60s倒计时的CountDownTimer(小坑) 前言一、CountDownTimer 是什么?二、代码示例1.使用2.小坑的点误差及时取消 总结 前言 前段时间写倒计时没有用线程,想换一种实现方式结果踩了个小坑,特此记录。 一、Count…

pymavlink简单使用

环境 windows10 python3.11 pymavlink2.4.40 工具 虚拟串口工具 Virtual Serial Port Driver 6.9 串口/网络调试助手 sscom5.13.1.exe 串口通信 虚拟串口 COM1, COM2 调试助手连接COM2 pymavlink连接COM1 from pymavlink import mavutil import timeconnect mavut…

LabVIEW应用开发——控件的使用(三)

接上文,这篇介绍簇Cluster控件。 LabVIEW应用开发——控件的使用(二) 1、簇Cluster 1)创建 蔟控件又称为组合、集群控件,顾名思义它是一个类似于C语言的结构体的一个数据结构控件。在描述一个对象的时候,…

SpringCloud 微服务全栈体系(三)

第五章 Nacos 注册中心 国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba 也推出了一个名为 Nacos 的注册中心。 一、认识和安装 Nacos 1. 认识 Nacos Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eure…

“创新启变 聚焦增长”极狐(GitLab)媒体沟通会,共话智能时代软件开发新生态

10 月 18 日 北京 昨日,全球领先 AI 赋能 DevSecOps 一体化平台极狐(GitLab) 在北京举办了主题为“创新启变 聚焦增长”的媒体沟通会。极狐(GitLab) CEO 柳钢就“中国企业数字化转型、软件研发、技术自主可控等热点问题,以及 AI 大模型时代下&#xff0c…

论文阅读 - Coordinated Behavior on Social Media in 2019 UK General Election

论文链接: https://arxiv.org/abs/2008.08370 目录 摘要: Introduction Contributions Related Work Dataset Method Overview Surfacing Coordination in 2019 UK GE Analysis of Coordinated Behaviors 摘要: 协调的在线行为是信息…

SAP POorPI RFC接口字段调整后需要的操作-针对SP24及以后的PO系统

文章目录 问题描述解决办法 问题描述 在SAP系统的RFC接口结构中添加了字段,RFC也重新引用到了PO系统,Cache和CommunicationChannel都刷新或启停了,但是新增的字段在调用接口的时候数据进不到SAP系统,SAP系统内的值也出不来。经过…

异步编程详解(.NET)

在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,很多网站本身也做了不少的尝试。今天我们再来回答一下这个问题,同时我会做一个async和await在WinForm中的尝试,并且…

html5语义化标签

目录 前言 什么是语义化标签 常见的语义化标签 语义化的好处 前言 HTML5 的设计目的是为了在移动设备上支持多媒体。之前网页如果想嵌入视频音频,需要用到 flash ,但是苹果设备是不支持 flash 的,所以为了改变这一现状,html5 …

QWidget快速美化-蓝色边框圆角按钮

将代码复制进QPushButton的样式表 效果: 代码: QPushButton{ color:#52DCFE;border:2px solid #52DCFE;border-radius:5px; }QPushButton::hover{background-color:#52DCFE;color:#ffffff; }QPushButton::pressed,QPushButton::checked{background-color:#52DCFE;color:#ffff…

adb: error: 46-byte write failed: Invalid argument

使用adb pull可以,但是adb push fail。 貌似是adb的问题,将adb.exe 重命名为pdb,使用pdb push就行了。

用Node.js开发基于稳定扩散的AI应用

在本文中,我们将介绍如何构建一个 Web 应用程序,该应用程序使用 ChatGPT 和 Stable Diffusion 为你提供的任何网站描述生成徽标和合适的域名。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 1、介绍 人工智能正在接管世界。 这些技术每天都在震…

如何安装ubuntu22.04以及ubuntu各个版本配置国内源和ssh远程登录

目录 一.简介 二.配置root账号 三、配置IP地址 四、更换阿里云源 五、配置ssh,root可以远程登录安装ssh服务 VMware17.0安装教程(2023最新最详细)-CSDN博客 VMware虚拟机安装Ubuntu22.04教程(2023最新最详细)-CSDN博客 Ubuntu22.04&am…

浅谈APP自动化测试工具主要优势

移动应用程序已经成为我们日常生活和商业活动的重要组成部分。随着用户对应用性能、稳定性和用户体验的需求不断增加,开发人员不得不寻找方法来确保他们的应用在各种情况下都能正常运行。这就引入了自动化测试工具,这些工具通过自动执行测试用例来检查应…