RocketMQ集群环境部署

news2024/9/21 1:30:04

文章目录

    • 1. 准备环境
    • 2. 修改主机名
    • 3. 免密登录配置
    • 4. 配置RocketMQ集群
    • 5. 搭建RocketMQ集群
    • 6. 启动集群

1. 准备环境

  1. 准备好三台虚拟机,下面是我的虚拟机的一些基本信息
名称ip地址
worker010.117.33.135
worker110.117.39.202
worker210.117.9.52
  1. 三台虚拟机都已经部署了rabbitMQ以及maven和jdk环境
  2. 防火墙都已经关闭了

2. 修改主机名

通过修改主机名,三台虚拟机可以通过主机名来互相访问了(三台主机都要配置)

vim /etc/hosts
10.117.33.135 worker0
10.117.39.202 worker1
10.117.9.52   worker2

在这里插入图片描述

3. 免密登录配置

使用ssh-keygen生成密钥(三个机器都要生成)

ssh-keygen

在这里插入图片描述
将生成的密钥进行互相分发

先分发worker0的密钥

ssh-copy-id worker0
ssh-copy-id worker1
ssh-copy-id worder2

同样的操作,将worker1以及worker2的密钥也进行一个分发

在这里插入图片描述

测试一下看是否可以进行免密登录:这里我使用worker1来登录worker2

ssh worker2

可以发现免密登录成功

在这里插入图片描述

4. 配置RocketMQ集群

使用conf/2m-2s-async下的配置文件搭建一个2主2从的异步刷盘集群,集群的设计情况如下:

机器名nameserver节点部署broker节点部署
worker0nameServer
worker1nameServerbroker-a,broker-b-s
worker2nameServerbroker-b,broker-a-s

可以看出上面的配置中,worker0作为nameserver服务器(三个机器都部署了nameserver),woker1与worke2在不同的集群中互为主从节点

配置方式介绍:conf目录下存在三种配置方式

  • 2m-2s-async:2主2从异步刷盘(吞吐量较大,但是消息可能会丢失)
  • 2m-2s-sync:2主2从同步刷盘(吞吐量会下降,但是消息更安全)
  • 2m-noslave:2主无从(单点故障问题)。然后还可以直接配置broker.conf,进行单点环境部署
  • dleger就是用来实现主从切换的,集群中的节点会基于Raft协议随机选择一个leader,其它的都是follows,通常正式环境都会采用这种方式来搭建集群

5. 搭建RocketMQ集群

首先保证RocketMQ环境在三台机器上都已经安装了,没有安装的参考我这篇博客

  • 进入worker1机器的RocketMQ的目录下的2m-2s-async的目录下

在这里插入图片描述

根据前面的规划,worker2作为broker-a的主节点,作为broker-b的从节点

  • 配置worker1

首先配置broker-a.properties:即进行brokera的主节点配置

#所属集群名字,名字一样的节点在一个集群
brokerClusterName=DefaultCluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker.a
#brokerId,0表示是master,大于0表示是Slave
brokerId=0
#nameserver地址,分号分割
namesrvAddr=worker0:9876;worker1:9876;worker2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broler自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口
listenPort=10911
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留的时间点,默认48小时
fileReservedTime=120
#commitlog每个文件大小默认为1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件的磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketStore
#commitlog存储路径
storePathCommitLog=/usr/local/rocketStore/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketStore/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketStore/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketStore/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketStore/abort
#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushComsumeQueueThoroughInterval=60000
#broker的角色
#-ASYNC_MASTER异步复制Master
#-SYNC_MASTER同步双写Master
#-SLAVE
brokerRole=SLAVE
#刷盘方式
#-ASYNC_FLUSH:异步刷盘
#-SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=falise
#发消息的线程池数量
#sendMessageThreadPoolNums=128
#拉消息的线程池数量
#pullMessageThreadPoolNums=128

然后配置broker-b-s.properties:即进行brokerb的从节点配置

#所属集群名字,名字一样的节点在一个集群
brokerClusterName=DefaultCluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker.b
#brokerId,0表示是master,大于0表示是Slave
brokerId=1
#nameserver地址,分号分割
namesrvAddr=worker0:9876;worker1:9876;worker2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broler自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口
listenPort=11011
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留的时间点,默认48小时
fileReservedTime=120
#commitlog每个文件大小默认为1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件的磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketStoreslave
#commitlog存储路径
storePathCommitLog=/usr/local/rocketStoreslave/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketStoreslave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketStoreslave/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketStoreslave/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketStoreslave/abort
#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushComsumeQueueThoroughInterval=60000
#broker的角色
#-ASYNC_MASTER异步复制Master
#-SYNC_MASTER同步双写Master
#-SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#-ASYNC_FLUSH:异步刷盘
#-SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=falise
#发消息的线程池数量
#sendMessageThreadPoolNums=128
#拉消息的线程池数量
#pullMessageThreadPoolNums=128

