在2核2G的服务器上使用Docker部署RocketMQ是可行的,但需要注意资源限制和配置优化以避免性能问题。以下是详细步骤和注意事项:
1. 资源规划建议
- 最低要求:RocketMQ的NameServer和Broker至少各需1GB内存,2G内存的服务器需合理分配。
- 推荐调整:
- 为Docker容器分配1.5GB内存(剩余留给系统)。
- 关闭非必要服务(如GUI、其他应用)。
2. 部署步骤
2.1 拉取镜像
docker pull apache/rocketmq:4.9.4 # 官方镜像
2.2 启动NameServer
docker run -d
--name rocketmq-nameserver
-p 9876:9876
-v /data/namesrv/logs:/home/rocketmq/logs
-e "JAVA_OPT_EXT=-Xms512m -Xmx512m" # 限制JVM内存
apache/rocketmq:4.9.4
sh mqnamesrv
2.3 启动Broker
创建配置文件 broker.conf:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 绑定宿主机IP(需替换为你的服务器IP)
namesrvAddr = 192.168.1.100:9876
启动Broker容器:
docker run -d
--name rocketmq-broker
-p 10911:10911 -p 10909:10909
-v /data/broker/logs:/home/rocketmq/logs
-v /data/broker/store:/home/rocketmq/store
-v /path/to/broker.conf:/home/rocketmq/conf/broker.conf
-e "JAVA_OPT_EXT=-Xms1g -Xmx1g" # 分配1GB内存
--link rocketmq-nameserver:namesrv
apache/rocketmq:4.9.4
sh mqbroker -c /home/rocketmq/conf/broker.conf
3. 关键优化项
- JVM参数:通过
-Xms1g -Xmx1g限制内存,避免OOM。 - 磁盘挂载:将日志和数据目录挂载到宿主机,避免容器重启丢失数据。
- 网络配置:
- 确保
namesrvAddr使用宿主机IP(非127.0.0.1)。 - 若需X_X访问,检查防火墙规则(开放
9876、10911等端口)。
- 确保
4. 验证部署
- 检查容器状态:
docker ps -a | grep rocketmq - 测试消息发送:
docker exec -it rocketmq-nameserver sh tools.sh org.apache.rocketmq.example.quickstart.Producer
5. 注意事项
- 资源监控:使用
docker stats观察CPU/内存占用,避免资源耗尽。 - 生产环境建议:
- 至少4GB内存,分离部署NameServer和Broker。
- 使用RocketMQ 5.x的轻量版Proxy模式(需Docker镜像支持)。
- 数据持久化:定期备份
/data/broker/store目录。
常见问题
- 启动失败:检查日志
docker logs rocketmq-broker,常见问题为内存不足或端口冲突。 - 性能低下:减少Topic数量或消息堆积,或升级服务器配置。
通过以上配置,2核2G服务器可支持轻量级RocketMQ运行,但生产环境建议更高配置。
云服务器