docker-compose单机部署rocketmq集群(双主双从,同步双写)

2024-08-27 14:12

本文主要是介绍docker-compose单机部署rocketmq集群(双主双从,同步双写),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.本文以RocketMQ 5.3.0 版本的镜像为例。

2.首先先更新docker,之前旧版docker,导致rocketmq一直起不来,一直报错。

3.安装docker-compose。


服务器环境(目前只用192.168.25.135后期改ip地址即可)
| 1    | 192.168.25.135 | nameserver、brokerserver | Master1、Slave2 |
| ---- | -------------- | ------------------------ | --------------- |
| 2    | 192.168.25.138 | nameserver、brokerserver | Master2、Slave1 |Host添加信息
vim /etc/hosts配置如下:
# nameserver
192.168.25.135 rocketmq-nameserver1
192.168.25.138 rocketmq-nameserver2
# broker
192.168.25.135 rocketmq-master1
192.168.25.135 rocketmq-slave2
192.168.25.138 rocketmq-master2
192.168.25.138 rocketmq-slave1配置完成后, 重启网卡
systemctl restart network开放端口号
* `nameserver` 默认使用 9876 端口
* `master` 默认使用 10911 端口
* `slave` 默认使用11011 端口

4.拉取镜像

docker pull apache/rocketmq:5.3.0


5.创建消息存储路径

mkdir -p /usr/local/rocketmq/broker-1-m/conf
touch    /usr/local/rocketmq/broker-1-m/conf/broker.conf
mkdir -p /usr/local/rocketmq/broker-1-m/logs
mkdir -p /usr/local/rocketmq/broker-1-m/storemkdir -p /usr/local/rocketmq/broker-1-s/conf
touch    /usr/local/rocketmq/broker-1-s/conf/broker.conf
mkdir -p /usr/local/rocketmq/broker-1-s/logs
mkdir -p /usr/local/rocketmq/broker-1-s/storemkdir -p /usr/local/rocketmq/broker-2-m/conf
touch    /usr/local/rocketmq/broker-2-m/conf/broker.conf
mkdir -p /usr/local/rocketmq/broker-2-m/logs
mkdir -p /usr/local/rocketmq/broker-2-m/storemkdir -p /usr/local/rocketmq/broker-2-s/conf
touch    /usr/local/rocketmq/broker-2-s/conf/broker.conf
mkdir -p /usr/local/rocketmq/broker-2-s/logs
mkdir -p /usr/local/rocketmq/broker-2-s/store

6.授权

chmod 777 -R /usr/local/rocketmq

7.修改/usr/local/rocketmq/broker-1-m/conf/broker.conf配置文件

vim /usr/local/rocketmq/broker-1-m/conf/broker.conf
#集群名称
brokerClusterName=rocketmq-cluster
#broker名称
brokerName=broker1
#brokerId master用0 slave用其他
brokerId=0
#清理时机
deleteWhen=4
#文件保留时长 48小时
fileReservedTime=48
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SYNC_MASTER
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#主机ip
brokerIP1=192.168.25.135
#从节点ip(目前是本机ip)
brokerIP2=192.168.25.135
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=10911
#是否能够自动创建topic
autoCreateTopicEnable=true

8.修改/usr/local/rocketmq/broker-2-s/conf/broker.conf配置文件

#集群名称
brokerClusterName=rocketmq-cluster
#broker名称
brokerName=broker2
#brokerId master用0 slave用其他
brokerId=1
#清理时机
deleteWhen=4
#文件保留时长 48小时
fileReservedTime=48
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SLAVE
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#主机ip
brokerIP1=192.168.25.135
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=11911
#是否能够自动创建topic
autoCreateTopicEnable=true

9.修改/usr/local/rocketmq/broker-2-m/conf/broker.conf配置文件

#集群名称
brokerClusterName=rocketmq-cluster
#broker名称
brokerName=broker2
#brokerId master用0 slave用其他
brokerId=0
#清理时机
deleteWhen=4
#文件保留时长 48小时
fileReservedTime=48
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SYNC_MASTER
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#主机ip
brokerIP1=192.168.171.134
#从节点ip(目前是本机ip)
brokerIP2=192.168.25.135
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=12911
#是否能够自动创建topic
autoCreateTopicEnable=true

10.修改/usr/local/rocketmq/broker-1-s/conf/broker.conf配置文件

