天天看點

RocketMQ基于Docker/Linux方式安裝步驟

RocketMQ基于Docker方式安裝步驟

  • ​​一、Linux 環境​​
  • ​​二、RocketMQ鏡像版本​​
  • ​​2.1、三個鏡像​​
  • ​​三、安裝步驟​​
  • ​​3.1、建構目錄如下圖​​
  • ​​3.2、啟動容器​​
  • ​​四、Demo操作​​
  • ​​五、關閉服務​​

一、Linux 環境

JDK + Docker-Compose

二、RocketMQ鏡像版本

2.1、三個鏡像

foxiswho/rocketmq:server,服務端

foxiswho/rocketmq:broker,節點

styletang/rocketmq-console-ng,web端,便于監控

也就是說,我要同時安裝這三個鏡像,才算是RocketMQ的完整安裝

Docker-Compose可操作多個鏡像的安裝

三、安裝步驟

3.1、建構目錄如下圖

RocketMQ基于Docker/Linux方式安裝步驟

其中logs和store是建構過程中才出現的,是以,隻需要在指定的目錄下建構broker.conf 和docker-compose.yml即可,這兩個配置的具體配置如下

broker.conf

# 是否允許 Broker 自動建立訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true

# Broker 對外服務的監聽端口
listenPort=10911

# 删除檔案時間點,預設淩晨4點
deleteWhen=04

# 檔案保留時間,預設48小時
fileReservedTime=120

# commitLog 每個檔案的大小預設1G
mapedFileSizeCommitLog=1073741824

# ConsumeQueue 每個檔案預設存 30W 條,根據業務情況調整
mapedFileSizeConsumeQueue=300000

# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 檢測實體檔案磁盤空間
diskMaxUsedSpaceRatio=88
# 存儲路徑
# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store
# commitLog 存儲路徑
# storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog
# 消費隊列存儲
# storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue
# 消息索引存儲路徑
# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index
# checkpoint 檔案存儲路徑
# storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint
# abort 檔案存儲路徑
# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort
# 限制的消息大小
maxMessageSize=65536

# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000

# Broker 的角色
# - ASYNC_MASTER 異步複制Master
# - SYNC_MASTER 同步雙寫Master
# - SLAVE
brokerRole=ASYNC_MASTER

# 刷盤方式
# - ASYNC_FLUSH 異步刷盤
# - SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH

# 發消息線程池數量
# sendMessageThreadPoolNums=128
# 拉消息線程池數量
# pullMessageThreadPoolNums=128      

docker-compose.yml

version: '3.5'
services:
  rmqnamesrv:
    image: foxiswho/rocketmq:server
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - ./data/logs:/opt/logs
      - ./data/store:/opt/store
    networks:
        rmq:
          aliases:
            - rmqnamesrv

  rmqbroker:
    image: foxiswho/rocketmq:broker
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
    volumes:
      - ./data/logs:/opt/logs
      - ./data/store:/opt/store
      - ./data/brokerconf/broker.conf:/etc/rocketmq/broker.conf
    environment:
        NAMESRV_ADDR: "rmqnamesrv:9876"
        JAVA_OPTS: " -Duser.home=/opt"
        JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
    command: mqbroker -c /etc/rocketmq/broker.conf
    depends_on:
      - rmqnamesrv
    networks:
      rmq:
        aliases:
          - rmqbroker

  rmqconsole:
    image: styletang/rocketmq-console-ng
    container_name: rmqconsole
    ports:
      - 10801:8080
    environment:
        JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    depends_on:
      - rmqnamesrv
    networks:
      rmq:
        aliases:
          - rmqconsole

networks:
  rmq:
    name: rmq
    driver: bridge      

要注意,這三個鏡像的端口映射,不要使用正在運作的端口,還有就是當你更改端口時,要删除鏡像(我第一次就是使用了正在運作的端口,當我發現改了端口,run的時候,還是會有異常,後來 docker rm container才可以),

3.2、啟動容器

docker-compose up -d      
RocketMQ基于Docker/Linux方式安裝步驟

可檢視三個容器,建構完成,這時我們浏覽器打開通路

ip:端口(console的端口)即ip:10801

四、Demo操作

五、關閉服務