前言
本小节学习一下使用Docker-compose部署Rabbitmq集群。
-
目录参考
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 1[root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]# pwd
2/workspace/rabbitmq
3[root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]# tree
4.
5├── config
6│ └── docker-compose.yml
7├── data
8├── haproxy-etc
9│ └── haproxy.cfg
10├── rabbitmq1
11├── rabbitmq2
12└── rabbitmq3
13
146 directories, 2 files
15[root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]#
16
17
-
创建RabbitMQ集群共享网络
1
2
3 1docker network create rabbitmqnet
2
3
-
docker-compose.yml
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
66
67
68
69
70
71
72
73
74
75
76
77 1version: '3.7'
2services:
3 rabbitmq1:
4 image: rabbitmq:3.8-rc-management
5 container_name: rabbitmq1
6 restart: always
7 ports:
8 - 5672:5672
9 - 15672:15672
10 volumes:
11 - /workspace/rabbitmq/data/rabbitmq1:/var/lib/rabbitmq:z
12 environment:
13 RABBITMQ_DEFAULT_USER: 'Dustyone'
14 RABBITMQ_DEFAULT_PASS: 'bai5331359'
15 RABBITMQ_NODENAME: 'rabbitmq1'
16 RABBITMQ_ERLANG_COOKIE: 'Dustyone-Murex-cluster-cookie'
17 hostname: rabbitmq1
18
19 rabbitmq2:
20 image: rabbitmq:3.8-rc-management
21 container_name: rabbitmq2
22 restart: always
23 ports:
24 - 5673:5672
25 - 15673:15672
26 volumes:
27 - /workspace/rabbitmq/data/rabbitmq2:/var/lib/rabbitmq:z
28 environment:
29 RABBITMQ_DEFAULT_USER: 'Dustyone'
30 RABBITMQ_DEFAULT_PASS: 'bai5331359'
31 RABBITMQ_NODENAME: 'rabbitmq2'
32 RABBITMQ_ERLANG_COOKIE: 'Dustyone-Murex-cluster-cookie'
33 hostname: rabbitmq2
34 links:
35 - rabbitmq1
36
37 rabbitmq3:
38 image: rabbitmq:3.8-rc-management
39 container_name: rabbitmq3
40 restart: always
41 ports:
42 - 5674:5672
43 - 15674:15672
44 volumes:
45 - /workspace/rabbitmq/data/rabbitmq3:/var/lib/rabbitmq:z
46
47 environment:
48 RABBITMQ_DEFAULT_USER: 'Dustyone'
49 RABBITMQ_DEFAULT_PASS: 'bai5331359'
50 RABBITMQ_NODENAME: 'rabbitmq3'
51 RABBITMQ_ERLANG_COOKIE: 'Dustyone-Murex-cluster-cookie'
52 hostname: rabbitmq3
53 links:
54 - rabbitmq1
55 - rabbitmq2
56
57 rabbitmq-haproxy:
58 image: haproxy
59 container_name: rabbitmq-haproxy
60 restart: always
61 ports:
62 - 8002:8002
63 - 5677:5677
64 - 8001:8001
65 volumes:
66 - /workspace/rabbitmq/haproxy-etc:/usr/local/etc/haproxy:ro
67 links:
68 - rabbitmq1
69 - rabbitmq2
70 - rabbitmq3
71
72networks:
73 default:
74 external:
75 name: rabbitmqnet
76
77
-
执行docker-compose.yml
1
2
3 1docker-compose up -d
2
3
1
2
3
4
5
6
7
8 1[root@iZ2ze8sm5upgi8z1dcazqeZ config]# docker ps -a
2CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cec0d4ee030d haproxy "/docker-entrypoint.…" 14 seconds ago Up 12 seconds 0.0.0.0:5677->5677/tcp, 0.0.0.0:8001-8002->8001-8002/tcp rabbitmq-haproxy
40d2d75c99c6a rabbitmq:3.8-rc-management "docker-entrypoint.s…" 14 seconds ago Up 13 seconds 4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5674->5672/tcp, 0.0.0.0:15674->15672/tcp rabbitmq3
54e89fa1f2eba rabbitmq:3.8-rc-management "docker-entrypoint.s…" 15 seconds ago Up 14 seconds 4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5673->5672/tcp, 0.0.0.0:15673->15672/tcp rabbitmq2
6af6dfb7ca16c rabbitmq:3.8-rc-management "docker-entrypoint.s…" 15 seconds ago Up 15 seconds 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbitmq1
7
8
-
将rabbitmq2和rabbitmq3两个节点加入rabbitmq1节点以形成集群。
1
2
3
4
5
6
7
8 1### Disk Node
2docker exec rabbitmq2 bash -c \
3"rabbitmqctl stop_app && \
4rabbitmqctl reset && \
5rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && \
6rabbitmqctl start_app"
7
8
1
2
3
4
5
6
7
8 1### Ram Node
2# docker exec rabbitmq3 bash -c \
3"rabbitmqctl stop_app && \
4rabbitmqctl reset && \
5rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1 && \
6rabbitmqctl start_app"
7
8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 1[root@iZ2ze8sm5upgi8z1dcazqeZ config]# docker exec rabbitmq2 bash -c \
2> "rabbitmqctl stop_app && \
3> rabbitmqctl reset && \
4> rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && \
5> rabbitmqctl start_app"
6Stopping rabbit application on node rabbitmq2@rabbitmq2 ...
7Resetting node rabbitmq2@rabbitmq2 ...
8Clustering node rabbitmq2@rabbitmq2 with rabbitmq1@rabbitmq1
9Starting node rabbitmq2@rabbitmq2 ...
10 completed with 3 plugins.
11[root@iZ2ze8sm5upgi8z1dcazqeZ config]# docker exec rabbitmq3 bash -c \
12> "rabbitmqctl stop_app && \
13> rabbitmqctl reset && \
14> rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1 && \
15> rabbitmqctl start_app"
16Stopping rabbit application on node rabbitmq3@rabbitmq3 ...
17Resetting node rabbitmq3@rabbitmq3 ...
18Clustering node rabbitmq3@rabbitmq3 with rabbitmq1@rabbitmq1
19Starting node rabbitmq3@rabbitmq3 ...
20 completed with 3 plugins.
21[root@iZ2ze8sm5upgi8z1dcazqeZ config]#
22
23
如此便完成了使用docker-compose部署Rabbitmq集群
-
启动停止Rabbitmq-Cluster建议使用如下Command
1
2
3 1docker-compose up -d
2
3
1
2
3 1docker-compose stop
2
3
-
此类方法部署RabbitMQ集群有很多细节,便不一一说明了,挑几个重用的说一下
-
所有的节点最好共享一个网络块
- 执行docker-compose.yml之前要创建好所有的配置文件
-
安全组规则