到此worker1机器就配置完毕了

  • 配置worker2

进入worker2机器的RocketMQ的目录下的2m-2s-async的目录下

首先配置broker-b.properties:即进行brokerb的主节点配置

#所属集群名字,名字一样的节点在一个集群
brokerClusterName=DefaultCluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker.b
#brokerId,0表示是master,大于0表示是Slave
brokerId=0
#nameserver地址,分号分割
namesrvAddr=worker0:9876;worker1:9876;worker2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broler自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口
listenPort=10911
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留的时间点,默认48小时
fileReservedTime=120
#commitlog每个文件大小默认为1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件的磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketStore
#commitlog存储路径
storePathCommitLog=/usr/local/rocketStore/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketStore/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketStore/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketStore/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketStore/abort
#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushComsumeQueueThoroughInterval=60000
#broker的角色
#-ASYNC_MASTER异步复制Master
#-SYNC_MASTER同步双写Master
#-SLAVE
brokerRole=SLAVE
#刷盘方式
#-ASYNC_FLUSH:异步刷盘
#-SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=falise
#发消息的线程池数量
#sendMessageThreadPoolNums=128
#拉消息的线程池数量
#pullMessageThreadPoolNums=128

然后配置broker-a-s.properties:即进行brokera的从节点配置

#所属集群名字,名字一样的节点在一个集群
brokerClusterName=DefaultCluster
#broker名字,名字一样的节点就是一组主从节点
brokerName=broker.a
#brokerId,0表示是master,大于0表示是Slave
brokerId=1
#nameserver地址,分号分割
namesrvAddr=worker0:9876;worker1:9876;worker2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broler自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口
listenPort=11011
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留的时间点,默认48小时
fileReservedTime=120
#commitlog每个文件大小默认为1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件的磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketStoreslave
#commitlog存储路径
storePathCommitLog=/usr/local/rocketStoreslave/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/rocketStoreslave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketStoreslave/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketStoreslave/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketStoreslave/abort
#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushComsumeQueueThoroughInterval=60000
#broker的角色
#-ASYNC_MASTER异步复制Master
#-SYNC_MASTER同步双写Master
#-SLAVE
brokerRole=SLAVE
#刷盘方式
#-ASYNC_FLUSH:异步刷盘
#-SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=falise
#发消息的线程池数量
#sendMessageThreadPoolNums=128
#拉消息的线程池数量
#pullMessageThreadPoolNums=128

worker2就到此配置完了

6. 启动集群

  • 启动三个机器的nameserver服务(在bin目录下)
nohup sh ./mqnamesrv &
#观察日志查看是否启动成功
cat -f nohup.out
  • 在worker1上启动broker-a节点和broker-b-s节点
nohup  sh ./mqbroker -c ../conf/2m-2s-async/broker-a.properties &
nohup  sh ./mqbroker -c ../conf/2m-2s-async/broker-b-s.properties &
#查看日志观察是否启动成功
cat -f nohup.out

在这里插入图片描述

  • 在worker2上启动broker-a-s节点和broker-b节点
nohup  sh ./mqbroker -c ../conf/2m-2s-async/broker-a-s.properties &
nohup  sh ./mqbroker -c ../conf/2m-2s-async/broker-b.properties &
#查看日志观察是否启动成功
cat -f nohup.out

集群搭建完成

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

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

相关文章

Windows下nginx的配置与启动

一,下载 http://nginx.org/,打开官网,点击download 选择下载稳定版 二,解压 1,解压到硬盘某个目录 2,由于80端口被占用,于是我要修改conf目录下的nginx.conf文件 查看端口是否被占用 net…

路径规划算法:基于蝴蝶算法的路径规划算法- 附代码

路径规划算法:基于蝴蝶优化的路径规划算法- 附代码 文章目录 路径规划算法:基于蝴蝶优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法蝴蝶…

【C++】类和对象(上):带你速度了解什么是类,如何定义类!!

前言: 前面我们学习C一些基础的内容,也可以说C针对C语言的缺陷进行改进。而今天我们要学的是C的内容也就是类和对象。 一、初识类: 我们先来看看C语言解决一个问题的过程: 假设有以下这个场景:你需要手洗一件衣服&am…

算法Day09 | KMP,28. 实现 strStr() ,459.重复的子字符串

Day09 KMP28. 实现 strStr()459.重复的子字符串 KMP KMP是三个人人名缩写,用于在文本字符串text中搜索pattern字符串,返回在text中第一出现的位置。 算法做法就是在暴力匹配的基础上加速匹配。通过对pattern字符串求next数组(该数组也成为前缀表)&#…

element ui 表格内嵌图片预览展示样式问题 (element plus)

❤️砥砺前行,不负余光,永远在路上❤️ 目录 前言一、问题二、解决 前言 一、问题 二、解决 添加上preview-teleported 属性即可。

