RocketMQ的Docker镜像部署(以及Dashboard的部署、ACL配置)

RocketMQ的Docker镜像部署(以及Dashboard、ACL)

准备

  • 包含RocketMQ部署(NameServer、Broker)、Dashboard、ACL
  • 拉取镜像
    • RocketMQ$ docker pull apache/rocketmq:5.1.4
    • Dashboard$ docker pull apacherocketmq/rocketmq-dashboard:latest
  • 创建docker-network$ docker network create rocketmq-net (如果都部署在同一节点的话需要这样做)

部署 NameServer

  • 创建目录和修改权限
# 创建目录
mkdir -p /opt/soft/rocketmq-5.1.4-docker/namesrv/logs# 修改权限,便于docker容器写入文件
chmod 777 /opt/soft/rocketmq-5.1.4-docker/namesrv/logs
  • 启动 NameServer
docker run -d --name rocketmq-namesrv \
--network rocketmq-net \
--restart=always \
-p 9876:9876 \
-v /opt/soft/rocketmq-5.1.4-docker/namesrv/logs:/home/rocketmq/logs \
-e "MAX_POSSIBLE_HEAP=100000000" \
apache/rocketmq:5.1.4 \
sh mqnamesrv# -v /opt/soft/rocketmq-5.1.4-docker/namesrv/logs:/home/rocketmq/logs \
  • 注意:
    • Docker容器需要有对服务器目录 /opt/soft/rocketmq-5.1.4-docker/namesrv/logs 的写入权限,例如可以提前创建该目录,并设置777权限。后续的-v挂载同理。

部署 Broker

  • 拷贝NameServer容器的中的配置文件到Broker
mkdir -p /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0
docker cp <NameServer的容器ID>:/home/rocketmq/rocketmq-5.1.4/conf /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0
  • 修改Broker配置$ vim /opt/soft/rocketmq-5.1.4-docker/broker/broker-a/conf/broker.conf
# 所属集群名称
brokerClusterName = DefaultCluster
# Broker名称,Master和Slave使用相同的名称(主从关系)
brokerName = broker-a
# 0表示Master,大于0表示不同的Slave
brokerId = 0
# 删除消息的时机,默认是4点
deleteWhen = 04
# 消息持久化在磁盘上的时长(小时)
fileReservedTime = 48
# Master和Slave之间同步数据的机制:SYNC_MASTER、ASYNC_MASTER、SLAVE
brokerRole = ASYNC_MASTER
# 刷盘策略:SYNC_FLUSH 消息写入磁盘后才返回成功状态;ASYNC_FLUSH 不需要等返回成功。
flushDiskType = ASYNC_FLUSH
# 设置Broker节点所在服务器的IP地址(需要连该MQ的外网应当能访问该IP)
brokerIP1 = XXX.XXX.XXX.XXX
# NameServer地址,用分号分割,我们通过Docker的环境变量指定
# namesrvAddr = XXX.XXX.XXX.XXX:9876
# Broker 对外服务的监听端口,默认即可
# listenPort = 10911
# 是否允许 Broker 自动创建 Topic
# autoCreateTopicEnable = true
# 是否允许 Broker 自动创建 订阅组
# autoCreateSubscriptionGroup = true
# 开启鉴权
# aclEnable = true
  • 创建目录和修改权限
# 创建目录
mkdir -p /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/conf
mkdir -p /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/logs
mkdir -p /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/store# 修改权限,便于docker容器写入文件
chmod 777 /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/conf
chmod 777 /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/logs
chmod 777 /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/store
  • 启动 Broker
docker run -d --name rocketmq-broker-a-0 \
--network rocketmq-net \
--restart=always \
--privileged=true \
-p 10911:10911 -p 10909:10909 \
-v /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/conf:/home/rocketmq/rocketmq-5.1.4/conf \
-v /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/logs:/home/rocketmq/logs \
-v /opt/soft/rocketmq-5.1.4-docker/broker/broker-a-0/store:/home/rocketmq/store \
-e "NAMESRV_ADDR=rocketmq-namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
apache/rocketmq:5.1.4 \
sh mqbroker -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf-e "BROKER_IP_1=10.113.75.113" \

