总的部署规则参考:
https://rocketmq.apache.org/zh/docs/deploymentOperations/01deploy
使用单台机器多个docker模拟多台机器,docker的编译参考
目前采用 多节点(集群)多副本模式-异步复制
在一台机器上启动2个Master和2个Slave来模拟集群的情况
启动nameserver
### 首先启动Name Server
$ nohup sh mqnamesrv &
### 验证Name Server 是否启动成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
修改编译脚本(在8G的单机上模拟一个集群,所以需要设置最大占用,不然无法启动),修改broker的运行大小即可
#/ nano image-build/scripts/run-broker-customize.sh
system_memory_in_mb="2048"
system_cpu_cores="2"
编译docker
git clone https://ghproxy.com/https://github.com/apache/rocketmq-docker.git
cd rocketmq-docker/image-build/
sh build-image.sh 5.1.0 alphine
sh build-image.sh 5.1.0
编译创建docker配置文件
其实是把之前的配置文件复制一份出来
注意:容器内部用的rocketmq用户,因此文件映射到外部时 .docker的宿主机目录权限要改成777
docker run -d -p 10911:10911 -p 10909:10909 -v `pwd`/data/broker/logs:/root/logs -v `pwd`/data/broker/store:/root/store -v `pwd`/data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.5.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" apache/rocketmq:4.5.0 sh mqbroker -c /home/rocketmq/rocketmq-4.5.0/conf/broker.conf
配置好相关yaml文件
version: "3.4"
services:
namesrv:
image: apache/rocketmq:5.1.0-alpine
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- ./data/namesrv/logs:/home/rocketmq/logs
command: sh mqnamesrv
broker-a:
image: apache/rocketmq:5.1.0-alpine
container_name: rmqbroker-a
ports:
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
- ./data/broker-a/logs:/home/rocketmq/logs
- ./data/broker-a/store:/home/rocketmq/store
- ./data/broker-a/conf/broker.conf:/home/rocketmq/rocketmq-5.1.0/conf/broker.conf
command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
depends_on:
- namesrv
broker-a-s:
image: apache/rocketmq:5.1.0-alpine
container_name: rmqbroker-a-s
ports:
- 10929:10909
- 10931:10911
- 10932:10912
volumes:
- ./data/broker-a-s/logs:/home/rocketmq/logs
- ./data/broker-a-s/store:/home/rocketmq/store
- ./data/broker-a-s/conf/broker.conf:/home/rocketmq/rocketmq-5.1.0/conf/broker.conf
command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
depends_on:
- namesrv
broker-b:
image: apache/rocketmq:5.1.0-alpine
container_name: rmqbroker-b
ports:
- 11909:10909
- 11911:10911
- 11912:10912
volumes:
- ./data/broker-b/logs:/home/rocketmq/logs
- ./data/broker-b/store:/home/rocketmq/store
- ./data/broker-b/conf/broker.conf:/home/rocketmq/rocketmq-5.1.0/conf/broker.conf
command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
depends_on:
- namesrv
broker-b-s:
image: apache/rocketmq:5.1.0-alpine
container_name: rmqbroker-b-s
ports:
- 11929:10909
- 11931:10911
- 11932:10912
volumes:
- ./data/broker-b-s/logs:/home/rocketmq/logs
- ./data/broker-b-s/store:/home/rocketmq/store
- ./data/broker-b-s/conf/broker.conf:/home/rocketmq/rocketmq-5.1.0/conf/broker.conf
command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
depends_on:
- namesrv