Docker部署RocketMQ超详细步骤(图文并茂)
作者:水蓝烟雨
RocketMQ 是一款开源的分布式消息队列系统,具有低延迟、高并发、高可用等特性,这篇文章主要介绍了Docker部署RocketMQ超详细步骤的相关资料,通过这些步骤,用户可以成功搭建一个RocketMQ集群,并通过控制台进行管理和监控,需要的朋友可以参考下
部署 RocketMQ ( Docker )
[Step 1] :拉取 RocketMQ 镜像
docker pull apache/rocketmq:5.1.0
[Step 2] : 创建容器共享网络 rocketmq
docker network create rocketmq
为什么要创建 docker 共享网络?
- 容器间通信:创建一个 Docker 网络可以确保同一个网络中的容器可以通过容器名称进行通信,而不需要知道对方的 IP 地址。这对于需要相互通信的服务非常重要,比如 RocketMQ 的多个组件(如 NameServer 和 Broker)。
- 隔离性和安全性:Docker 网络提供了一个隔离的网络环境,不同网络中的容器彼此隔离。这增加了安全性,防止外部或其他不相关的容器访问敏感服务。
- 简化配置:使用 Docker 网络,配置变得更加简单。容器可以通过名称互相访问,无需担心容器重启后 IP 地址发生变化。
[Step 3] : 部署 NameServer 前提条件
创建目录➡️ 授予文件 ➡️ 创建容器 ➡️ 拷贝启动脚本 ➡️ 删除容器
# 创建目录 mkdir -p /data/rocketmq/nameserver/{bin,logs} # 授权文件 chmod 777 -R /data/rocketmq/nameserver/* # 创建容器 docker run -d \ --privileged=true --name rmqnamesrv \ apache/rocketmq:5.1.0 sh mqnamesrv # 拷贝启动脚本 docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /data/rocketmq/nameserver/bin/ # 删除容器 NameServer docker rm -f rmqnamesrv
[Step 4] : 启动容器 NameServer
# 启动容器 NameServer docker run -d --network rocketmq \ --privileged=true --restart=always \ --name rmqnamesrv -p 9876:9876 \ -v /data/rocketmq/nameserver/logs:/home/rocketmq/logs \ -v /data/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh \ apache/rocketmq:5.1.0 sh mqnamesrv # 部分命令解释 : 1. -e "MAX_HEAP_SIZE=256M" 设置最大堆内存和堆内存初始大小 2. -e "HEAP_NEWSIZE=128M" 设置新生代内存大小 # 查看启动日志 docker logs -f rmqnamesrv
[Step 5] : 查看 NameServer 启动日志
- 看到 ‘The Name Server boot success…’, 表示NameServer 已成功启动。
[Step 6] : 部署 Broker + Proxy
- 创建挂载文件夹并授权
mkdir -p /data/rocketmq/broker/{store,logs,conf,bin} chmod 777 -R /data/rocketmq/broker/*
[Step 7] : 创建broker.cnf文件
vim /data/rocketmq/broker/conf/broker.conf # nameServer 地址多个用;隔开 默认值null # 例:127.0.0.1:6666;127.0.0.1:8888 namesrvAddr = 192.168.100.100:9876 # 集群名称 brokerClusterName = DefaultCluster # 节点名称 brokerName = broker-a # broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 brokerId = 0 # Broker服务地址 String 内部使用填内网ip,如果是需要给外部使用填公网ip brokerIP1 = 192.168.100.100 # Broker角色 brokerRole = ASYNC_MASTER # 刷盘方式 flushDiskType = ASYNC_FLUSH # 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04 deleteWhen = 04 # 以小时计算的文件保留时间 默认值72小时 fileReservedTime = 72 # 是否允许Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true # 是否允许Broker自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true # 禁用 tsl tlsTestModeEnable = false # 下面是没有注释的版本, 记得修改"namesrvAddr", "brokerIP1"的地址 namesrvAddr = 192.168.100.233:9876 brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 brokerIP1 = 192.168.100.233 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH deleteWhen = 04 fileReservedTime = 72 autoCreateTopicEnable=true autoCreateSubscriptionGroup=true tlsTestModeEnable = false
[Step 8] : 拷贝启动脚本
# 启动 Broker 容器 docker run -d \ --name rmqbroker --privileged=true \ apache/rocketmq:5.1.0 sh mqbroker # 拷贝脚本文件 docker cp rmqbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /data/rocketmq/broker/bin
[Step 9] : 启动容器 Broker
# 删除容器 Broker docker rm -f rmqbroker # 启动容器 Broker docker run -d --network rocketmq \ --restart=always --name rmqbroker --privileged=true \ -p 10911:10911 -p 10909:10909 \ -v /data/rocketmq/broker/logs:/root/logs \ -v /data/rocketmq/broker/store:/root/store \ -v /data/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \ -v /data/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh \ -e "NAMESRV_ADDR=rmqnamesrv:9876" \ apache/rocketmq:5.1.0 sh mqbroker --enable-proxy -c /home/rocketmq/broker.conf # 查看启动日志 docker logs -f rmqbroker
- 启动成功日志如下
[Step 10] : 部署RocketMQ控制台(rocketmq-dashboard)
- 拉取镜像
docker pull apacherocketmq/rocketmq-dashboard:latest
[Step 11] : 启动容器 Rocketmq-dashboard
docker run -d \ --restart=always --name rmq-dashboard \ -p 8080:8080 --network rocketmq \ -e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ apacherocketmq/rocketmq-dashboard
[Step 12] : 查看启动日志
docker logs -f rmq-dashboard
[Step 13] : 访问RMQ控制台
- http://192.168.100.233:8080/ ( IP地址改成自己的 )
[Step 14] : 查看创建的 RocketMQ
总结
到此这篇关于Docker部署RocketMQ超详细步骤的文章就介绍到这了,更多相关Docker部署RocketMQ内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!