部署 其他Broker

  • 和上面的配置类似
  • 调整 broker.conf 中的brokerName、brokerId即可
  • 如果在不同的服务器的话
    • 不用使用 --network rocketmq-net
    • -e "NAMESRV_ADDR=rocketmq-namesrv:9876"中的 rocketmq-namesrv 需要修改为对应服务器的IP
    • 后面Dashboard中的配置同理

部署 Dashboard

  • 创建目录和修改权限
mkdir -p /opt/soft/rocketmq-5.1.4-docker/console/data
chmod 777 /opt/soft/rocketmq-5.1.4-docker/console/data
  • 配置用户名和密码 $ vim /opt/soft/rocketmq-5.1.4-docker/console/data/users.properties
# This file supports hot change, any change will be auto-reloaded without Console restarting.
# Format: a user per line, username=password[,N] #N is optional, 0 (Normal User); 1 (Admin)
# Define Admin
# === 规则「用户名=密码,权限」。权限为1表示管理员,为0表示普通用户 ===
admin=admin123,1
# Define Users
# === 屏蔽下边两个账户 ==
#user1=user1
#user2=user2
  • 启动 Dashboard
# 普通
docker run -d --name rocketmq-console \
--network rocketmq-net \
--restart=always \
-p 10100:8080 \
-v /opt/soft/rocketmq-5.1.4-docker/console/data:/tmp/rocketmq-console/data \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=rocketmq-namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.loginRequired=true" \
apacherocketmq/rocketmq-dashboard:latest# 当-Drocketmq.config.loginRequired为false时,则Dashboard不需要登录用户和密码
# 这里的 rocketmq-namesrv 是NameServer的地址
  • 直接访问http://<Dashboard的IP>:10100,输入前面配置的用户、密码
  • 现在已经可以正常使用了

开启 ACL

修改所有Broker节点

  • 编辑Broker配置文件,命令样例 vim /opt/soft/rocketmq-5.1.4-docker/broker/broker-a/conf/broker.conf
# 配置下面这段
# 开启鉴权
aclEnable = true
  • 编辑ACL配置文件,命令样例 vim /opt/soft/rocketmq-5.1.4-docker/broker/broker-a/conf/plain_acl.yml
globalWhiteRemoteAddresses:# 注释掉全局白名单,所有IP皆可访问,根据自己需求进行控制#- 10.10.103.*#- 192.168.0.*accounts:- accessKey: RocketMQsecretKey: 12345678whiteRemoteAddress:admin: falsedefaultTopicPerm: DENYdefaultGroupPerm: SUBtopicPerms:- topicA=DENY- topicB=PUB|SUB- topicC=SUBgroupPerms:# the group should convert to retry topic- groupA=DENY- groupB=PUB|SUB- groupC=SUB- accessKey: rocketmq2secretKey: 12345678whiteRemoteAddress: 192.168.1.*# if it is admin, it could access all resourcesadmin: true# 添加一个给Dashboard使用的用户- accessKey: consolesecretKey: 12345678whiteRemoteAddress:admin: true
  • 重启Broker节点 $ docker restart <容器ID>

修改 Dashboard 启动命令

  • 移除已部署的Dashboard,样例命令 $ docker rm -f <容器ID>
  • 在启动命令中添加accessKey、secretKey
docker run -d --name rocketmq-console \
--network rocketmq-net \
--restart=always \
-p 10100:8080 \
-v /opt/soft/rocketmq-5.1.4-docker/console/data:/tmp/rocketmq-console/data \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=rocketmq-namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.loginRequired=true -Drocketmq.config.accessKey=console -Drocketmq.config.secretKey=12345678" \
apacherocketmq/rocketmq-dashboard:latest

