拉取 RocketMQ 镜像
首先,从 Docker Hub 或者其他镜像源拉取 RocketMQ 的 Docker 镜像。官方的 RocketMQ Docker 镜像可以从 Docker Hub 获取。
docker pull apache/rocketmq:5.3.1
创建容器共享网络
为了使 RocketMQ 的不同组件(如 NameServer 和 Broker)能够相互通信,需要创建一个 Docker 网络:
docker network create rocketmq
启动 Name Server
RocketMQ 的 Name Server 是一个无状态的服务,负责为客户端提供路由信息。
首先创建必要的目录和文件
mkdir -p /data/rocketmq/nameserver/logs
chmod 777 -R /data/rocketmq/nameserver/
可以通过以下命令启动 Name Server:
docker run \
-d \
--network rocketmq \
--name rmqnamesrv \
-p 9876:9876 \
-v /data/rocketmq/nameserver/logs:/home/rocketmq/logs \
apache/rocketmq:5.3.1 \
sh mqnamesrv
这里 -d
参数表示后台运行,-p
参数用于映射容器端口到主机端口。
sh mqnamesrv
是在容器启动时执行的命令。sh
是壳(shell)的命令,用于执行后面的脚本 mqnamesrv
,这个脚本位于容器内的 /home/rocketmq/rocketmq-5.3.1/bin/
目录,用于启动 NameServer 服务。
使用docker logs -f rmqnamesrv
查看 rmqnamesrv
的容器的日志。-f
参数表示实时跟踪日志输出,即跟随最新的日志打印。
启动 Broker
Broker 是 RocketMQ 中处理消息存储与转发的核心组件。启动 Broker 前需要指定 Name Server 的地址。
先创建挂载文件夹并授权
mkdir -p /data/rocketmq/broker/{store,logs,conf}
chmod 777 -R /data/rocketmq/broker/*
创建broker.cnf
文件
vim /data/rocketmq/broker/conf/broker.conf
文件内容如下
brokerIP1=192.168.101.101
下面的命令将启动一个 Broker,并将其连接到之前启动的 Name Server。
查看代码
docker run \
-d \
--name rmqbroker \
--network rocketmq \
-p 10912:10912 \
-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/rocketmq-5.3.1/conf/broker.conf \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
apache/rocketmq:5.3.1 \
sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.3.1/conf/broker.conf
- 10911 - 这是 Broker 的主端口,主要用于客户端(生产者和消费者)与 Broker 之间的通信。生产者发布消息或消费者订阅消息会通过这个端口与 Broker 进行交互。
- 10909 - 这个端口通常用于管理操作,如监控、管理界面等。在某些情况下,它也可能用于其他类型的管理接口,比如HTTP管理接口。不过,对于标准的 RocketMQ 配置来说,10909 端口并不总是必须开启的,具体取决于不同使用场景和配置。
- 10912 - 这个端口是 Broker 的另一个网络监听端口,主要用于 Broker 间的通信,例如在集群模式下,Brokers 之间需要进行心跳检测、数据同步等操作。如果环境中只有一个 Broker,那么这个端口可能不会被频繁使用,但在多 Broker 架构中,它是重要的。
验证部署
一旦 Name Server 和 Broker 都成功启动,可以通过以下命令检查它们的状态:
查看 Name Server 日志:
bashdocker logs -f rmqnamesrv
查看 Broker 日志:
bashdocker logs rmqbroker
如果一切正常,我们能够在日志中看到没有错误信息,并且 Name Server 和 Broker 成功建立了连接。
可视化界面
一些工具提供了RocketMQ的后台可视化服务,可以帮助我们更方便地管理和监控 RocketMQ 集群。常见的 RocketMQ 可视化管理工具包括:
- RocketMQ Console
- RocketMQ Dashboard
RocketMQ Dashboard
是 RocketMQ 的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。
拉取镜像
docker pull apacherocketmq/rocketmq-dashboard:latest
启动容器
docker run \
-td \
--network rocketmq \
--name rocketmq-dashboard \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Xmx128M -Xms64M -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 10999:8080 \
apacherocketmq/rocketmq-dashboard:latest
启动日志
docker logs -f rocketmq-dashboard
访问RMQ控制台:http://192.168.101.101:10999/
参考链接
https://blog.csdn.net/weixin_44606481/article/details/129758920