RocketMQ系列:docker-compose搭建rocketmq的集群模式


接上文:docker搭建rocketmq單機環境

本文介紹如何使用docker-compose搭建rocketmq的集群環境

1. 安裝docker-compose

1.1 下載docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

1.2 增加可執行權限

sudo chmod +x /usr/local/bin/docker-compose

1.3 生成軟鏈接

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

1.4 驗證docker-compose是否安裝成功

docker-compose version

2. 啟動rocketmq

2.1 docker-compose.yml

docker-compose.yml在rocketmq-docker/stages/4.7.1/templates/docker-compose目錄下面

version: '2'
services:
  #Service for nameserver
  namesrv:
    image: apacherocketmq/rocketmq:4.7.1
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - ./data/namesrv/logs:/home/rocketmq/logs
    command: sh mqnamesrv

  #Service for broker
  broker:
    image: apacherocketmq/rocketmq:4.7.1
    container_name: rmqbroker
    links:
      - namesrv
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=namesrv:9876
    volumes:
      - ./data/broker/logs:/home/rocketmq/logs
      - ./data/broker/store:/home/rocketmq/store
      - ./data/broker/conf/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.7.1/conf/broker.conf
 #Service for another broker -- broker1
  broker1:
    image: apacherocketmq/rocketmq:4.7.1
    container_name: rmqbroker-b
    links:
      - namesrv
    ports:
      - 10929:10909
      - 10931:10911
      - 10932:10912
    environment:
      - NAMESRV_ADDR=namesrv:9876
    volumes:
      - ./data1/broker/logs:/home/rocketmq/logs
      - ./data1/broker/store:/home/rocketmq/store
      - ./data1/broker/conf/broker.conf:/opt/rocketmq-4.7.1/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.7.1/conf/broker.conf

可以看到docker-compose啟動了兩個broker分片作為一個broker集群,連接到一個nameserver,我們看下broker-a和broker-b的配置

broker1:/data1/broker/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
broker:/data/broker/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

2.2 docker-compose啟動rocketmq:4.7.1

#進入對應目錄
cd rocketmq-docker/stages/4.7.1/template

#執行docker-compose腳本(如果build的rocketmq是centos,則直接執行成功)
sh play-docker-compose.sh

注意:如果你build的是rocketmq的alpine版本,這里可能會失敗。

2.2 解決方法

tag一個新的rocketmq的鏡像,執行如下:

docker tag apacherocketmq/rocketmq:4.7.1-alpine apacherocketmq/rocketmq:4.7.1

2.3 重新執行

sh play-docker-compose.sh

2.4 docker-compose相關命令

2.4.1 查看docker-compose啟動的容器

cd rocketmq-docker/stages/4.7.1/templates/docker-compose
docker-compose ps

2.4.2 停止docker-compose啟動的容器

cd rocketmq-docker/stages/4.7.1/templates/docker-compose
docker-compose stop

 

2.4.3 啟動docker-compose定義的容器

cd rocketmq-docker/stages/4.7.1/templates/docker-compose
docker-compose up

2.4.4 后台啟動docker-compose定義的容器

cd rocketmq-docker/stages/4.7.1/templates/docker-compose
#-d表示后台啟動 docker-compose up -d

2.4.5 強制刪除docker-compose啟動的容器

cd rocketmq-docker/stages/4.7.1/templates/docker-compose
docker-compose rm -fs

3. 啟動控制台

啟動

docker run --net docker-compose_default -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8090:8080 --name rmqconsole -t styletang/rocketmq-console-ng

查看

瀏覽器打開:http://{你機器的ip}:8090
如圖可以看到,docker-compose默認啟動了兩個broker的集群(master模式)

  

博主:測試生財(一個不為996而996的測開碼農)

座右銘:專注測試開發與自動化運維,努力讀書思考寫作,為內卷的人生奠定財務自由。

內容范疇:技術提升,職場雜談,事業發展,閱讀寫作,投資理財,健康人生。

csdn:https://blog.csdn.net/ccgshigao

博客園:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

微信公眾號:測試生財(定期分享獨家內容和資源)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM