docker容器部署RocketMQ

1.创建namesrv服务

docker pull rocketmqinc/rocketmq

创建namesrv数据存储路径

mkdir -p  /docker/rocketmq/data/namesrv/logs   /docker/rocketmq/data/namesrv/store

构建namesrv容器

docker run -d \
--restart=always \
--name rmqnamesrv \
-p 9876:9876 \
-v /docker/rocketmq/data/namesrv/logs:/root/logs \
-v /docker/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq \
sh mqnamesrv 
参数说明
-d以守护进程的方式启动
- -restart=alwaysdocker重启时候容器自动重启
- -name rmqnamesrv把容器的名字设置为rmqnamesrv
-p 9876:9876把容器内的端口9876挂载到宿主机9876上面
-v /docker/rocketmq/data/namesrv/logs:/root/logs把容器内的/root/logs日志目录挂载到宿主机的 /docker/rocketmq/data/namesrv/logs目录
-v /docker/rocketmq/data/namesrv/store:/root/store把容器内的/root/store数据存储目录挂载到宿主机的 /docker/rocketmq/data/namesrv目录
rmqnamesrv容器的名字
-e “MAX_POSSIBLE_HEAP=100000000”设置容器的最大堆内存为100000000
rocketmqinc/rocketmq使用的镜像名称
sh mqnamesrv启动namesrv服务

2.创建broker节点

创建broker数据存储路径

mkdir -p  /docker/rocketmq/data/broker/logs   /docker/rocketmq/data/broker/store /docker/rocketmq/conf

创建配置文件

vim /docker/rocketmq/conf/broker.conf
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示MasterSlave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 192.168.52.136  # 注意:改成你的IP地址

构建broker容器

docker run -d  \
--restart=always \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-v  /docker/rocketmq/data/broker/logs:/root/logs \
-v  /docker/rocketmq/data/broker/store:/root/store \
-v /docker/rocketmq/conf/broker.conf:/docker/rocketmq/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq \
sh mqbroker -c /docker/rocketmq/conf/broker.conf
参数说明
-d以守护进程的方式启动
–restart=alwaysdocker重启时候镜像自动重启
- -name rmqbroker把容器的名字设置为rmqbroker
- --link rmqnamesrv:namesrv和rmqnamesrv容器通信
-p 10911:10911把容器的非vip通道端口挂载到宿主机
-p 10909:10909把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876”指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000”rocketmqinc/rocketmq sh mqbroker 指定broker服务的最大堆内存
rocketmqinc/rocketmq使用的镜像名称
sh mqbroker -c /docker/rocketmq/conf/broker.conf指定配置文件启动broker节点,该配置文件对应上面 vim 编辑的配置文件

3.创建rockermq-console服务

拉取镜像

docker pull pangliang/rocketmq-console-ng

构建rockermq-console容器,注意:阿里云用户需设置安全组

docker run -d \
--restart=always \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=你的IP地址:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8090:8090 \
pangliang/rocketmq-console-ng

参数说明
-d-d 以守护进程的方式启动
- -restart=alwaysdocker重启时候镜像自动重启
- -name rmqadmin把容器的名字设置为rmqadmin
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=你的IP地址:9876设置namesrv服务的ip地址
-Dcom.rocketmq.sendMessageWithVIPChannel=false"不使用vip通道发送消息
–p 8090:8090把容器内的端口8090挂载到宿主机上的8090端口

通过以上配置,肯定可以成功! 访问控制台,显示OK
在这里插入图片描述

### 部署 RocketMQ 集群于 Docker 环境中的最佳实践 #### 使用 Docker 容器化技术的优势 选择 Docker部署 RocketMQ 集群能够提供更快捷的服务构建过程,并优化系统资源利用率[^1]。 #### 准备工作:获取所需镜像 为了建立完整的 RocketMQ 集群环境,需预先下载如下三个官方提供的 Docker 镜像: - `foxiswho/rocketmq:server-4.5.1` 用于 Name Server 组件; - `foxiswho/rocketmq:broker-4.5.1` 作为消息代理服务器 Broker 的基础; - `apacherocketmq/rocketmq-dashboard` 提供图形界面监控工具[^2]。 #### 创建必要的本地存储路径与配置文件 建议创建专门的目录来存放 RocketMQ 相关的数据和配置文件。例如,在 `/usr/local/rockermq/rocketmq-broker/conf` 下新建并编辑 broker.conf 文件以适应特定需求[^4]: ```bash mkdir -p /usr/local/rockermq/rocketmq-broker/conf touch /usr/local/rockermq/rocketmq-broker/conf/broker.conf vim /usr/local/rockermq/rocketmq-broker/conf/broker.conf ``` #### 启动服务实例 对于每一个组件(NameServer 和多个 Brokers),都需要单独启动对应的容器。这里给出一个简单的例子说明如何运行单个 Broker 实例: ```bash docker run -d \ --name rmqbroker \ -p 10911:10911 \ -v /usr/local/rockermq/rocketmq-broker/logs:/home/rocketmq/logs \ -v /usr/local/rockermq/rocketmq-broker/store:/home/rocketmq/store \ -e "JAVA_OPTS=-Xms2g -Xmx2g" \ apache/rocketmq:latest \ sh mqbroker -n localhost:9876 autoCreateTopicEnable=true ``` 此命令中 `-v` 参数指定了数据卷映射关系,使得日志和其他持久化信息可以从宿主机访问;而 `-e JAVA_OPTS` 则允许调整 JVM 堆大小设置[^5]。 #### 自定义 Broker 启动脚本 (可选) 当有特殊性能调优的需求时,可能需要修改默认的 Broker 启动参数。这通常涉及到将容器内的启动脚本复制到宿主机上进行更改后再替换回原位置。具体操作步骤已在参考资料中有详细介绍。 #### 运维管理提示 考虑到生产环境中高可用性和扩展性的要求,应该规划好集群架构设计,比如采用多副本机制提高容错能力,合理分配各节点角色等功能特性。同时也要关注日常运维方面的工作,如定期备份重要资料、监测集群健康状态等措施保障稳定运行。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值