Docker 搭建部署 RocketMQ 遇到broker 253问题
- 官方文档:RocketMQ-Docker
- 官方docker镜像:This is the Git repo of the Docker Image for Apache RocketMQ and official docker hub repo
- 使用命令查询docker镜像
docker search apache/rocketmq
- 拉取镜像
docker pull apache/rocketmq:4.9.1
(此处4.9.1为我下载的版本,不同自己改就好了) - 根据流程操作
cd /home/rocketmq
mkdir -p data/broker/conf && cd data/broker/conf
vi broker.conf
, 并写入
brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH #set `brokerIP1` if you want to set physical IP as broker IP. brokerIP1=10.10.0.10
- 同理创建
mkdir -p data1/broker/conf && cd data1/broker/conf
vi broker.conf
,并写入
brokerClusterName = DefaultCluster brokerName = broker-b brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH #set `brokerIP1` if you want to set physical IP as broker IP. brokerIP1=10.10.0.10
- 最后
cd /home/rocketmq
,创建 docker-compose.yml 写入
version: '2' services: #Service for nameserver namesrv: image: apache/rocketmq:4.9.1 container_name: rmqnamesrv ports: - 9876:9876 environment: - JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m volumes: - ./data/namesrv/logs:/home/rocketmq/logs command: sh mqnamesrv #Service for broker broker: image: apache/rocketmq:4.9.1 container_name: rmqbroker links: - namesrv ports: - 10909:10909 - 10911:10911 - 10912:10912 environment: - NAMESRV_ADDR=namesrv:9876 - JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m volumes: - ./data/broker/logs:/home/rocketmq/logs - ./data/broker/store:/home/rocketmq/store - ./data/broker/conf/broker.conf:/opt/rocketmq-4.9.1/conf/broker.conf command: sh mqbroker -c /opt/rocketmq-4.9.1/conf/broker.conf #Service for another broker -- broker1 broker1: image: apache/rocketmq:4.9.1 container_name: rmqbroker1 links: - namesrv ports: - 10929:10909 - 10931:10911 - 10932:10912 environment: - NAMESRV_ADDR=namesrv:9876 - JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m volumes: - ./data1/broker/logs:/home/rocketmq/logs - ./data1/broker/store:/home/rocketmq/store - ./data1/broker/conf/broker.conf:/opt/rocketmq-4.9.1/conf/broker.conf command: sh mqbroker -c /opt/rocketmq-4.9.1/conf/broker.conf
- 当前文件结构如下:
- 执行
docker-compose up
启动 - 感觉流程都挺对,但是broker节点启动一直退出(exited with code 253),但是namesrv节点可以启动成功
- 搜索看到有博主说是容器数据卷映射没有权限的问题,试过但是没有解决…
- 换了一种启动方式可以成功(主要是参考官方文档FAQ部分)
- 启动namesrv
docker run -d -p 9876:9876 -v `pwd`/datanamesrv/logs:/root/logs --name rmqnamesrv -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" apache/rocketmq:4.9.1 sh mqnamesrv
- 启动broker
docker run -d -p 10911:10911 -p 10909:10909 -v `pwd`/data/logs:/root/logs -v `pwd`/data/store:/root/store -v `pwd`/data1/broker/conf/broker.conf:/home/rocketmq/roc ketmq-4.9.1/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" apache/rocketmq:4.9.1 sh mqbroker - c /home/rocketmq/rocketmq-4.9.1/conf/broker.conf
- 启动broker1
docker run -d -p 10931:10911 -p 10929:10909 -v `pwd`/data1/logs:/root/logs -v `pwd`/data1/store:/root/store -v `pwd`/data1/broker/conf/broker.conf:/home/rocketmq/roc ketmq-4.9.1/conf/broker.conf --name rmqbroker1 --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" apache/rocketmq:4.9.1 sh mqbroker - c /home/rocketmq/rocketmq-4.9.1/conf/broker.conf
====================== 一条分割线 ========== 一条分割线 =========================
最终整合了一下也可以使用,修改docker-compose.yml与命令行方式大意相同,主要修改的地方是docker挂载的路径从 /home/rocketmq/XXX 变成 /root/XXX,还未知道原因…
services:
#Service for nameserver
namesrv:
image: apache/rocketmq:4.9.1
container_name: rmqnamesrv
ports:
- 9876:9876
environment:
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
volumes:
- $PWD/datanamesrv/logs:/root/logs
command: sh mqnamesrv
#Service for broker
broker:
image: apache/rocketmq:4.9.1
container_name: rmqbroker
links:
- namesrv
depends_on:
- namesrv
ports:
- 10909:10909
- 10911:10911
- 10912:10912
environment:
NAMESRV_ADDR: "namesrv:9876"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
volumes:
- $PWD/data/logs:/root/logs
- $PWD/data/store:/root/store
- $PWD/data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.1/conf/broker.conf
command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.1/conf/broker.conf
#Service for another broker -- broker1
broker1:
image: apache/rocketmq:4.9.1
container_name: rmqbroker1
links:
- namesrv
depends_on:
- namesrv
ports:
- 10929:10909
- 10931:10911
- 10932:10912
environment:
NAMESRV_ADDR: "namesrv:9876"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
volumes:
- $PWD/data1/logs:/root/logs
- $PWD/data1/store:/root/store
- $PWD/data1/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.1/conf/broker.conf
command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.1/conf/broker.conf