此处采用
docker-compose
部署 rockermq主主集群模式
- 创建相关文件夹
此处创建的文件一一对应
docker-compose.yml
文件中的映射文件夹,酌情创建,主要需要创建配置文件夹。
cd /opt
mkdir rockermq && cd rockermq
mkdir -p /home/rocketmq/broker-b && mdkir -p /home/rocketmq/broker-b
- 创建配置文件
<mark>注意</mark>:此处创建broker配置文件,不配置无法启动。
vim /home/rocketmq/broker-a/broker-a.conf
#配置集群名,同个集群的名字要一样。
brokerClusterName = rocketmq-cluster
#配置节点名,同个集群需保证唯一性
brokerName = broker-a
#0为主节点,>0 为从节点
brokerId = 0
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
brokerIP1 = 10.228.83.120
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr=10.228.83.120:9876
autoCreateTopicEnable=true
#Broker 对外服务的监听端口,
listenPort = 10911
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#配置数据化的时候需要用到,此路径为 docker路径。
storePathRootDir=/home/rocketmq/store
storePathCommitLog=/home/rocketmq/store/commitlog
#保存退出,创建broker-b配置文件
vim /home/rocketmq/broker-a/broker-b.conf
brokerClusterName = rocketmq-cluster
brokerName = broker-b
brokerId = 0
brokerIP1 = 10.228.83.120
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr=10.228.83.120:9876
autoCreateTopicEnable=true
#Broker 对外服务的监听端口,
listenPort = 10909
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
storePathRootDir=/home/rocketmq/store
storePathCommitLog=/home/rocketmq/store/commitlog
#保存退出
- 编辑yml文件
<mark>注意</mark>:此步骤为必创建,可大大减少 docker部署服务的工作量,编写完成后一键启动。当然你也可参考此配置文件手动
docker run
一个一个启动。
# 最好在你刚刚创建的配置文件夹下载创建
vim docker-compose.yml
#复制以下配置代码,根据你当前环境酌情修改IP地址,映射路径,容器名等。
version: '3.5'
services:
rmqnamesrv-a:
image: rocketmqinc/rocketmq:4.3.0
container_name: rmqnamesrv-a
ports:
- 9876:9876
volumes:
- /opt/rocketmq/logs/nameserver-a:/opt/logs
- /opt/rocketmq/store/nameserver-a:/opt/store
command: sh mqnamesrv
networks:
rmq:
aliases:
- rmqnamesrv-a
# rmqnamesrv-b:
# image: rocketmqinc/rocketmq:4.3.0
# container_name: rmqnamesrv-b
# ports:
# - 9877:9876
# volumes:
# - /opt/rocketmq/logs/nameserver-b:/opt/logs
# - /opt/rocketmq/store/nameserver-b:/opt/store
# command: sh mqnamesrv
# networks:
# rmq:
# aliases:
# - rmqnamesrv-b
rmqbroker-a:
image: rocketmqinc/rocketmq:4.3.0
container_name: rmqbroker-a
ports:
- 10911:10911
volumes:
- /opt/rocketmq/logs/broker-a:/opt/logs
- /opt/rocketmq/store/broker-a:/opt/store
- /home/rocketmq/broker-a/broker-a.conf:/opt/rocketmq-4.3.0/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-a:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
command: sh mqbroker -n rmqnamesrv-a:9876 autoCreateTopicEnable=true -c /opt/rocketmq-4.3.0/conf/broker.conf &
links:
- rmqnamesrv-a:rmqnamesrv-a
# - rmqnamesrv-b:rmqnamesrv-b
networks:
rmq:
aliases:
- rmqbroker-a
rmqbroker-b:
image: rocketmqinc/rocketmq:4.3.0
container_name: rmqbroker-b
ports:
- 10909:10909
volumes:
- /opt/rocketmq/logs/broker-b:/opt/logs
- /opt/rocketmq/store/broker-b:/opt/store
- /home/rocketmq/broker-b/broker-b.conf:/opt/rocketmq-4.3.0/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-a:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
command: sh mqbroker -n rmqnamesrv-a:9876 autoCreateTopicEnable=true -c /opt/rocketmq-4.3.0/conf/broker.conf &
links:
- rmqnamesrv-a:rmqnamesrv-a
# - rmqnamesrv-b:rmqnamesrv-b
networks:
rmq:
aliases:
- rmqbroker-b
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 9001:8080
environment:
JAVA_OPTS: -Drocketmq.namesrv.addr=rmqnamesrv-a:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
networks:
rmq:
aliases:
- rmqconsole
networks:
rmq:
name: rmq
driver: bridge
启动
#在`docker-compose.yml`配置路径下,当然你也可 `docker-compose -f 配置文件路径 up -d`
docker-compose up -d
最后
- 测试
访问web控制台查看确认一遍是否已有集群。如下图所见: