Docker 之 部署RabbitMQ集群并实现Haproxy代理(二)

释放双眼,带上耳机,听听看~!

前言

本小节学习一下使用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 之 部署RabbitMQ集群并实现Haproxy代理(二)如此便完成了使用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之前要创建好所有的配置文件
  • 安全组规则

Docker 之 部署RabbitMQ集群并实现Haproxy代理(二)

给TA打赏
共{{data.count}}人
人已打赏
安全网络

CDN安全市场到2022年价值76.3亿美元

2018-2-1 18:02:50

安全技术

C# 接口

2022-1-11 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索