#集群名称
brokerClusterName=rocketmq-cluster
#broker名称
brokerName=broker1
#brokerId master用0 slave用其他
brokerId=1
#清理时机
deleteWhen=4
#文件保留时长 48小时
fileReservedTime=48
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SLAVE
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#主机ip
brokerIP1=192.168.25.135
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=13911
#是否能够自动创建topic
autoCreateTopicEnable=true

11.新建docker-compose文件

touch /usr/local/rocketmq/docker-compose.yml
vim /usr/local/rocketmq/docker-compose.yml

12.粘贴以下内容到docker-compose.yml

version: "3"
services:mqnamesrv:image: apache/rocketmq:5.3.0container_name: mqnamesrvports:- 9876:9876environment:JAVA_OPT_EXT: "-Duser.home=/opt -Xms512m -Xmx512m -Xmn150m"command: sh mqnamesrvmqbroker-1-m:image: apache/rocketmq:5.3.0container_name: mqbroker-1-mports:- 10911:10911- 10909:10909- 10912:10912volumes:- /usr/local/rocketmq/broker-1-m/conf/broker.conf:/home/rocketmq/conf/broker.conf- /usr/local/rocketmq/broker-1-m/logs:/home/rocketmq/logs- /usr/local/rocketmq/broker-1-m/store:/home/rocketmq/storeenvironment:NAMESRV_ADDR: "mqnamesrv:9876"JAVA_OPTS: " -Duser.home=/opt"JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"command: sh mqbroker -c /home/rocketmq/conf/broker.confdepends_on:- mqnamesrvmqbroker-2-s:image: apache/rocketmq:5.3.0container_name: mqbroker-2-sports:- 11911:11911- 11909:11909- 11912:11912volumes:- /usr/local/rocketmq/broker-2-s/conf/broker.conf:/home/rocketmq/conf/broker.conf- /usr/local/rocketmq/broker-2-s/logs:/home/rocketmq/logs- /usr/local/rocketmq/broker-2-s/store:/home/rocketmq/storeenvironment:NAMESRV_ADDR: "mqnamesrv:9876"JAVA_OPTS: " -Duser.home=/opt"JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"command: sh mqbroker -c /home/rocketmq/conf/broker.confdepends_on:- mqnamesrvmqbroker-2-m:image: apache/rocketmq:5.3.0container_name: mqbroker-2-mports:- 12911:12911- 12909:12909- 12912:12912volumes:- /usr/local/rocketmq/broker-2-m/conf/broker.conf:/home/rocketmq/conf/broker.conf- /usr/local/rocketmq/broker-2-m/logs:/home/rocketmq/logs- /usr/local/rocketmq/broker-2-m/store:/home/rocketmq/storeenvironment:NAMESRV_ADDR: "mqnamesrv:9876"JAVA_OPTS: " -Duser.home=/opt"JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"command: sh mqbroker -c /home/rocketmq/conf/broker.confdepends_on:- mqnamesrvmqbroker-1-s:image: apache/rocketmq:5.3.0container_name: mqbroker-1-sports:- 13911:13911- 13909:13909- 13912:13912volumes:- /usr/local/rocketmq/broker-1-s/conf/broker.conf:/home/rocketmq/conf/broker.conf- /usr/local/rocketmq/broker-1-s/logs:/home/rocketmq/logs- /usr/local/rocketmq/broker-1-s/store:/home/rocketmq/storeenvironment:NAMESRV_ADDR: "mqnamesrv:9876"JAVA_OPTS: " -Duser.home=/opt"JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"command: sh mqbroker -c /home/rocketmq/conf/broker.confdepends_on:- mqnamesrvmqconsole:image: styletang/rocketmq-console-ng:1.0.0container_name: mqconsoleports:- 19876:8080environment:JAVA_OPTS: -Drocketmq.namesrv.addr=mqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=falsesdepends_on:- mqnamesrv

13.在docker-compose.yml文件所在目录运行docker-compose.yml

docker-compose up -d

14.查看容器是否启动成功

docker ps
docker logs -f (容器id)

15.显示成功,就是成功了。

16.打开ip:19876

16.注意,记得把以上ip地址换成自己的。如果是云服务器,则需要把以上的端口都打开。注意路径不要错了。

这篇关于docker-compose单机部署rocketmq集群(双主双从,同步双写)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111897

相关文章

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

查看MySql主从同步的偏移量方式

《查看MySql主从同步的偏移量方式》:本文主要介绍查看MySql主从同步的偏移量方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 1.mysql的主从同步方案mysqlphp为了在实现读写分离,主库写,从库读mysql的同步方案主要是通过从库读取主库的binl

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.