RocketMQ 及其 Dashboard 的 Docker 部署与管理

一、引言

RocketMQ 是一款开源的分布式消息队列系统,具有低延迟、高并发、高可用等特性,在分布式系统中广泛用于异步解耦、流量削峰等场景。RocketMQ Dashboard 则为用户提供了可视化的管理界面,方便监控和管理 RocketMQ 集群。本文档详细介绍如何使用 Docker 部署 RocketMQ 及其 Dashboard,并对相关容器进行管理。

二、部署前准备

在开始部署之前,需要确保服务器上已经安装了 Docker。如果尚未安装,请根据服务器的操作系统类型,参考 Docker 官方文档进行安装。

三、创建数据目录并设置权限

  1. 创建目录:在服务器上执行以下命令,创建用于存储 RocketMQ 日志和数据的目录。
mkdir -p /data/rocketmq/{logs,store}

mkdir -p中的-p参数用于递归创建目录,如果父目录不存在,会一并创建。此命令创建了/data/rocketmq/logs/data/rocketmq/store两个目录,分别用于存放日志和数据。

  1. 设置权限:为了让 Docker 容器能够顺利读写这些目录,需要赋予它们足够的权限。
chmod -R 777 /data/rocketmq

chmod -R 777 /data/rocketmq中的-R表示递归修改权限,777代表所有用户(所有者、所属组、其他用户)都具有读、写、执行权限。

四、启动 RocketMQ NameServer 容器

执行以下命令启动 NameServer 容器:

docker run -d \
    --name rmqnamesrv \
    -p 9876:9876 \
    -v /data/rocketmq/logs:/root/logs \
    -v /data/rocketmq/store:/root/store \
    apache/rocketmq:latest \
    sh mqnamesrv
  • -d:使容器在后台运行,不占用当前终端会话。
  • --name rmqnamesrv:为容器命名为rmqnamesrv,方便后续管理和识别。
  • -p 9876:9876:将容器内的 9876 端口映射到宿主机的 9876 端口,外部可以通过宿主机的 IP 和 9876 端口访问 NameServer 服务。
  • -v /data/rocketmq/logs:/root/logs-v /data/rocketmq/store:/root/store:这两个参数分别将宿主机的/data/rocketmq/logs/data/rocketmq/store目录挂载到容器内的/root/logs/root/store目录,实现数据持久化,容器重启后数据不会丢失。
  • apache/rocketmq:latest:指定使用最新版本的 RocketMQ 官方 Docker 镜像。
  • sh mqnamesrv:在容器内执行启动 NameServer 的脚本。

五、启动 RocketMQ Broker 容器

运行以下命令启动 Broker 容器:

docker run -d \
    --name rmqbroker \
    -p 10909:10909 \
    -p 10911:10911 \
    -v /data/rocketmq/logs:/root/logs \
    -v /data/rocketmq/store:/root/store \
    -e "NAMESRV_ADDR=ip:9876" \
    -e "JAVA_OPT_EXT=-Xms256m -Xmx256m -Xmn128m" \
    apache/rocketmq:latest \
    sh mqbroker -n ip:9876
  • 部分参数与启动 NameServer 容器时类似,如-d--name-vapache/rocketmq:latest
  • -p 10909:10909-p 10911:10911:分别将容器内的 10909 和 10911 端口映射到宿主机,10909 端口用于 Broker 与 Producer、Consumer 之间的通信,10911 端口用于 Broker 与 NameServer 之间的通信。
  • -e "NAMESRV_ADDR=ip:9876":设置 NameServer 的地址,让 Broker 能够连接到 NameServer 进行注册和通信。
  • -e "JAVA_OPT_EXT=-Xms256m -Xmx256m -Xmn128m":设置容器内 JVM 的堆内存参数,-Xms256m表示初始堆大小为 256MB,-Xmx256m表示最大堆大小为 256MB,-Xmn128m表示新生代大小为 128MB。
  • sh mqbroker -n ip:9876:在容器内执行启动 Broker 的脚本,并指定 NameServer 的地址。

六、启动 RocketMQ Dashboard 容器

执行以下命令启动 Dashboard 容器:

docker run -d \
    --name rmq-dashboard \
    -p 9999:8080 \
    -e "JAVA_OPTS=-Drocketmq.namesrv.addr=ip:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
    apacherocketmq/rocketmq-dashboard:latest
  • -d--name参数作用同上。
  • -p 9999:8080:将容器内的 8080 端口映射到宿主机的 9999 端口,用户可以通过宿主机 IP 和 9999 端口访问 Dashboard 的 Web 界面。
  • -e "JAVA_OPTS=-Drocketmq.namesrv.addr=ip:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false":设置 Dashboard 连接 NameServer 的地址,并关闭 VIP 通道(在一些网络环境下,关闭 VIP 通道可以避免连接问题)。
  • apacherocketmq/rocketmq-dashboard:latest:使用最新版本的 RocketMQ Dashboard 官方 Docker 镜像。

七、查看容器日志

在部署和运行过程中,查看容器日志有助于排查问题。可以使用以下命令分别查看 NameServer、Broker 和 Dashboard 容器的日志:

docker logs -f rmqnamesrv
docker logs -f rmqbroker
docker logs -f rmq-dashboard

-f参数表示持续跟踪日志输出,就像使用tail -f命令查看文件日志一样,新产生的日志会实时显示在终端上。

八、停止并删除容器

当不再需要 RocketMQ 及其 Dashboard 服务时,可以停止并删除相关容器:

  1. 停止并删除 Dashboard 容器
docker stop rmq-dashboard
docker rm rmq-dashboard

docker stop命令用于停止正在运行的容器,docker rm命令用于删除已停止的容器。

  1. 停止并删除 Broker 容器
docker stop rmqbroker
docker rm rmqbroker
  1. 停止并删除 NameServer 容器
docker stop rmqnamesrv
docker rm rmqnamesrv

九、总结

通过以上步骤,我们可以使用 Docker 快速部署 RocketMQ 及其 Dashboard,实现消息队列系统的搭建和可视化管理。在实际应用中,可以根据业务需求对配置参数进行调整和优化,以满足不同场景下的性能和功能要求。同时,定期查看容器日志和监控系统运行状态,有助于及时发现和解决潜在问题,保障系统的稳定运行。

### 使用Docker部署RocketMQ详细教程 #### 一、准备工作 确保本地已安装好 DockerDocker Compose。如果遇到 Docker Compose 版本问题,可以通过更新来解决此问题[^4]。 ```bash curl -L https://github.com/docker/compose/releases/download/1.28.6/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` #### 二、拉取所需镜像 为了构建完整的 RocketMQ 环境,需要分别获取 NameServer 和 Broker 的官方镜像以及管理界面的第三方镜像。 对于 NameServer: ```bash docker pull foxiswho/rocketmq:server-4.7.0 ``` 对于 Broker: ```bash docker pull foxiswho/rocketmq:broker-4.7.0 ``` 而对于监控页面,则有两种选择方式之一即可: 方案A (推荐): ```bash docker pull styletang/rocketmq-d --name rocketmq-dashboard \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" \ -p 8080:8080 \ -t registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq-dashboard:latest ``` #### 三、创建并启动容器 先启动 NameServer 容器作为集群的核心组件: ```bash docker run -dit --name rmqnamesrv \ -v /home/data/nameserver/logs:/root/logs \ foxiswho/rocketmq:server-4.7.0 sh -c "nohup bash namesrv.sh &" ``` 接着配置并启动Broker服务端口映射到主机上方便外部访问: ```bash docker run -dit --name rmqbroker \ -e NAMESRV_ADDR="rmqnamesrv:9876" \ -p 10911:10911 \ -p 10909:10909 \ --link rmqnamesrv:namesrv \ foxiswho/rocketmq:broker-4.7.0 sh -c "nohup bash broker.sh start &" ``` 最后可以按照个人喜好决定是否要开启图形化操作面板(console),这里以 `styletang/rocketmq-console-ng`为例说明其启动命令如下所示: ```bash docker run -dit --name rocketmq-console \ -e JAVA_OPTS="-Dcom.rocketmq.sendMessageWithVIPChannel=false" \ -p 8080:8080 \ styletang/rocketmq-console-ng ``` 此时应该可以在浏览器输入 http://localhost:8080 访问到 RocketMQ Console 页面了。 #### 四、验证部署成功否 通过查看日志文件确认各部分工作状态良好;也可以尝试发送测试消息检验整个系统的连通性和功能完整性。 如果有任何异常情况发生,比如防火墙阻止连接或是 Broker 不断重启等问题,建议查阅相关文档或社区资源寻求解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值