最近工作时用到了rocketMQ,并且测试服务器的rocketMQ总会出现问题,我找到运维的同事把测试服务器的账号要过来,准备自己部署一下rocketMQ,于是便有了这篇博客。
这篇博客参考了使用docker安装RocketMQ_皓亮君的博客-CSDN博客_docker rocketmq
并使用dockerCompose进行部署简化了操作的过程。
首先我们需要有dockerCompose的环境,这里不多介绍了,前面的博客已经写了太多安装的步骤了。
使用DockerCompose部署只需要准备两个文件,broker.conf和docker-compose.yml。
1、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;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 192.168.30.200
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
此文件只需要修改一下ip即可
2、docker-compose.yml
version: "3.0"
services:
rocketmqNameServer:
image: rocketmqinc/rocketmq
container_name: rocketmqNameServer
#restart: always
volumes:
#挂载路径,冒号左边为服务器本地路径,冒号右边为容器内部路径
- /home/ubuntu2004/rocketMQ/data/nameServer/logs:/root/logs
- /home/ubuntu2004/rocketMQ/data/nameServer/store:/root/store
environment:
MAX_POSSIBLE_HEAP: 100000000
command:
# 服务启动
sh mqnamesrv
#network_mode: host
ports:
- "9876:9876"
rocketmqBroker:
image: rocketmqinc/rocketmq
container_name: rocketmqBroker
#restart: always
volumes:
#挂载路径,冒号左边为服务器本地路径,冒号右边为容器内部路径
- /home/ubuntu2004/rocketMQ/data/broker/logs:/root/logs
- /home/ubuntu2004/rocketMQ/data/broker/store:/root/store
- /home/ubuntu2004/rocketMQ/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf
links:
- rocketmqNameServer:namesrv
environment:
NAMESRV_ADDR: namesrv:9876
MAX_POSSIBLE_HEAP: 200000000
command:
# 服务启动
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
#network_mode: host
ports:
- "10911:10911"
- "10909:10909"
rocketmqConsole:
image: pangliang/rocketmq-console-ng
container_name: rocketmqConsole
links:
- rocketmqNameServer:namesrv
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
#network_mode: host
ports:
- "19999:8080"
此文件需要修改一下挂在路径,即volumes选项下冒号左边的路径。
3、将broker.conf文件放到对应的路径下即可,示例中的路径为/home/ubuntu2004/rocketMQ/broker.conf,这个可以随意调整。
4、启动DockerCompose。
docker-compose up -d
搞定!