rockermq主从部署(docker)

 (1)架构图

 

(2)主机一部署a-master和b-slave节点

docker-compose.yml

version: '2'
services:
  #Service for nameserver
  namesrv:
    image: apacherocketmq/rocketmq:4.9.3-alpine
    container_name: rmqnamesrv-a
#    network_mode: "host"
    environment:
      - JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m
    ports:
      - 9876:9876
    volumes:
      - /apps/rocketmq/data/namesrv/logs:/home/rocketmq/logs
    command: sh mqnamesrv
  #Service for broker master
  broker-a-master:
    image: apacherocketmq/rocketmq:4.9.3-alpine
    container_name: rmqbroker-a-master
    links:
      - namesrv
#    network_mode: "host"
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      #- NAMESRV_ADDR=namesrv:9876
      #- JAVA_OPT_EXT=-server -Xms2048m -Xmx2048m -Xmn2048m
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn512m
    volumes:
      - /apps/rocketmq/data/broker-a-m/logs:/home/rocketmq/logs
      - /apps/rocketmq/data/broker-a-m/store:/home/rocketmq/store
      #- ./data/broker/conf/broker.conf:/opt/rocketmq-ROCKETMQ_VERSION/conf/broker.conf
      - ./broker-a-m.conf:/opt/rocketmq-4.9.3/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.9.3/conf/broker.conf
  #Service for broker slave
  broker-b-slave:
    image: apacherocketmq/rocketmq:4.9.3-alpine
    container_name: rmqbroker-b-slave
    links:
      - namesrv
#    network_mode: "host"
    ports:
      - 10919:10919
      - 10921:10921
      - 10922:10922
    environment:
      #- NAMESRV_ADDR=namesrv:9876
      #- JAVA_OPT_EXT=-server -Xms2048m -Xmx2048m -Xmn2048m
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn512m
    volumes:
      - /apps/rocketmq/data/broker-b-s/logs:/home/rocketmq/logs
      - /apps/rocketmq/data/broker-b-s/store:/home/rocketmq/store
      #- ./data/broker/conf/broker.conf:/opt/rocketmq-ROCKETMQ_VERSION/conf/broker.conf
      - ./broker-b-s.conf:/opt/rocketmq-4.9.3/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.9.3/conf/broker.conf
  #Service for dashboard
  rmqconsole:
    image: rocketmq-dashboard:latest
    container_name: rmqconsole
    ports:
      - 8088:8080
    environment:
      - NAMESRV_ADDR=172.16.20.66:9876;172.16.20.71:9876
a-mater
brokerClusterName = rocketmq-cluster
#brokerName = broker-a-master
# 主从名称要保持一致
brokerName = broker-a
# 主从ID要保持唯一 建议master为0 slave为1
brokerId = 0
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
# 指定broker要监听的网卡ip地址
brokerIP1 = 172.16.16.56
# master 节点用于连接到slave节点同步数据的ip
brokerIP2 = 172.16.16.55
deleteWhen = 04
fileReservedTime = 48
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr=172.16.16.55:9876;172.16.16.56:9876
#自动创建topic
autoCreateTopicEnable=true
#Broker 对外服务的监听端口,
listenPort = 10911
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
#brokerRole=ASYNC_MASTER
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
#flushDiskType=ASYNC_FLUSH
flushDiskType=SYNC_FLUSH
#修改线程
sendMessageThreadPoolNums: 8
##发送消息是否使用可重入锁
useReentrantLockWhenPutMessage: true
b-slave
brokerClusterName = rocketmq-cluster
#brokerName = broker-b-slave
# 主从名称要保持一致
brokerName = broker-b
# 主从ID要保持唯一 建议master为0 slave为1
brokerId = 1
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
# 指定broker要监听的网卡ip地址
# slave broke ip
brokerIP1 = 172.16.16.56
deleteWhen = 04
fileReservedTime = 48
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr=172.16.16.55:9876;172.16.16.56:9876
#自动创建topic
#autoCreateTopicEnable=true
autoCreateTopicEnable=true
#Broker 对外服务的监听端口 采用容器在本机部署需要修改端口
listenPort = 10921
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
#brokerRole=ASYNC_MASTER
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
#flushDiskType=ASYNC_FLUSH
flushDiskType=SYNC_FLUSH
#修改线程
sendMessageThreadPoolNums: 8
##发送消息是否使用可重入锁
useReentrantLockWhenPutMessage: true

(3)主机二部署b-master和a-slave

docker-compose.yml

version: '2'
services:
  #Service for nameserver
  namesrv:
    image: apacherocketmq/rocketmq:4.9.3-alpine
    container_name: rmqnamesrv-a
#    network_mode: "host"
    environment:
      - JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m
    ports:
      - 9876:9876
    volumes:
      - /apps/rocketmq/data/namesrv/logs:/home/rocketmq/logs
    command: sh mqnamesrv
  #Service for broker master
  broker-a-master:
    image: apacherocketmq/rocketmq:4.9.3-alpine
    container_name: rmqbroker-a-master
    links:
      - namesrv