参考

  • https://github.com/apache/rocketmq-dashboard/blob/master/docs/1_0_0/UserGuide_CN.md
  • https://blog.csdn.net/qq_28929579/article/details/132337504

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

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

相关文章

随机森林 2(决策树)

通过 随机森林 1 的介绍&#xff0c;相信大家对随机森林都有了一个初步的认知&#xff0c;知道了随机和森林分别指的是什么&#xff0c;以及决策树根据什么选择内部节点。本文将会从森林深入到树&#xff0c;去看一下决策树是如何构建的。网上很多文章都讲了决策树如何构建&…

Linux常用基本命令(三)

一、显示命令 1. cat 通式&#xff1a;cat 选项 文件名 只能看普通的文本文件 缺点&#xff1a;如果内容过多会显示不全 选项效果-n显示行号包括空行-b跳过空白行编号-s讲所有的连续的多个空行替换为一个空行&#xff08;压缩成一个空行&#xff09;-A显示隐藏字符 三个标准文件…

如何在服务器上部署springboot项目

在服务器上部署Spring Boot项目通常有以下步骤&#xff1a; 在服务器上安装Java运行环境&#xff1a;首先确保服务器上已经安装了Java运行环境&#xff08;至少需要Java 8或以上版本&#xff09;。 快速安装JDK命令&#xff1a; yum install java-1.8.0-openjdk.x86_64 打包S…

设计模式之-装饰模式,快速掌握装饰模式,通俗易懂的讲解装饰模式以及它的使用场景

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式&#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;每一种模式的概念、使用…

【XR806开发板试用】通过http请求从心知天气网获取天气预报信息

1. 开发环境搭建 本次评测开发环境搭建在windows11的WSL2的Ubuntu20.04中&#xff0c;关于windows安装WSL2可以参考文章: Windows下安装Linux(Ubuntu20.04)子系统&#xff08;WSL&#xff09; (1) 在WSL的Ubuntu20.04下安装必要的工具的. 安装git: sudo apt-get install git …

【UML】第9篇 类图(概念、作用和抽象类)(1/3)

目录 一、类图的概念 二、类图的主要作用 三、类图的构成 3.1 类的名称 3.2 抽象类&#xff08;Abstract Class&#xff09; 一、类图的概念 类图是UML模型中静态视图。它用来描述系统中的有意义的概念&#xff0c;包括具体的概念、抽象的概念、实现方面的概念等。静态视…

JavaScript(ES6进阶部分)

JavaScript(ES6进阶部分) 简介 ES6泛指从2015年之后的所有ES版本&#xff0c;含义就是5.1版本以后JS的下一代标准ES是JS的规格&#xff0c;JS是ES的实现标准委员会(TC39委员会) 批准修改语法&#xff0c;使其从提案变成正式标准 %% ES6带来了许多新特性&#xff0c;之后要学的…

服务器数据恢复-误操作导致xfs分区数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌OceanStorT系列某型号存储MD1200磁盘柜&#xff0c;组建的raid5磁盘阵列。上层分配了1个lun&#xff0c;安装的linux操作系统&#xff0c;划分两个分区&#xff0c;分区一通过lvm进行扩容&#xff0c;分区二格式化为xfs文件系统。 服务器…

ref和$refs,$nextTick异步更新

目录 ref和$refs $nextTick 异步更新 ref和$refs 1.作用 利用ref 和$refs可以用于获取dom元素或组件实例 2.特点 查找范围→当前组件内(更精确稳定) 3.语法 1.给要获取的盒子添加ref属性 <div ref"chartRef">我是渲染图表的容器</div> ⒉.获取时…

深入了解C编译管道

文章目录 引言1. 预处理阶段2. 编译阶段3. 汇编阶段4. 链接阶段5.流程图结论 引言 C编译管道是软件开发中至关重要的工具&#xff0c;它负责将C语言源代码转换为可执行的机器代码。理解C编译管道的工作原理有助于提高代码的可读性、可维护性&#xff0c;并有助于优化生成的可执…

