基于docker容器搭建rocketmq集群(3主三从)

编程入门 行业动态 更新时间:2024-10-10 14:27:48

基于docker容器搭建rocketmq<a href=https://www.elefans.com/category/jswz/34/1771240.html style=集群(3主三从)"/>

基于docker容器搭建rocketmq集群(3主三从)

基于docker容器搭建rocketmq集群(3主三从)

一、安装前准备

本文所需文件免费提供地址:
觉得作者不错的还请点个关注,后续还有博客上新。

1.1、服务器准备

本次集群搭建使用docker容器模拟服务器资源,因为要搭建三主三从集群,因此需要准备三个docker容器充当三台服务器资源。

本文中的容器使用搭建redis集群的三台容器,本次准备使用三台容器模拟中间件服务器,在三个容器中搭建三个中间件集群,本篇博客为第二个中间件—rocketmq。具体的容器准备(局域网搭建、ip分配、容器环境)见上篇博客基于docker容器搭建redis集群(3主三从)。

本次规划上做三主三从,每台服务器做一主一从,启动一个nameserver(默认9876)和两个broker(10911,10900),因此需要两个broker端口一个nameserver端口。

服务器资源IP端口备注
10.25.27.116broker-a:10911;broker-b-s:10900;nameserver:9876
10.25.27.117broker-b:10911;broker-c-s:10900;nameserver:9876
10.25.27.118broker-c:10911;broker-a-s:10900;nameserver:9876

三个broker主节点分别为broker-a、broker-b,broker-c,三个从节点分别为broker-a-s,broker-b-s,broker-c-s,主节点和从节点分别部署到不同的服务器上。

1.2、安装软件准备

序号软件名称功能用途
1jdk1.8.0_152RocketMq运行环境
2apache-rocketmq.4.3.2分布式消息和流处理平台

二、软件安装

2.1、jdk1.8安装

Rocketmq是由java开发,所以运行rocketmq需要安装java运行环境jdk,本次采用jdk1.8.0_152,将下载的压缩包上传到用户目录下/home/test01/java

1、解压文件
cd /home/test01/java
tar -zxvf jdk1.8.0_152.tar.gz
2、配置环境变量
vim ~/.bash_profileexport JAVA_HOME=/home/test01/java/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
3、使配置立刻生效
source ~/.bash_profile

输入java,javac等命令进行测试

2.2、apache-rocketmq.4.3.2安装

1、到用户目录下创建rocketmq目录

mkdir -p /home/test01/rocketmq

2、将apache-rocketmq.4.3.2.tar.gz安装包上传到/home/test01/software目录下,解压安装包到目录/home/test01/rocketmq/

tar -zxvf apache-rocketmq.4.3.2.tar.gz -C /home/test01/rocketmq/

3、配置环境变量

vim ~/.bash_profileexport ROCKETMQ_HOME=/home/test01/rocketmq/apache-rocketmq-4.3.2
export PATH=$ROCKETMQ_HOME/bin:$PATHsource ~/.bash_profile

三、配置及启动rocketmq

3.1、配置创建集群的相关文件

1、创建文件目录结构

# 创建集群配置文件存放的目录
mkdir -p /home/test01/rocketmq/conf/clusterconf# 创建集群节点的日志相关文件路径
#主节点
mkdir -p /home/test01/rocketmq/data/broker-a-m/commitlog
mkdir -p /home/test01/rocketmq/data/broker-a-m/consumequeue
mkdir -p /home/test01/rocketmq/data/broker-a-m/index
#从节点
mkdir -p /home/test01/rocketmq/data/broker-b-s/commitlog
mkdir -p /home/test01/rocketmq/data/broker-b-s/consumequeue
mkdir -p /home/test01/rocketmq/data/broker-b-s/index# 打印启动日志(可选)
mkdir -p /home/test01/rocketmq/logs

注意:另外两个服务器根据规划,10.25.27.117创建的是broker-b-m和broker-c-s,10.25.27.118创建的是broker-c-m和broker-a-s,a,b,c代表三个broker的名称,m为主节点,s为从节点。也可以根据自己需求进行自定义命名规范,但是下面的配置文件也要随之改变。

2、配置主机broker-a.properties文件

进入/home/test01/rocketmq/conf/clusterconf目录下,使用vim创建并编辑broker-a.properties文件

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字
brokerName=broker-a
#集群中 0 表示 Master,>0 表示 Slave
brokerId=0
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE 从节点
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#指定broker的IP(根据实际情况填写)
brokerIP1=10.25.27.116
#nameServer地址,集群用分号分割,域名1:9876; 域名2:9876; 域名3:9876(根据实际情况填写)
namesrvAddr=10.25.27.116:9876;10.25.27.117:9876;10.25.27.118:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/test01/rocketmq/data/broker-a-m
#commitLog 存储路径
storePathCommitLog=/home/test01/rocketmq/data/broker-a-m/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/test01/rocketmq/data/broker-a-m/consumequeue
#消息索引存储路径
storePathIndex=/home/test01/rocketmq/data/broker-a-m/index
#checkpoint 文件存储路径
storeCheckpoint=/home/test01/rocketmq/data/checkpoint
#abort 文件存储路径
abortFile=/home/test01/rocketmq/data/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessaeThreadPoolNums=128#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=300  #或者更大

