docker-compose搭建RocketMq集群

news2024/11/27 8:30:22

集群架构:双主

机器:172.50.2.41 

           172.50.2.42

一、创建目录

mkdir -p /docker/alibaba/rocketmq/logs/nameserver
mkdir -p /docker/alibaba/rocketmq/logs/broker
mkdir -p /docker/alibaba/rocketmq/store/broker
mkdir -p /docker/alibaba/rocketmq/broker/
mkdir -p /docker/alibaba/rocketmq/console-ng/data

设置权限

chmod 777 -R /docker/alibaba/rocketmq/logs/*
chmod 777 -R /docker/alibaba/rocketmq/store/*

注意:这里如果不设置权限,会导致docker写入文件失败,导致rocketmq启动异常。

二、创建broker.conf

vim /docker/alibaba/rocketmq/broker/broker.conf

编辑内容,这里需要根据自己的实际环境做适当修改
注意:brokerIP1,namesrvAddr,这2个参数,一般配置为内网ip,提供内网访问。如果需要公网访问,这里一定要配置公网ip,否则无法访问。

1、第一个节点broker.conf

brokerClusterName = rocketmq-cluster
brokerName = broker-a
brokerId = 0
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
brokerIP1 = 172.50.2.41
deleteWhen = 04
fileReservedTime = 48
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr = 172.50.2.41:9876;172.50.2.42:9876
autoCreateTopicEnable=true
#Broker 对外服务的监听端口,
listenPort = 10911
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole = ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType = ASYNC_FLUSH

2、第二个节点broker.conf

brokerClusterName = rocketmq-cluster
brokerName = broker-b
brokerId = 0
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
brokerIP1 = 172.50.2.42
deleteWhen = 04
fileReservedTime = 48
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr = 172.50.2.41:9876;172.50.2.42:9876
autoCreateTopicEnable=true
#Broker 对外服务的监听端口,
listenPort = 10911
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole = ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType = ASYNC_FLUSH

3、编辑rocketmq的docker-compose.yml文件

version: '3.9'
services:
  rmqnamesrv:
    image: apache/rocketmq:4.9.4
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    network_mode: "host"
    privileged: true
    volumes:
      #- /docker/alibaba/rocketmq/logs/nameserver:/home/rocketmq/logs
      - /docker/alibaba/rocketmq/broker/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf
    command: sh mqnamesrv

  rmqbroker:
    image: apache/rocketmq:4.9.4
    container_name: rmqbroker
    ports:
      - 10911:10911
    network_mode: "host"
    privileged: true
    volumes:
     # - /docker/alibaba/rocketmq/logs/broker/logs:/home/rocketmq/logs
     # - /docker/alibaba/rocketmq/store/broker/store:/home/rocketmq/store
      - /docker/alibaba/rocketmq/broker/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf
    environment:
      TZ: Asia/Shanghai
      NAMESRV_ADDR: "rmqnamesrv:9876"
      JAVA_OPTS: " -Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf

3、编辑rocketmq-dashboard的docker-compose.yml文件(新版改了,好像叫rocketmq-console)

version: '3.9'
services:
  rmqconsole:
    image: apacherocketmq/rocketmq-dashboard
    container_name: rmqconsole
    ports:
      - 8087:8087
    network_mode: "host"
    privileged: true
    environment:
      JAVA_OPTS: -Dserver.port=8087 -Drocketmq.namesrv.addr=172.50.2.41:9876;172.50.2.42:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.accessKey=rocketmq2 -Drocketmq.config.secretKey=12345678
    volumes:
      - /docker/alibaba/rocketmq/console-ng/data:/tmp/rocketmq-console/data
    network_mode: "host"
    privileged: true

4、启动

注意:启动之前一定要开放端口,不然会出现集群不通的情况

#批量添加多个端口
firewall-cmd --permanent --add-port=8087/tcp --add-port=9876/tcp --add-port=10911/tcp
 
# 防火墙重载
firewall-cmd --reload
docker-compose up -d

5、访问控制台

 

四、数据持久化

上面的 docker-compose.yml,注释掉了一些文件挂载操作,因为新版本的rocketmq无法启动创建文件,直接挂载一个空目录,会启动报错。

复制docker里面的文件

docker cp rmqnamesrv:/home/rocketmq/logs /docker/alibaba/rocketmq/logs/nameserver
docker cp rmqbroker:/home/rocketmq/logs /docker/alibaba/rocketmq/logs/broker
docker cp rmqbroker:/home/rocketmq/store /docker/alibaba/rocketmq/store/broker

再执行一遍设置权限,否则会写入文件失败,造成启动失败。

chmod 777 -R /docker/alibaba/rocketmq/logs/*
chmod 777 -R /docker/alibaba/rocketmq/store/*

关闭相关docker进程

docker stop rmqnamesrv rmqbroker

修改docker-compose.yml,开启持久化配置

version: '3.9'
services:
  rmqnamesrv:
    image: apache/rocketmq:4.9.4
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    network_mode: "host"
    privileged: true
    volumes:
      - /docker/alibaba/rocketmq/logs/nameserver:/home/rocketmq/logs
      - /docker/alibaba/rocketmq/broker/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf
    command: sh mqnamesrv

  rmqbroker:
    image: apache/rocketmq:4.9.4
    container_name: rmqbroker
    ports:
      - 10911:10911
    network_mode: "host"
    privileged: true
    volumes:
      - /docker/alibaba/rocketmq/logs/broker/logs:/home/rocketmq/logs
      - /docker/alibaba/rocketmq/store/broker/store:/home/rocketmq/store
      - /docker/alibaba/rocketmq/broker/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf
    environment:
      TZ: Asia/Shanghai
      NAMESRV_ADDR: "rmqnamesrv:9876"
      JAVA_OPTS: " -Duser.home=/opt"
      JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf

五、重新启动

docker-compose up -d

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

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

相关文章

通过Appium和Accessibility Inspector获取iOS应用元素定位的方法

在 iOS 移动应用程序上使用选择器查找元素定位是我们在移动端 UI 自动化测试的先决条件。 但是,由于应用程序内容在原生 iOS 应用程序中的呈现方式,我们可以用来定位应用程序元素的选择器与 Web 浏览器元素有很大不同。 在本文中,我们将了解 …

Spring Boot 日志文件有什么用

目录 一、自定义打印日志 1.1 日志框架说明 1.2 实现自定义打印日志 1.3 日志的格式说明 2.1 日志的级别 2.2 设置日志级别的作用: 2.3 如何设置日志的级别 二、 日志的持久化 3.1 设置日志保存路径 (在 .yml 配置文件中设置日志保存路径&…

一、二维前缀和算法

文章目录 前缀和模板724. 寻找数组的中心下标238. 除自身以外数组的乘积560. 和为 K 的子数组974. 和可被 K 整除的子数组525. 连续数组1314. 矩阵区域和 前缀和模板 一维前缀和: import java.util.*;public class Main {public static void main(String[] args) …

docker-compose启动minio

一、创建文件夹 mkdir -p /docker/stand-alone-minio/data mkdir -p /docker/stand-alone-minio/configchmod 777 -R /docker/stand-alone-minio/data chmod 777 -R /docker/stand-alone-minio/config 二、docker-compose.yml version: 3.9services:minio:image: minio/mini…

【Vue3基础】计算属性

一、需求 二、代码 1、创建项目 创建项目: 1、 npm init vuelatest 2、一路回车 3、输入项目名,不要大写,如vue3bilibili 4、 cd vue3bilibili 5、 npm install 6、npm run dev启动,可以获取网址 2、App.vue文件中:…

UNIX网络编程卷一 学习笔记 第二十五章 信号驱动式IO

信号驱动式IO指进程预先告知内核,当某个描述符上发生某事时,内核使用信号通知相关进程,它在历史上曾被称为异步IO,但信号驱动式IO不是真正的异步IO,真正的异步IO通常定义为进程执行IO系统调用告知内核启动某个IO操作&a…

Kafka-partition和消费者的关系

Kafka-partition 目录概述需求: 设计思路实现思路分析1.Kafka-partition2.消费者数量小于分区数量3. 拓展实现 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a…

五笔打字练习经验总结

背景 我之前对键盘不太熟悉,打字的速度我测了一下大概是在30/m的样子,于是想提高自己的打字速度,就练习了下,现在大概到了60/m。由于自己打字拼音打字错误率较高,因为手指键位练习不到位,已经很难纠正了。所…

LeetCode[148]排序链表

难度:Medium 题目: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出&…

IOR的安装及使用

简介 IOR 是一种并行 IO 基准测试,可用于测试使用各种接口和访问模式的并行存储系统的性能。IOR存储库还包括mdtest基准测试,专门测试不同目录结构下存储系统的峰值元数据速率。两个基准测试都使用通用并行 I/O 抽象后端,并依赖 MPI 进行同步…

Vue复选框、下拉框使用案例,复选框选项元素(el-checkbox)换行竖向显示

一、复选框 1、<el-checkbox-group></el-checkbox-group>的选项元素默认是行横向显示 <el-checkbox-groupv-model"additionalPermissionsParams.permissionList"change"permissionChange($event)"><el-checkbox label"10"…

c++学习(红黑树)[20]

概念 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff0c;它在插入和删除节点时通过一系列的旋转和重新着色操作来保持树的平衡。红黑树的平衡性质使得它在插入、删除和查找等操作上具有较好的性能。 红黑树具有以下特点&#xff1a; 每个节…

【项目开发】商城 - 三级分类 - 简单笔记

目录标题 后端业务类实体类 前端最终实现效果排序变化批量删除 后端 业务类 // 省略其他简单的CRUDOverridepublic List<CategoryEntity> listWithTree() {// 1、查出所有分类List<CategoryEntity> list baseMapper.selectList(null);// 2. 找出所有的一级分类Li…

NOAA官网下载的气象雷达原始数据转化为NC文件详细步骤

一、准备工作 1.先在NOAA官网下载好气象雷达原始数据 NOAA官网下载气象雷达资料详细步骤_珞瑜的博客-CSDN博客 下载好的雷达数据有两种类型Level-2和Level-3。 如上图所示,为气象雷达数据的Level-2产品,站点名字:K

springboot mybatis-plus 多数据源配置(HikariCP)

1.导入依赖jar <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgres…

iOS--虚拟内存

参考文章 要想了解什么是VM Regions&#xff0c;就得先了解什么是虚拟内存。当我们向系统申请内存时&#xff0c;系统并不会给你返回物理内存的地址&#xff0c;而是给你一个虚拟内存地址。每个进程都拥有相同大小的虚拟地址空间&#xff0c;对于32位的进程&#xff0c;可以拥有…

【N32L40X】学习笔记06-串口dma空闲中断+dma接收数据

串口dma 8 个可独立配置的 DMA 通道。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VchCudlf-1689952378831)(./picture/dma.png)] 实例代码 串口dma使用的是串口绑定方式实现串口的dma数据传输 bsp_uart_dma.h #ifndef _BSP_UART_DMA_H_ #def…

STM32(HAL库)驱动(1.44寸)TFT-LCD彩屏

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 屏幕引脚配置 2.3 项目生成 3、KEIL端程序整合 3.1 LCD驱动添加 3.2 函数修改 3.2.1 lcd.h修改 3.2.2 lcd_innit.h 修改 3.2.3 lcd.c修改 3.2.4 lcd_inut.c修改 3.3 主函数代码 3.3…

网络安全(零基础)自学

一、网络安全基础知识 1.计算机基础知识 了解了计算机的硬件、软件、操作系统和网络结构等基础知识&#xff0c;可以帮助您更好地理解网络安全的概念和技术。 2.网络基础知识 了解了网络的结构、协议、服务和安全问题&#xff0c;可以帮助您更好地解决网络安全的原理和技术…

Spring Cloud Alibaba 集成 Skywalking 链路追踪

Spring Cloud Alibaba 集成 Skywalking 链路追踪 简介 skywalking 是一个国产开源框架&#xff0c;2015 年由吴晟开源 &#xff0c; 2017 年加入 Apache 孵化器。skywalking 是分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Doc…