#    network_mode: "host"
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      #- NAMESRV_ADDR=namesrv:9876
      #- JAVA_OPT_EXT=-server -Xms2048m -Xmx2048m -Xmn2048m
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn512m
    volumes:
      - /apps/rocketmq/data/broker-a-m/logs:/home/rocketmq/logs
      - /apps/rocketmq/data/broker-a-m/store:/home/rocketmq/store
      #- ./data/broker/conf/broker.conf:/opt/rocketmq-ROCKETMQ_VERSION/conf/broker.conf
      - ./broker-a-m.conf:/opt/rocketmq-4.9.3/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.9.3/conf/broker.conf
  #Service for broker slave
  broker-b-slave:
    image: apacherocketmq/rocketmq:4.9.3-alpine
    container_name: rmqbroker-b-slave
    links:
      - namesrv
#    network_mode: "host"
    ports:
      - 10919:10919
      - 10921:10921
      - 10922:10922
    environment:
      #- NAMESRV_ADDR=namesrv:9876
      #- JAVA_OPT_EXT=-server -Xms2048m -Xmx2048m -Xmn2048m
      - JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn512m
    volumes:
      - /apps/rocketmq/data/broker-b-s/logs:/home/rocketmq/logs
      - /apps/rocketmq/data/broker-b-s/store:/home/rocketmq/store
      #- ./data/broker/conf/broker.conf:/opt/rocketmq-ROCKETMQ_VERSION/conf/broker.conf
      - ./broker-b-s.conf:/opt/rocketmq-4.9.3/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.9.3/conf/broker.conf
  #Service for dashboard
  rmqconsole:
    image: rocketmq-dashboard:latest
    container_name: rmqconsole
    ports:
      - 8088:8080
    environment:
      - NAMESRV_ADDR=172.16.20.66:9876;172.16.20.71:9876
b-master
brokerClusterName = rocketmq-cluster
#brokerName = broker-b-master
# 主从名称要保持一致
brokerName = broker-b
# 主从ID要保持唯一 建议master为0 slave为1
brokerId = 0
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
brokerIP1 = 172.16.16.55
# master 节点用于连接到slave节点同步数据的ip
brokerIP2 = 172.16.16.56
deleteWhen = 04
fileReservedTime = 48
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr=172.16.16.55:9876;172.16.16.56:9876
#自动创建topic
autoCreateTopicEnable=true
#Broker 对外服务的监听端口,
listenPort = 10911
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
#brokerRole=ASYNC_MASTER
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
#flushDiskType=ASYNC_FLUSH
flushDiskType=SYNC_FLUSH
#修改线程
sendMessageThreadPoolNums: 8
##发送消息是否使用可重入锁
useReentrantLockWhenPutMessage: true
a-slave
brokerClusterName = rocketmq-cluster
#brokerName = broker-a-slave
# 主从名称要保持一致
brokerName = broker-a
# 主从ID要保持唯一 建议master为0 slave为1
brokerId = 1
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
# 指定broker要监听的网卡ip地址
# slave broke ip
brokerIP1 = 172.16.16.55
deleteWhen = 04
fileReservedTime = 48
# 内网的(阿里云有内网IP和外网IP)
namesrvAddr=172.16.16.55:9876;172.16.16.56:9876
#自动创建topic
#autoCreateTopicEnable=true
autoCreateTopicEnable=true
#Broker 对外服务的监听端口 采用容器在本机部署需要修改端口
listenPort = 10921
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
#brokerRole=ASYNC_MASTER
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
#flushDiskType=ASYNC_FLUSH
flushDiskType=SYNC_FLUSH
#修改线程
sendMessageThreadPoolNums: 8
##发送消息是否使用可重入锁
useReentrantLockWhenPutMessage: true

(4)在两台主机创建目录并授权

#node1 创建目录 并授权 用户为3000
mkdir -pv /apps/rocketmq/data/namesrv/logs \
/apps/rocketmq/data/broker-a-m/logs \
/apps/rocketmq/data/broker-a-m/store \
/apps/rocketmq/data/broker-b-s/logs \
/apps/rocketmq/data/broker-b-s/store \
chown -R    3000:3000 /apps/rocketmq/data/
#node2 创建目录 并授权 用户为3000
mkdir -pv /apps/rocketmq/data/namesrv/logs \
/apps/rocketmq/data/broker-b-m/logs \
/apps/rocketmq/data/broker-b-m/store \
/apps/rocketmq/data/broker-a-s/logs \
/apps/rocketmq/data/broker-a-s/store \
chown -R    3000:3000 /apps/rocketmq/data/
#也可以先启动容器 容器会自动创建目录 但应用无法启动 修改用户和组后在启动容器即正常
docker-compose up -d启动

(5)验证

#进去broker容器
docker exec -it rmqbroker-a sh
#建议设置为nameserver地址 不建议设置为 localhost
export NAMESRV_ADDR=127.0.0.1:9876  
#写入数据
sh  tools.sh org.apache.rocketmq.example.quickstart.Producer
#消费数据
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值