31人参与 • 2025-12-15 • Docker
apache rocketmq是一款分布式消息中间件,由apache软件基金会开发维护,具有高吞吐量、低延迟、高可靠性等特点,广泛应用于分布式系统中的异步通信、流量削峰、系统解耦等场景。随着容器化技术的普及,采用docker部署rocketmq可以显著简化环境配置、提高部署一致性和运维效率。
本文将详细介绍如何通过docker容器化方式部署apache rocketmq,包括环境准备、镜像拉取、容器部署、功能测试、生产环境优化及故障排查等内容,为用户提供一套完整的容器化部署方案。
部署rocketmq容器前,需先确保目标服务器已安装docker环境。推荐使用以下一键安装脚本快速部署docker及相关组件:
bash <(wget -qo- https://xuanyuan.cloud/docker.sh)
执行完成后,可通过docker --version命令验证安装是否成功,输出类似docker version x.x.x, build xxxxxxx即表示安装成功。
使用以下命令通过轩辕镜像加速地址拉取最新版本的rocketmq镜像:
docker pull xxx.xuanyuan.run/apache/rocketmq:latest
拉取完成后,可通过以下命令验证镜像是否成功下载:
docker images | grep apache/rocketmq
若输出包含apache/rocketmq及latest标签的记录,则表示镜像准备完成。
rocketmq通常由nameserver和broker两个核心组件构成,以下是基础的容器部署命令。
docker run -d \ --name rocketmq-nameserver \ -p 9876:9876 \ -v /data/rocketmq/nameserver/logs:/root/logs \ -e "max_heap_size=512m" \ -e "heap_newsize=128m" \ xxx.xuanyuan.run/apache/rocketmq:latest \ sh mqnamesrv
参数说明:
-d:后台运行容器--name:指定容器名称为rocketmq-nameserver-p 9876:9876:映射nameserver默认端口(需根据轩辕镜像文档(rocketmq)确认实际端口)-v:挂载日志目录到宿主机,实现数据持久化-e:设置jvm内存参数,可根据服务器配置调整docker run -d \ --name rocketmq-broker \ -p 10911:10911 \ -p 10909:10909 \ -v /data/rocketmq/broker/logs:/root/logs \ -v /data/rocketmq/broker/store:/root/store \ -e "namesrv_addr=nameserver-ip:9876" \ -e "max_heap_size=1024m" \ -e "heap_newsize=256m" \ xxx.xuanyuan.run/apache/rocketmq:latest \ sh mqbroker -c /opt/rocketmq/conf/broker.conf
参数说明:
namesrv_addr:需替换为实际nameserver的ip地址和端口部署完成后,通过以下命令检查容器运行状态:
# 查看所有rocketmq相关容器 docker ps --filter "name=rocketmq-" # 查看容器日志(以broker为例) docker logs -f rocketmq-broker
若日志中出现the broker[broker-a, xxx.xxx.xxx.xxx:10911] boot success. serializetype=json等类似信息,则表示broker启动成功。
docker exec -it rocketmq-broker sh
export namesrv_addr=nameserver-ip:9876
sh tools.sh org.apache.rocketmq.example.quickstart.producer
若输出sendresult [sendstatus=send_ok, msgid=...等信息,则表示消息发送成功。
sh tools.sh org.apache.rocketmq.example.quickstart.consumer
若输出consumemessagethread_%d receive new messages: [messageext...等信息,则表示消息接收成功。
在宿主机或其他可访问服务器上,通过rocketmq客户端工具连接部署的服务,验证外部网络连通性。需确保宿主机防火墙已开放相关端口(如9876、10911等)。
-v /data/rocketmq/nameserver/logs:/root/logs \ -v /data/rocketmq/nameserver/store:/root/store \ # 若nameserver有持久化需求 -v /data/rocketmq/broker/logs:/root/logs \ -v /data/rocketmq/broker/store:/root/store \
-e "max_heap_size=4g" \ # 最大堆内存,建议为物理内存的50% -e "heap_newsize=1g" \ # 新生代内存,建议为最大堆内存的25%
--memory和--cpus限制容器资源使用,避免资源争抢:--memory=8g --cpus=4 \
docker network create rocketmq-network docker run -d --name rocketmq-nameserver --network rocketmq-network ...
--user指定非特权用户:--user 1000:1000 \
-v /data/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf \
docker logs --tail=100 rocketmq-broker # 查看最近100行日志
netstat -tulpn | grep 9876 # 检查nameserver端口是否被占用
dmesg | grep -i 'out of memory'查看系统oom日志。namesrv_addr正确,可通过telnet nameserver-ip 9876测试网络连通性。sh mqadmin clusterlist -n nameserver-ip:9876
ls -ld /data/rocketmq/broker/store # 权限应为755或容器用户可访问
df -h检查磁盘使用情况。本文详细介绍了apache rocketmq的docker容器化部署方案,包括环境准备、镜像拉取、容器部署、功能测试、生产环境优化及故障排查等内容,为快速搭建rocketmq服务提供了可参考的实践指南。
关键要点:
后续建议:
到此这篇关于apache rocketmq docker 容器化部署指南的文章就介绍到这了,更多相关apache rocketmq docker 容器化部署内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论