css画三角形

css画三角形 <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"&g…

利用快手的用户数据和精准营销提升电商平台用户转化率和销售额

一、快手用户数据的价值 快手作为国内领先的短视频平台&#xff0c;拥有庞大的用户群体和丰富的用户行为数据。这些数据包括用户的观看习惯、互动行为、兴趣偏好等&#xff0c;对于电商平台来说具有极高的商业价值。通过分析这些数据&#xff0c;电商平台可以深入了解用户需求…

芯科科技以卓越的企业发展和杰出的产品创新获得多项殊荣

2023年共获颁全球及囯內近20个行业奖项 Silicon Labs&#xff08;亦称“芯科科技”&#xff09;日前在全球半导体联盟&#xff08;Global Semiconductor Alliance&#xff0c;GSA&#xff09;举行的颁奖典礼上&#xff0c;再次荣获最受尊敬上市半导体企业奖&#xff0c;这是公…

python调用GPT API

每次让gpt给我生成一个调用api的程序时&#xff0c;他经常会调用以前的一些api的方法&#xff0c;导致我的程序运行错误&#xff0c;所以这期记录一下使用新的方法区调用api 参考网址 Migration Guide&#xff0c;这里简要地概括了一下新版本做了哪些更改 OpenAI Python API l…

WEB 3D技术 three.js 设置图像随窗口大小变化而变化

本文 我们来讲讲我们图层适应窗口变化的效果 可能这样说有点笼统 那么 自适应应该大家更熟悉 就是 当我们窗口发生变化说 做一些界面调整比例 例如 我们这样一个i项目界面 我们打开 F12 明显有一部分被挡住了 那么 我们可以刷新 这样是正常了 但是 我们将F12关掉 给F12的…

Uniapp 开发 BLE

BLE 低功耗蓝牙&#xff08;Bluetooth Low Energy&#xff0c;或称Bluetooth LE、BLE&#xff0c;旧商标Bluetooth Smart&#xff09;&#xff0c;用于医疗保健、运动健身、安防、工业控制、家庭娱乐等领域。在如今的物联网时代下大放异彩&#xff0c;扮演者重要一环&#xff…

PIC单片机项目(8)——基于PIC16F877A的温度光照检测装置的protues仿真

1.功能设计 使用PIC16F877A单片机&#xff0c;进行温度检测、光照检测。温度使用的是DS18B20&#xff0c;光照检测直接利用的AD转换。 光照太暗就开灯&#xff0c;温度太高就开风扇。温度阈值和光照阈值都实时显示在LCD1602屏幕上面。 完成了protues仿真。文件里面包含代码和仿…

Liteos移植_STM32_HAL库

0 开发环境 STM32CubeMX(HAL库)keil 5正点原子探索者STM32F4ZET6LiteOS-develop分支 1 STM32CubeMX创建工程 如果有自己的工程&#xff0c;直接从LiteOS源码获取开始 关于STM32CubeMX的安装&#xff0c;看我另一篇博客STM32CubeMX安装 工程配置 创建新工程 选择芯片【STM32F…

第一次记录QPSK,BSPK,MPSK,QAM—MATLAB实现

最近有偶然的机会学习了一次QPSK防止以后忘记又得找资料&#xff0c;这里就详细的记录一下 基于 QPSK 的通信系统如图 1 所示&#xff0c;QPSK 调制是目前最常用的一种卫星数字和数 字集群信号调制方式&#xff0c;它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为…

第34节: Vue3 调用内联处理程序中的方法

在UniApp中使用Vue3框架时&#xff0c;你可以在模板中直接调用组件内联处理程序中的方法。以下是一个示例&#xff1a; <template> <view> <button click"handleClick">Click me</button> <p>{{ message }}</p> </view&…