Linux,環境快速構建,Docker,docker-compose部署RocketMQ

安裝docker-compose

官方地址:https://docs。docker。com/compose/install/

安裝命令:

sudo curl -L “https://github。com/docker/compose/releases/download/1。24。1/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose

增加執行許可權:

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

檢視docker-compose版本資訊:

docker-compose -v

常用的命令:

docker-compose up //建立,啟動容器 down //停止並刪除所有的容器的和網路、資料卷等 ps //檢視所有容器 start/stop/restart //啟動/停止/重啟 容器 rm //移除停止的容器 create //建立容器 pause unpause top logs //檢視服務的日誌 kill //殺死容器 images //顯示模板檔案所有服務使用的映象 exec //在一個執行的容器中執行一條命令

注: RocketMQ Server + Broker + Console 至少需要2G的記憶體。

安裝RocketMQ Server

編寫docker-compose.yml:(

/usr/local/rocketmq

version: ‘3’services: rmqnamesrv: image: foxiswho/rocketmq:server container_name: rmqnamesrv ports: - 9876:9876 volumes: - 。/data/logs:/opt/rocketmq/logs - 。/data/store:/opt/rocketmq/store networks: rmq: aliases: - rmqnamesrv rmqbroker: image: foxiswho/rocketmq:broker container_name: rmqbroker ports: - 10909:10909 - 10911:10911 volumes: - 。/data/logs:/opt/rocketmq/logs - 。/data/store:/opt/rocketmq/store - 。/data/brokerconf/broker。conf:/usr/local/rocketmq/broker。conf environment: NAMESRV_ADDR: “rmqnamesrv:9876” JAVA_OPTS: “ -Duser。home=/opt” JAVA_OPT_EXT: “-server -Xms128m -Xmx128m -Xmn128m” command: mqbroker -c /usr/local/rocketmq/broker。conf depends_on: - rmqnamesrv networks: rmq: aliases: - rmqbroker rmqconsole: image: styletang/rocketmq-console-ng container_name: rmqconsole ports: - 8080:8080 environment: JAVA_OPTS: “-Drocketmq。namesrv。addr=rmqnamesrv:9876 -Dcom。rocketmq。sendMessageWithVIPChannel=false” depends_on: - rmqnamesrv networks: rmq: aliases: - rmqconsole networks: rmq: driver: bridge

配置檔案:/usr/local/rocketmq/broker.conf

# 所屬叢集名字brokerClusterName=DefaultCluster# broker 名字,注意此處不同的配置檔案填寫的不一樣,如果在 broker-a。properties 使用: broker-a,# 在 broker-b。properties 使用: broker-bbrokerName=broker-a# 0 表示 Master,> 0 表示 SlavebrokerId=0# nameServer地址,分號分割# namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876# 啟動IP,如果 docker 報 com。alibaba。rocketmq。remoting。exception。RemotingConnectException: connect to <192。168。0。120:10909> failed# 解決方式1 加上一句 producer。setVipChannelEnabled(false);,解決方式2 brokerIP1 設定宿主機IP,不要使用docker 內部IP# brokerIP1=192。168。0。253# 在傳送訊息時,自動建立伺服器不存在的topic,預設建立的佇列數defaultTopicQueueNums=4# 是否允許 Broker 自動建立 Topic,建議線下開啟,線上關閉 !!!這裡仔細看是 false,false,falseautoCreateTopicEnable=true# 是否允許 Broker 自動建立訂閱組,建議線下開啟,線上關閉autoCreateSubscriptionGroup=true# Broker 對外服務的監聽埠listenPort=10911# 刪除檔案時間點,預設凌晨4點deleteWhen=04# 檔案保留時間,預設48小時fileReservedTime=120# commitLog 每個檔案的大小預設1GmapedFileSizeCommitLog=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# - SLAVEbrokerRole=ASYNC_MASTER# 刷盤方式# - ASYNC_FLUSH 非同步刷盤# - SYNC_FLUSH 同步刷盤flushDiskType=ASYNC_FLUSH# 發訊息執行緒池數量# sendMessageThreadPoolNums=128# 拉訊息執行緒池數量# pullMessageThreadPoolNums=128

執行命令,建立/啟動容器:

# docker-compose up -d

執行命令,檢視所有容器:

# docker-compose ps

訪問地址:

http://192。168。3。22:8080/

Linux,環境快速構建,Docker,docker-compose部署RocketMQ