目录
前言
环境准备
系统要求
检查Docker状态
创建网络和目录
创建Docker网络
创建数据目录
安装NameServer
启动NameServer容器
参数说明
验证NameServer启动
安装Broker
创建Broker配置文件
启动Broker容器
参数说明
验证Broker启动
安装管理控制台
启动控制台容器
参数说明
访问控制台
验证安装
检查所有容器状态
测试消息发送和接收
进入Broker容器测试
常用操作命令
容器管理
查看日志
进入容器
故障排除
常见问题及解决方案
1. 容器启动失败
2. 无法访问管理控制台
3. 消息发送失败
4. 内存不足
5. 数据持久化问题
总结
关键要点回顾
下一步建议
前言
RocketMQ是阿里开源的一款高性能、高可靠的分布式消息中间件。本教程将手把手教你在CentOS7系统上使用Docker安装RocketMQ,包括NameServer、Broker和管理控制台的完整搭建过程。
环境准备
系统要求
- CentOS7系统
- Docker已安装并启动
- 至少2GB内存
- 至少5GB磁盘空间
检查Docker状态
# 检查Docker是否正常运行
docker version# 如果Docker未启动,执行以下命令
sudo systemctl start docker
sudo systemctl enable docker
创建网络和目录
创建Docker网络
为了让RocketMQ各个组件能够相互通信,我们需要创建一个自定义网络:
# 创建名为rocketmq的网络
docker network create rocketmq
创建数据目录
在宿主机上创建用于存储RocketMQ数据的目录:
# 创建根目录
sudo mkdir -p /home/rocketmq# 创建各组件的数据目录
sudo mkdir -p /home/rocketmq/namesrv
sudo mkdir -p /home/rocketmq/broker
sudo mkdir -p /home/rocketmq/broker/logs
sudo mkdir -p /home/rocketmq/broker/store# 设置目录权限(重要!)
sudo chmod -R 777 /home/rocketmq
为什么要设置777权限? Docker容器内的进程可能使用不同的用户ID,设置777权限确保容器能够正常读写这些目录。
安装NameServer
NameServer是RocketMQ的注册中心,负责管理Broker的路由信息。
启动NameServer容器
docker run -d \--name rmqnamesrv \--network rocketmq \-p 9876:9876 \-v /home/rocketmq/namesrv:/home/rocketmq/namesrv \-e "MAX_POSSIBLE_HEAP=100000000" \apache/rocketmq:4.9.4 \sh mqnamesrv
参数说明
--name rmqnamesrv
:容器名称--network rocketmq
:使用我们创建的网络-p 9876:9876
:端口映射,9876是NameServer默认端口-v /home/rocketmq/namesrv:/home/rocketmq/namesrv
:数据卷挂载-e "MAX_POSSIBLE_HEAP=100000000"
:设置JVM堆内存大小apache/rocketmq:4.9.4
:使用的镜像版本sh mqnamesrv
:启动NameServer的命令
验证NameServer启动
# 查看容器状态
docker ps | grep rmqnamesrv# 查看容器日志
docker logs rmqnamesrv
如果看到类似"The Name Server boot success"的日志,说明启动成功。
安装Broker
Broker是RocketMQ的核心组件,负责消息的存储和转发。
创建Broker配置文件
首先创建Broker的配置文件:
# 创建配置文件
sudo vi /home/rocketmq/broker/broker.conf
在文件中添加以下内容:
# Broker配置
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=72
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH# 网络配置(重要!)
brokerIP1=你的服务器IP地址
namesrvAddr=rmqnamesrv:9876# 存储配置
storePathRootDir=/home/rocketmq/broker/store
storePathCommitLog=/home/rocketmq/broker/store/commitlog
storePathConsumeQueue=/home/rocketmq/broker/store/consumequeue
storePathIndex=/home/rocketmq/broker/store/index# 其他配置
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
重要提醒: 请将
brokerIP1=你的服务器IP地址</