3、配置从机broker-b-s.properties文件

进入/home/test01/rocketmq/conf/clusterconf目录下,使用vim创建并编辑broker-b-s.properties文件

# 所属集群名称
brokerClusterName=rocketmq-cluster
# broker名称
brokerName=broker-b
#broker的角色
# 集群中0表示Master,>0表示Slave
brokerId=1# broker的数据规则
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER同步双写Master
#- SLAVE
brokerRole=SLAVE# 刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH# 指定broker的IP
brokerIP1=10.25.27.116
#nameServer地址,集群用分号分割
namesrvAddr=10.25.27.116:9876;10.25.27.117:9876;10.25.27.118:9876# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4# 是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false# broker对外服务的监听端口
listenPort=10900# 删除文件时间点,默认凌晨四点
deleteWhen=04# 文件保留时间,默认48小时
fileReservedTime=48# commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/test01/rocketmq/data/broker-b-s#commitLog存储路径
storePathCommitLog=/home/test01/rocketmq/data/broker-b-s/commitlog
#消费队列存储路径
storePathConsumeQueue=/home/test01/rocketmq/data/broker-b-s/consumequeue
#消息索引存储路径
storePathIndex=/home/test01/rocketmq/data/broker-b-s/index
#checkpoint文件存储路径
storeCheckpoint=/home/test01/rocketmq/data/broker-b-s/checkpoint
#abort文件存储路径
abortFile=/home/test01/rocketmq/data/broker-b-s/abort#限制消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#checkTransactionMessageEnable=false#发送消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=300

116服务器配置完毕后,另外两台服务器也根据规划分别进行相应的配置,主要注意broker名称、brokerid、角色、ip、监听端口、文件目录的区别。也可以使用scp将整个目录拷贝到另外两个服务器后进行配置及目录的修改。

3.2、修改启动内存

因为rocket默认启动内存比较大,因此需要修改启动内存,实际生产中根据需要进行修改,本次为测试搭建,虚拟机内存较小,所以我们把启动内存减小。

进入/home/test01/rocketmq/apache-rocketmq-4.3.2/bin目录下

分别修改runbroker.sh和runserver.sh文件,将jvm启动参数修改为合适大小然后保存。

3.3、启动nameserver

进入/home/test01/rocketmq/apache-rocketmq-4.3.2/bin目录下

#三台服务器都执行启动#nohup表示以守护程序运行,&表示后台运行
nohup sh mqnamesrv &#执行后使用jps查看启动结果,或者查看nohup.out文件查看启动日志

3.4、启动broker

进入/home/test01/rocketmq/apache-rocketmq-4.3.2/bin目录下

#116服务器
#执行后使用jps查看启动结果,或者查看nohup.out文件查看启动日志
nohup sh mqbroker -c /home/test01/rocketmq/conf/clusterconf/broker-a.properties &
nohup sh mqbroker -c /home/test01/rocketmq/conf/clusterconf/broker-b-s.properties &#另外两台也对应启动broker
#117
nohup sh mqbroker -c /home/test01/rocketmq/conf/clusterconf/broker-b.properties &
nohup sh mqbroker -c /home/test01/rocketmq/conf/clusterconf/broker-c-s.properties &
#118
nohup sh mqbroker -c /home/test01/rocketmq/conf/clusterconf/broker-c.properties &
nohup sh mqbroker -c /home/test01/rocketmq/conf/clusterconf/broker-a-s.properties &

注意:防火墙一定要开放所使用的端口。

四、安装rocketmq监控台(可选)

为方便管理我们在116服务器上安装rocketmq-console,并查看集群运行情况。

4.1、下载rocketmq-console

使用浏览器下载rocketmq-console.zip压缩包,在本地解压

4.2、配置访问端口及集群地址

进入rocketmq-console\src\main\resources目录下,打开application.properties文件进行编辑(根据自己情况进行配置)

4.3、编译打包

打开命令窗口进入rocketmq-console目录下执行(需安装有maven)

mvn clean package -Dmaven.test.skip=true

在rocketmq-console\target目录下会生成rocketmq-console-ng-1.0.1.jar文件

4.4、上传启动

将上面生成的jar包上传到116服务器上的/home/test01/rocketmq目录下,然后启动

nohup java -jar rocketmq-console-ng-1.0.1.jar &

注意:因为我们使用的是docket容器模拟的服务器,所以我们需要将访问端口(我的是9898)进行端口映射,即将容器的端口映射到宿主机对应端口,然后使用浏览器访问宿主机的对应端口即可。对于如何为容器追加端口映射可以自行百度或参考:

浏览器访问后查看集群信息可以看到三主三从集群搭建成功。

更多推荐

基于docker容器搭建rocketmq集群(3主三从)

本文发布于:2024-03-08 21:40:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722487.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:集群   容器   docker   rocketmq

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!