RocketMQ Docker-Compose部署
| 系统 | 架构 | IP | 主机 | 内核 | Docker Compose version |
|---|---|---|---|---|---|
| Anolis OS(8.6) | x86_64 | 172.16.5.81 | node1 | 4.19.91-26 | v2.34.0 |
| Anolis OS(8.6) | x86_64 | 172.16.5.82 | node2 | 4.19.91-26 | v2.34.0 |
| Anolis OS(8.6) | x86_64 | 172.16.5.83 | node3 | 4.19.91-26 | v2.34.0 |
# 1. 镜像
docker pull apache/rocketmq:5.3.1
docker pull apacherocketmq/rocketmq-dashboard:latest
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apacherocketmq/rocketmq-dashboard latest 3027b0307640 2 months ago 411MB
apache/rocketmq 5.3.1 0a6c08fe5390 5 months ago 370MB
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2.创建broker配置、数据目录
# 2.1 node1
mkdir -p /opt/rocketmq/{nameserver,conf,store,logs}
mdkir -p /opt/rocketmq/nameserver/logs
---
cat >/opt/rocketmq/conf/broker-n0.conf<<EOF
# 集群名称
brokerClusterName = RaftCluster
# broker集群名称
brokerName=RaftNode00
# 监听端口
listenPort=30911
# namesrv地址列表
namesrvAddr=172.16.5.81:9876;172.16.5.82:9876;172.16.5.83:9876、
# 主题不存在时是否自动创建主题
autoCreateTopicEnable=true
# 订阅组不存在时是否自动创建订阅组
autoCreateSubscriptionGroup=true
# 数据存储根路径
storePathRootDir=/home/rocketmq/store/node00
# commitlog数据存储根路径
storePathCommitLog=/home/rocketmq/store/node00/commitlog
# 是否启用DLeger集群模式
enableDLegerCommitLog=true
# 与brokerName保持一致就好
dLegerGroup=RaftNode00
# dLeger集群下的节点配置,端口为listenPort+1000
dLegerPeers=n0-172.16.5.81:40911;n1-172.16.5.82:40911;n2-172.16.5.83:40911
# 当前节点在dLeger集群下的标识
dLegerSelfId=n0
# 服务端处理消息发送线程池数量
sendMessageThreadPoolNums=16
# 同步刷盘
flushDiskType=SYNC_FLUSH
EOF
---
cat>/opt/rocketmq/rmqnamesr.yaml<<EOF
version: '3'
services:
namesrv:
image: apache/rocketmq:5.3.1
container_name: rmqnamesr
network_mode: host
environment:
- JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m
volumes:
- /opt/rocketmq/nameserver/logs:/home/rocketmq/logs
command: sh mqnamesrv
restart: always
EOF
---
cat>/opt/rocketmq/rmqbroker.yaml<<EOF
version: '3'
services:
broker:
image: apache/rocketmq:5.3.1
container_name: rmqbroker
network_mode: host
environment:
- JAVA_OPT_EXT=-Xmx2048m -Xms2048m -Xmn1024m
volumes:
- /opt/rocketmq/logs:/home/rocketmq/logs
- /opt/rocketmq/store:/home/rocketmq/store
- /opt/rocketmq/conf:/home/rocketmq/conf
command: sh mqbroker -c /home/rocketmq/conf/broker-n0.conf
restart: always
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 2.2 node2
mkdir -p /opt/rocketmq/{nameserver,conf,store,logs}
mdkir -p /opt/rocketmq/nameserver/logs
---
cat >/opt/rocketmq/conf/broker-n1.conf<<EOF
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=172.16.5.81:9876;172.16.5.82:9876;172.16.5.83:9876
storePathRootDir=/home/rocketmq/store/node01
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
storePathCommitLog=/home/rocketmq/store/node01/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-172.16.5.81:40911;n1-172.16.5.82:40911;n2-172.16.5.83:40911
dLegerSelfId=n1
sendMessageThreadPoolNums=16
flushDiskType=SYNC_FLUSH
EOF
---
cat>/opt/rocketmq/rmqnamesr.yaml<<EOF
version: '3'
services:
namesrv:
image: apache/rocketmq:5.3.1
container_name: rmqnamesr
network_mode: host
environment:
- JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m
volumes:
- /opt/rocketmq/nameserver/logs:/home/rocketmq/logs
command: sh mqnamesrv
restart: always
EOF
---
cat>/opt/rocketmq/rmqbroker.yaml<<EOF
version: '3'
services:
broker:
image: apache/rocketmq:5.3.1
container_name: rmqbroker
network_mode: host
environment:
- JAVA_OPT_EXT=-Xmx2048m -Xms2048m -Xmn1024m
volumes:
- /opt/rocketmq/logs:/home/rocketmq/logs
- /opt/rocketmq/store:/home/rocketmq/store
- /opt/rocketmq/conf:/home/rocketmq/conf
command: sh mqbroker -c /home/rocketmq/conf/broker-n1.conf
restart: always
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 2.3 node3
mkdir -p /opt/rocketmq/{nameserver,conf,store,logs}
mdkir -p /opt/rocketmq/nameserver/logs
---
cat >/opt/rocketmq/conf/broker-n2.conf<<EOF
brokerClusterName=RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=172.16.5.81:9876;172.16.5.82:9876;172.16.5.83:9876
storePathRootDir=/home/rocketmq/store/node02
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
storePathCommitLog=/home/rocketmq/store/node02/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-172.16.5.81:40911;n1-172.16.5.82:40911;n2-172.16.5.83:40911
dLegerSelfId=n2
sendMessageThreadPoolNums=16
flushDiskType=SYNC_FLUSH
EOF
---
cat>/opt/rocketmq/rmqnamesr.yaml<<EOF
version: '3'
services:
namesrv:
image: apache/rocketmq:5.3.1
container_name: rmqnamesr
network_mode: host
environment:
- JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m # 本次为demo实际按需
volumes:
- /opt/rocketmq/nameserver/logs:/home/rocketmq/logs
command: sh mqnamesrv
restart: always
EOF
---
cat>/opt/rocketmq/rmqbroker.yaml<<EOF
version: '3'
services:
broker:
image: apache/rocketmq:5.3.1
container_name: rmqbroker
network_mode: host
environment:
- JAVA_OPT_EXT=-Xmx2048m -Xms2048m -Xmn1024m # 本次为demo实际按需
volumes:
- /opt/rocketmq/logs:/home/rocketmq/logs
- /opt/rocketmq/store:/home/rocketmq/store
- /opt/rocketmq/conf:/home/rocketmq/conf
command: sh mqbroker -c /home/rocketmq/conf/broker-n2.conf
restart: always
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 3.部署
# 3.1 三个节点依序启动nameserver
docker-compose -f /opt/rocketmq/rmqnamesr.yaml up -d
# 停止
docker-compose -f /opt/rocketmq/rmqnamesr.yaml down
1
2
3
4
2
3
4
# 3.2 三个节点依序启动broker
docker-compose -f /opt/rocketmq/rmqbroker.yaml up -d
# 停止
docker-compose -f /opt/rocketmq/rmqbroker.yaml down
1
2
3
4
2
3
4
# 3.3 查看日志
docker logs -f rmqbroker
docker logs -f rmqnamesr
1
2
2
# 3.4查看端口
# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1037/sshd
tcp6 0 0 :::30909 :::* LISTEN 223054/java
tcp6 0 0 :::30911 :::* LISTEN 223054/java
tcp6 0 0 :::40911 :::* LISTEN 223054/java
tcp6 0 0 :::9876 :::* LISTEN 221987/java
tcp6 0 0 :::22 :::* LISTEN 1037/sshd
# 9876: 管理 Broker 注册、提供 Topic 路由信息,是 Producer/Consumer 连接的入口
# 30911: 监听 Producer 发送消息、Consumer 拉取消息的请求(配置 listenPort 指定)
# 40911: DLedger 集群节点间的通信端口,默认规则为 listenPort + 10000
# 30909: Broker 内部线程通信、数据处理,默认规则为 listenPort - 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 4.验证
# 4.1 查看集群状态
[root@node3 rocketmq]# docker exec -it rmqbroker ./mqadmin clusterList -n 127.0.0.1:9876
1
# 5. Dashboard
# 创建目录
[root@node1 rockertmq]# mkdir -p /root/rockertmq
# 进入目录
[root@node1 rockertmq]# cd /root/rockertmq
# 编译rocketmq-dashboard的docker-compose文件
[root@node1 rockertmq]# cat >docker-compose.yaml<<EOF
version: '3'
services:
rocketmq-dashboard:
container_name: rocketmq-dashboard
image: apacherocketmq/rocketmq-dashboard:latest
environment:
- JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.5.81:9876;172.16.5.82:9876;172.16.5.83:9876
- TZ=Asia/Shanghai
ports:
- "8080:8080"
restart: always
EOF
# 启动rocketmq-dashboard
[root@node1 rockertmq]# docker-compose up -d
# 停止服务
[root@node1 rockertmq]# docker-compose down
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
上次更新: 2026/05/31, 03:30:34