基于开源镜像,rocketmq 4.4.0版本
1. docker-compose.yml
version: '2.3'
services:
namesrv-m:
image: foxiswho/rocketmq:server-4.4.0
restart: always
ports:
- 9876:9876
volumes:
- "/rocketmq/namesrv/master/logs:/opt/logs"
- "/rocketmq/namesrv/master/store:/opt/store"
- /etc/localtime:/etc/localtime:ro
environment:
JAVA_OPT_EXT: "-server -Xms300m -Xmx300m -Xmn150m"
namesrv-s:
image: foxiswho/rocketmq:server-4.4.0
restart: always
ports:
- 9877:9876
volumes:
- "/rocketmq/namesrv/slave/logs:/opt/logs"
- "/rocketmq/namesrv/slave/store:/opt/store"
- /etc/localtime:/etc/localtime:ro
environment:
JAVA_OPT_EXT: "-server -Xms300m -Xmx300m -Xmn150m"
broker-a-m:
image: foxiswho/rocketmq:broker-4.4.0
restart: always
ports:
- 10909:10909
- 10911:10911
volumes:
- "/rocketmq/broker/a-m/logs:/opt/logs"
- "/rocketmq/broker/a-m/store:/opt/store"
- "/rocketmq/broker/a-m/conf/broker-a.conf:/etc/rocketmq/broker.conf"
- /etc/localtime:/etc/localtime:ro
command: mqbroker -c /etc/rocketmq/broker.conf
links:
- namesrv-m:namesrv-m
- namesrv-s:namesrv-s
environment:
JAVA_OPTS: " -Duser.home=/opt"
#见rocketmq jvm内存默认配置 (jvm重复参数:后面生效,会覆盖)
JAVA_OPT_EXT: "-server -Xms300m -Xmx300m -Xmn150m"
broker-a-s:
image: foxiswho/rocketmq:broker-4.4.0
restart: always
ports:
- 10916:10909
- 10915:10915
volumes:
- "/rocketmq/broker/a-s/logs:/opt/logs"
- "/rocketmq/broker/a-s/store:/opt/store"
- "/rocketmq/broker/a-s/conf/broker-b.conf:/etc/rocketmq/broker.conf"
- /etc/localtime:/etc/localtime:ro
command: mqbroker -c /etc/rocketmq/broker.conf
links:
- namesrv-m:namesrv-m
- namesrv-s:namesrv-s
environment:
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms300m -Xmx300m -Xmn150m"
console:
image: styletang/rocketmq-console-ng:latest
restart: always
ports:
- 9990:8080
volumes:
- /etc/localtime:/etc/localtime:ro
links:
- namesrv-m:namesrv-m
- namesrv-s:namesrv-s
environment:
JAVA_OPTS: -Drocketmq.config.namesrvAddr=namesrv-m:9876;namesrv-s:9877 -Dcom.rocketmq.sendMessageWithVIPChannel=false
2. 创建对应的挂载文件目录,如/rocketmq/broker/a-m, 见volumes下挂载路径
3. broker-a.conf 配置
线上版本部署在阿里云上,开发版本部署在小机房
brokerClusterName = dev-rocketmq-cluster
brokerName = broker-x
#0 表示 Master,>0 表示 Slave
brokerId = 0
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网
brokerIP1 = 172.16.1.11
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr=172.16.1.11:9876;172.16.1.11:9877
#Broker 对外服务的监听端口
listenPort = 10911
#删除文件时间点,默认凌晨 4点
deleteWhen = 04
#文件保留时间,默认 48 小时
fileReservedTime = 120
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
4. broker-b.conf 配置
brokerClusterName = dev-rocketmq-cluster
brokerName = broker-x
#0 表示 Master,>0 表示 Slave
brokerId = 1
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网
brokerIP1 = 172.16.1.11
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr=172.16.1.11:9876;172.16.1.11:9877
#Broker 对外服务的监听端口
listenPort = 10915
#删除文件时间点,默认凌晨 4点
deleteWhen = 04
#文件保留时间,默认 48 小时
fileReservedTime = 120
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH