参考了官网([http://rocketmq.apache.org/docs/quick-start/](http://rocketmq.apache.org/docs/quick-start/)给的配置:在下载好的目录下:rocketmq-all-4.8.0-bin-release\conf\2m-2s-sync 有具体的配置。
好了下面讲讲我是怎么在docker上安装好双主双从在两台虚拟机上的,
1:默认条件docker已经安装好了
我的docker版本Docker version 18.09.0, build 4d60db4
2:利用dokcer拉去镜像
docker pull foxiswho/rocketmq:4.8.0
3:编写配置文件:
虚拟机一配置文件
- broker-m-1.conf
#集群名称
brokerClusterName=DefaultCluster
#broker名称
brokerName=broker-1
#brokerId master用0 slave用其他
brokerId=0
#清理时机
deleteWhen=4
#文件保留时长 72小时
fileReservedTime=72
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SYNC_MASTER
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#主机ip
brokerIP1=192.168.101.21
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=10909
#namesvr
namesrvAddr=192.168.101.21:19876;192.168.101.22:19876
#是否能够自动创建topic
autoCreateTopicEnable=true
- broker-s-1.conf
#集群名称
brokerClusterName=DefaultCluster
#broker名称
brokerName=broker-1
#brokerId master用0 slave用其他
brokerId=1
#清理时机
deleteWhen=4
#文件保留时长 72小时
fileReservedTime=72
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SLAVE
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#主机ip
brokerIP1=192.168.101.21
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=10910
#namesrv
namesrvAddr=192.168.101.21:19876;192.168.101.22:19876
#是否能够自动创建topic
autoCreateTopicEnable=true
- docker-compose.yml
version: '3.5'
services:
namesrv1:
image: foxiswho/rocketmq:4.8.0
container_name: namesrv1
ports:
- 19876:9876
volumes:
- /rocketMq/namesrv1/log:/opt/logs
- /rocketMq/namesrv1/data:/opt/store
command: sh mqnamesrv
networks:
rocketmq:
aliases:
- namesrv1
broker-m-1:
image: foxiswho/rocketmq:4.8.0
container_name: broker-m-1
links:
- namesrv1:namesrv1
ports:
- 10909:10909
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "namesrv1:19876"
JAVA_OPTS: "-Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
volumes:
- /rocketMq/broker-m-1/log:/opt/logs
- /rocketMq/broker-m-1/data:/opt/store
- /rocketMq/broker-m-1/conf/broker-m-1.conf:/opt/rocketmq-4.8.0/conf/broker-m-1.conf
command: sh mqbroker -c /opt/rocketmq-4.8.0/conf/broker-m-1.conf autoCreateTopicEnable=true &
networks:
rocketmq:
aliases:
- broker-m-1
broker-s-1:
image: foxiswho/rocketmq:4.8.0
container_name: broker-s-1
links:
- namesrv1:namesrv1
ports:
- 11909:10909
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "namesrv1:19876"
JAVA_OPTS: "-Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
volumes:
- /rocketMq/broker-s-1/log:/opt/logs
- /rocketMq/broker-s-1/data:/opt/store
- /rocketMq/broker-s-1/conf/broker-s-1.conf:/opt/rocketmq-4.8.0/conf/broker-s-1.conf
command: sh mqbroker -c /opt/rocketmq-4.8.0/conf/broker-s-1.conf autoCreateTopicEnable=true &
networks:
rocketmq:
aliases:
- broker-s-1
networks:
rocketmq:
name: rocketmq
driver: bridge
虚拟机二配置文件
- broker-m-1.conf
#集群名称
brokerClusterName=DefaultCluster
#broker名称
brokerName=broker-2
#brokerId master用0 slave用其他
brokerId=0
#清理时机
deleteWhen=4
#文件保留时长 72小时
fileReservedTime=72
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SYNC_MASTER
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#主机ip
brokerIP1=192.168.101.22
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=10909
#namesvr
namesrvAddr=192.168.101.21:19876;192.168.101.22:19876
#是否能够自动创建topic
autoCreateTopicEnable=true
- broker-s-1.conf
#集群名称
brokerClusterName=DefaultCluster
#broker名称
brokerName=broker-2
#brokerId master用0 slave用其他
brokerId=1
#清理时机
deleteWhen=4
#文件保留时长 72小时
fileReservedTime=72
#broker角色 -ASYNC_MASTER异步复制 -SYNC_MASTER同步双写 -SLAVE
brokerRole=SLAVE
#刷盘策略 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#主机ip
brokerIP1=192.168.101.22
#对外服务的监听接口,同一台机器上部署多个broker,端口号要不相同
listenPort=10910
#namesrv
namesrvAddr=192.168.101.21:19876;192.168.101.22:19876
#是否能够自动创建topic
autoCreateTopicEnable=true
- docker-compose.yml
version: '3.5'
services:
namesrv1:
image: foxiswho/rocketmq:4.8.0
container_name: namesrv1
ports:
- 19876:9876
volumes:
- /rocketMq/namesrv1/log:/opt/logs
- /rocketMq/namesrv1/data:/opt/store
command: sh mqnamesrv
networks:
rocketmq:
aliases:
- namesrv1
broker-m-1:
image: foxiswho/rocketmq:4.8.0
container_name: broker-m-1
links:
- namesrv1:namesrv1
ports:
- 10909:10909
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "namesrv1:19876"
JAVA_OPTS: "-Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
volumes:
- /rocketMq/broker-m-1/log:/opt/logs
- /rocketMq/broker-m-1/data:/opt/store
- /rocketMq/broker-m-1/conf/broker-m-1.conf:/opt/rocketmq-4.8.0/conf/broker-m-1.conf
command: sh mqbroker -c /opt/rocketmq-4.8.0/conf/broker-m-1.conf autoCreateTopicEnable=true &
networks:
rocketmq:
aliases:
- broker-m-1
broker-s-1:
image: foxiswho/rocketmq:4.8.0
container_name: broker-s-1
links:
- namesrv1:namesrv1
ports:
- 11909:10909
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "namesrv1:19876"
JAVA_OPTS: "-Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
volumes:
- /rocketMq/broker-s-1/log:/opt/logs
- /rocketMq/broker-s-1/data:/opt/store
- /rocketMq/broker-s-1/conf/broker-s-1.conf:/opt/rocketmq-4.8.0/conf/broker-s-1.conf
command: sh mqbroker -c /opt/rocketmq-4.8.0/conf/broker-s-1.conf autoCreateTopicEnable=true &
networks:
rocketmq:
aliases:
- broker-s-1
networks:
rocketmq:
name: rocketmq
driver: bridge
ps:因为nameserver 没有使用配置文件,所以docker容器里面的端口使用需要注意(19876:9876),前面的映射端口只要不重复就好,后面的使用默认9876端口。
执行命令建立目录
mkdir -p /rocketMq/namesrv1/log &&
mkdir -p /rocketMq/namesrv1/data &&
mkdir -p /rocketMq/broker-m-1/log &&
mkdir -p /rocketMq/broker-m-1/data &&
mkdir -p /rocketMq/broker-m-1/conf &&
mkdir -p /rocketMq/broker-s-1/log &&
mkdir -p /rocketMq/broker-s-1/data &&
mkdir -p /rocketMq/broker-s-1/conf
将配置文件放到对应的目录下面
前提安装好docker-compose(https://docs.docker.com/compose/install/)
ps:安装docker-compose命令
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
执行命令:
docker-compose -f docker-compose.yml up -d
至此dokcer 安装rocketmq 结束