0


Docker 部署 RocketMQ (图文并茂超详细)

部署 RocketMQ ( Docker )

[Step 1] :拉取 RocketMQ 镜像

  1. docker pull apache/rocketmq:5.1.0

[Step 2] : 创建容器共享网络 rocketmq

  1. docker network create rocketmq

为什么要创建 docker 共享网络?

  • 容器间通信:创建一个 Docker 网络可以确保同一个网络中的容器可以通过容器名称进行通信,而不需要知道对方的 IP 地址。这对于需要相互通信的服务非常重要,比如 RocketMQ 的多个组件(如 NameServer 和 Broker)。
  • 隔离性和安全性:Docker 网络提供了一个隔离的网络环境,不同网络中的容器彼此隔离。这增加了安全性,防止外部或其他不相关的容器访问敏感服务。
  • 简化配置:使用 Docker 网络,配置变得更加简单。容器可以通过名称互相访问,无需担心容器重启后 IP 地址发生变化。

[Step 3] : 部署 NameServer 前提条件

创建目录➡️授予文件 ➡️ 创建容器 ➡️ 拷贝启动脚本 ➡️ 删除容器

  1. # 创建目录mkdir-p /data/rocketmq/nameserver/{bin,logs}# 授权文件chmod777-R /data/rocketmq/nameserver/*
  2. # 创建容器docker run -d\--privileged=true --name rmqnamesrv \
  3. apache/rocketmq:5.1.0 sh mqnamesrv
  4. # 拷贝启动脚本dockercp rmqnamesrv:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /data/rocketmq/nameserver/bin/
  5. # 删除容器 NameServerdockerrm-f rmqnamesrv

[Step 4] : 启动容器

  1. **<font style="color:rgb(38, 38, 38);">NameServer</font>**
  1. # 启动容器 NameServerdocker run -d--network rocketmq \--privileged=true --restart=always \--name rmqnamesrv -p9876: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 \
  2. apache/rocketmq:5.1.0 sh mqnamesrv
  3. # 部分命令解释 : 1. -e"MAX_HEAP_SIZE=256M" 设置最大堆内存和堆内存初始大小
  4. 2. -e"HEAP_NEWSIZE=128M" 设置新生代内存大小
  5. # 查看启动日志docker logs -f rmqnamesrv

[Step 5] : 查看NameServer 启动日志

  • 看到 ‘The Name Server boot success…’, 表示NameServer 已成功启动。

[Step 6] : 部署 Broker + Proxy

  • 创建挂载文件夹并授权
  1. mkdir-p /data/rocketmq/broker/{store,logs,conf,bin}chmod777-R /data/rocketmq/broker/*

**[Step 7] : 创建

  1. **broker.cnf**

文件**

  1. vim /data/rocketmq/broker/conf/broker.conf
  2. # nameServer 地址多个用;隔开 默认值null# 例:127.0.0.1:6666;127.0.0.1:8888
  3. namesrvAddr =192.168.100.100:9876
  4. # 集群名称
  5. brokerClusterName = DefaultCluster
  6. # 节点名称
  7. brokerName = broker-a
  8. # broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0
  9. brokerId =0# Broker服务地址 String 内部使用填内网ip,如果是需要给外部使用填公网ip
  10. brokerIP1 =192.168.100.100
  11. # Broker角色
  12. brokerRole = ASYNC_MASTER
  13. # 刷盘方式
  14. flushDiskType = ASYNC_FLUSH
  15. # 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
  16. deleteWhen = 04
  17. # 以小时计算的文件保留时间 默认值72小时
  18. fileReservedTime =72# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭autoCreateTopicEnable=true
  19. # 是否允许Broker自动创建订阅组,建议线下开启,线上关闭autoCreateSubscriptionGroup=true
  20. # 禁用 tsl
  21. tlsTestModeEnable =false# 下面是没有注释的版本, 记得修改"namesrvAddr", "brokerIP1"的地址
  22. namesrvAddr =192.168.100.233:9876
  23. brokerClusterName = DefaultCluster
  24. brokerName = broker-a
  25. brokerId =0
  26. brokerIP1 =192.168.100.233
  27. brokerRole = ASYNC_MASTER
  28. flushDiskType = ASYNC_FLUSH
  29. deleteWhen = 04
  30. fileReservedTime =72autoCreateTopicEnable=true
  31. autoCreateSubscriptionGroup=true
  32. tlsTestModeEnable =false

[Step 8] : 拷贝启动脚本

  1. # 启动 Broker 容器docker run -d\--name rmqbroker --privileged=true \
  2. apache/rocketmq:5.1.0 sh mqbroker
  3. # 拷贝脚本文件dockercp rmqbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /data/rocketmq/broker/bin

[Step 9] : 启动容器 Broker

  1. # 删除容器 Brokerdockerrm-f rmqbroker
  2. # 启动容器 Brokerdocker run -d--network rocketmq \--restart=always --name rmqbroker --privileged=true \-p10911:10911 -p10909: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"\
  3. apache/rocketmq:5.1.0 sh mqbroker --enable-proxy -c /home/rocketmq/broker.conf
  4. # 查看启动日志docker logs -f rmqbroker
  • 启动成功日志如下

[Step 10] : 部署RocketMQ控制台(rocketmq-dashboard)

  • 拉取镜像
  1. docker pull apacherocketmq/rocketmq-dashboard:latest

[Step 11] : 启动容器****Rocketmq-dashboard

  1. docker run -d\--restart=always --name rmq-dashboard \-p8080:8080 --network rocketmq \-e"JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"\
  2. apacherocketmq/rocketmq-dashboard

[Step 12] : 查看启动日志

  1. docker logs -f rmq-dashboard

[Step 13] : 访问RMQ控制台


[Step 14] : 查看创建的 RocketMQ

标签: docker rocketmq 容器

本文转载自: https://blog.csdn.net/apple_74262176/article/details/141886930
版权归原作者 水蓝烟雨 所有, 如有侵权,请联系我们删除。

“Docker 部署 RocketMQ (图文并茂超详细)”的评论:

还没有评论