ChatGPT ✖️ 前端 = 有点er意思

HOT! HOT! HOT! 🔥 🔥 🔥 ChatGPT登上了国内各大平台的热搜榜,应该在去年11月末的时候就有不少同学了解并使用过,那个时候它刚刚问世,在互联网圈子里有了很大的热度,但是对于大众来说&#xff…

OpenGLES读写图像数据(内存与GPU)——使用PBO

一、什么是PBO 在 OpenGL 开发中,特别是在低端平台上处理高分辨率的图像时,图像数据在内存和显存之前拷贝往往会造成性能瓶颈,而利用 PBO 可以在一定程度上解决这个问题。 PBO (Pixel Buffer Object)是 OpenGL ES 3.…

iOS开发提效cocoapods插件cocoapods-util

cocoapods-util介绍 cocoapods-util是一个iOS开发提效的cocoapods插件。 取名util的原因是我想做一个通用的插件,把一些iOS中常用的命令或问题整理起来。 插件中除了package命令是根据cocoapods-packager插件做了修改而来,其余命令都是属于自己总结开…

uwb高精度定位系统源码 UWB高精度定位技术原理与实现

uwb高精度定位系统 UWB高精度定位技术原理与实现 近些年物联网产业高速发展,越来越多的物联网终端连上了网络,实现了人与物,甚至物与物之间的互连互通。随着智能化要求的进一步提高和物联网应用的进一步拓展,除了互联互通&#x…

Doxygen源码分析:doxygen执行过程的拆解

Doxygen源码分析:doxygen执行过程的拆解 2023-05-19 23:09:17 ~ 2023-05-20 16:38:13 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 Doxygen源码分析:doxygen执行过程的拆解1. doxygen 版本2. doxygen 可执行程序的入口…

System V方案 — 共享内存

目录 System V方案 — 详述共享内存共享内存共享内存的原理共享内存数据结构共享内存函数实例 消息队列消息队列数据结构消息队列函数创建删除 信号量信号量数据结构信号量函数创建删除 进程互斥 总结 System V方案 — 详述共享内存 SystemV标准的进程间通信方式,是…

【react 全家桶】react-Hook(上)

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录 14【react-Hook &#xff08;上&#x…

计算机网络基础知识(六)—— 什么是HTTP协议?你听我说

文章目录 01 | 基本概念02 | 工作原理 && 特点03 | URI && URL04 | 消息结构05 | 请求方法06 | http响应头信息07 | 状态码08 | HTTP的常见安全机制09 | HTTP的缓存机制10 | HTTP/2 && HTTP/3新特性11 | 面试中常见问题 超文本传输协议&#xff08;Hyp…

【前端知识】Cookie, Session,Token和JWT的发展及区别(四)

【前端知识】Cookie, Session,Token和JWT的发展及区别&#xff08;四&#xff09; 9. JWT9.1 JWT的背景及定义&#xff08;1&#xff09;JWT的字面理解&#xff08;2&#xff09;JWT与传统Token的区别 9.2 JWT的组成&#xff08;1&#xff09; Header&#xff08;头部&#xff…

【UDS】诊断故障代码老化机制

文章目录 简介相关术语1. 老化计数器 Ageing counter2. 诊断故障代码已老去 DTC aged3. 已老去计数器 Aged counter4. 操作循环 Operation cycle5. 诊断故障代码老化机制 DTC aging mechanism 总结 ->返回总目录<- 简介 诊断故障代码&#xff08;DTC&#xff09;一旦生…

【IDEA使用指南】使用Hibernate框架的Java项目,如何找到并打开 “Import Database Schema”窗口?

【IDEA使用指南】使用Hibernate框架的Java项目&#xff0c;如何找到并打开 “Import Database Schema”窗口&#xff1f; 背景&#xff1a; 使用 Hibernate 框架时&#xff0c;假如在 “Import Database Schema” 窗口&#xff08;如下图所示&#xff09;时&#xff0c;点击了…

day06_Java中的流程控制语句

流程控制 简单来讲所谓流程就是完成一件事情的多个步骤组合起来就叫做一个流程。在一个程序执行的过程中&#xff0c;各条语句的执行顺序对程序的结果是有直接影响的。我们必须清楚每条语句的执行流程。而且&#xff0c;很多时候要通过控制语句的执行顺序来实现我们想要的功能…

.Net6 使用aspose.cells23.5.0破译

一、测试代码 internal class Program { static void Main(string[] args) { WorkbookDesigner wb new WorkbookDesigner(new Workbook()); var style new CellsFactory().CreateStyle(); style.Borders.SetColor(C…

路径规划算法:基于缎蓝园丁鸟算法的路径规划算法- 附代码

路径规划算法&#xff1a;基于缎蓝园丁鸟优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于缎蓝园丁鸟优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能…