文章目录
docker部署rocketmq双主双从模式
环境准备
机器两台:192.168.56.121,192.168.56.122,192.168.56.123,192.168.56.124
1.镜像拉取
docker pull foxiswho/rocketmq:4.7.0
2.配置文件
创建四个配置文件broker-a.properties, broker-a-s.properties,broker-b.properties,broker-b-s.properties
配置文件broker-a.properties
#集群名字
brokerClusterName=DefaultCluster
#服务分片名称
brokerName=broker-a
#集群中 0 表示 Master,>0 表示 Slave
brokerId=0
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#对外ip
brokerIP1=192.168.56.121
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessaeThreadPoolNums=128
#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=300 #或者更大
配置文件broker-a-s.properties,在配置文件broker-a.properties的基础上修改:
#服务分片名称
brokerName=broker-a
#集群中 0 表示 Master,>0 表示 Slave
brokerId=1
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#对外ip
brokerIP1=192.168.56.122
配置文件broker-b.properties,在配置文件broker-a.properties的基础上修改:
#服务分片名称
brokerName=broker-b
#集群中 0 表示 Master,>0 表示 Slave
brokerId=0
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#对外ip
brokerIP1=192.168.56.123
配置文件broker-a-s.properties,在配置文件broker-a.properties的基础上修改:
#服务分片名称
brokerName=broker-b
#集群中 0 表示 Master,>0 表示 Slave
brokerId=1
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#对外ip
brokerIP1=192.168.56.124
3.启动容器
启动rocket需要启动两个服务:namesrv和broker,启动顺序要先namesrv后broker
1)启动namesrv
在两台机器(192.168.56.121;192.168.56.122)都启动,执行脚本:(把–name rmqnamesrv-1 改成不一样就行)
docker run -d \
--network net \
-v /usr/local/docker/rocketmq/mqbroker/logs:/home/rocketmq/logs \
--name rmqnamesrv-1 \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \
-p 9876:9876 \
foxiswho/rocketmq:4.7.0 sh mqnamesrv
2)启动broker
主1:192.168.56.121
docker run -d \
-v /usr/local/docker/rocketmq/conf/2m-2s-sync:/home/rocketmq/conf \
--name rmqbroker-a-master \
-e "NAMESRV_ADDR=192.168.56.121:9876;192.168.56.122:9876" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m -XX:-AssumeMP" \
-p 10911:10911 -p 10912:10912 -p 10909:10909 \
foxiswho/rocketmq:4.7.0 \
sh mqbroker -c /home/rocketmq/conf/broker-a.properties
从1:192.168.56.122
docker run -d \
-v /usr/local/docker/rocketmq/conf/2m-2s-sync:/home/rocketmq/conf \
--name rmqbroker-a-slave \
-e "NAMESRV_ADDR=192.168.56.121:9876;192.168.56.122:9876" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m -XX:-AssumeMP" \
-p 10911:10911 -p 10912:10912 -p 10909:10909 \
foxiswho/rocketmq:4.7.0 \
sh mqbroker -c /home/rocketmq/conf/broker-a-s.properties
主2:192.168.56.123
docker run -d \
-v /usr/local/docker/rocketmq/conf/2m-2s-sync:/home/rocketmq/conf \
--name rmqbroker-b-master \
-e "NAMESRV_ADDR=192.168.56.121:9876;192.168.56.122:9876" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m -XX:-AssumeMP" \
-p 10911:10911 -p 10912:10912 -p 10909:10909 \
foxiswho/rocketmq:4.7.0 \
sh mqbroker -c /home/rocketmq/conf/broker-b.properties
从2:192.168.56.124
docker run -d \
-v /usr/local/docker/rocketmq/conf/2m-2s-sync:/home/rocketmq/conf \
--name rmqbroker-b-slave \
-e "NAMESRV_ADDR=192.168.56.121:9876;192.168.56.122:9876" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m -XX:-AssumeMP" \
-p 10911:10911 -p 10912:10912 -p 10909:10909 \
foxiswho/rocketmq:4.7.0 \
sh mqbroker -c /home/rocketmq/conf/broker-b-s.properties
注:如果要把数据挂载出来可以加上
-v /usr/local/docker/rocketmq/mqbroker/logs:/home/rocketmq/logs
-v /usr/local/docker/rocketmq/mqbroker/store:/home/rocketmq/store \
4.安装rocketmq-console控制台可视化界面
1)镜像
docker pull styletang/rocketmq-console-ng:1.0.0
2)启动容器
docker run -d \
--name rmqconsole \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.56.121:9876;192.168.56.122:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8180:8080 -t styletang/rocketmq-console-ng:1.0.0
3)访问界面
http://192.168.56.123:8180