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

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

前言

本小节我们学习一下使用Docker部署RabbitMQ集群。
RabbitMQ Docker Hub

  • 目录参考


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1[root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]# pwd
2/workspace/rabbitmq
3[root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]# tree
4.
5├── config
6│   └── docker-compose.yml
7├── data
8│   ├── rabbitmq1
9│   ├── rabbitmq2
10│   └── rabbitmq3
11└── haproxy-etc
12    └── haproxy.cfg
13 
14
15
  • 拉取rabbitmq镜像


1
2
3
1docker pull rabbitmq:3.8-rc-management
2
3

若不使用Rabbitmq的management功能,可以拉取镜像:rabbitmq:3.8-rc

  • 创建Rabbitmq共享网络


1
2
3
1docker network create rabbitmqnet
2
3

1
2
3
4
5
6
7
8
9
10
11
12
1[root@iZ2ze8sm5upgi8z1dcazqeZ data]# docker network ls
2NETWORK ID          NAME                DRIVER              SCOPE
3203f098f2ed7        bridge              bridge              local
4901ab7f16e18        config_default      bridge              local
5e5878362fd0d        data_default        bridge              local
6e16693f5cfb7        example_default     bridge              local
754da0f7e3311        host                host                local
86ad755fc1934        none                null                local
9a4b8c1129340        rabbitmqnet         bridge              local
10[root@iZ2ze8sm5upgi8z1dcazqeZ data]#
11
12
  • 创建节点(三个节点)

注意这里使用相同的 RABBITMQ_ERLANG_COOKIE 值


1
 

#RabibitMQ Node1
docker run -d
–name=rabbitmq1
-p 5672:5672
-p 15672:15672
-v /workspace/rabbitmq/data/rabbitmq1:/var/lib/rabbitmq:z
-e RABBITMQ_DEFAULT_USER=Dustyone
-e RABBITMQ_DEFAULT_PASS=bai5331359
-e RABBITMQ_NODENAME=rabbitmq1
-e RABBITMQ_ERLANG_COOKIE='Dustyone-Murex-cluster-cookie'
-h rabbitmq1
–net=rabbitmqnet
rabbitmq:3.8-rc-management

#RabibitMQ Node2
docker run -d
–name=rabbitmq2
-p 5673:5672
-p 15673:15672
-v /workspace/rabbitmq/data/rabbitmq2:/var/lib/rabbitmq:z
-e RABBITMQ_DEFAULT_USER=Dustyone
-e RABBITMQ_DEFAULT_PASS=bai5331359
-e RABBITMQ_NODENAME=rabbitmq2
-e RABBITMQ_ERLANG_COOKIE='Dustyone-Murex-cluster-cookie'
-h rabbitmq2
–net=rabbitmqnet
rabbitmq:3.8-rc-management

#RabibitMQ Node3
docker run -d
–name=rabbitmq3
-p 5674:5672
-p 15674:15672
-v /workspace/rabbitmq/data/rabbitmq3:/var/lib/rabbitmq:z
-e RABBITMQ_DEFAULT_USER=Dustyone
-e RABBITMQ_DEFAULT_PASS=bai5331359
-e RABBITMQ_NODENAME=rabbitmq3
-e RABBITMQ_ERLANG_COOKIE='Dustyone-Murex-cluster-cookie'
-h rabbitmq3
–net=rabbitmqnet
rabbitmq:3.8-rc-management


1
 

1
2
3
4
5
6
7
1   [root@iZ2ze8sm5upgi8z1dcazqeZ rabbitmq]# docker ps -a
2           CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                                                                                        NAMES
3           d15e8aecfa21        rabbitmq:3.8-rc-management        "docker-entrypoint.s…"   3 seconds ago       Up 2 seconds        4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5674->5672/tcp, 0.0.0.0:15674->15672/tcp   rabbitmq3
4           ac5f2897f6de        rabbitmq:3.8-rc-management        "docker-entrypoint.s…"   9 seconds ago       Up 8 seconds        4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5673->5672/tcp, 0.0.0.0:15673->15672/tcp   rabbitmq2
5           5f7e538553cd        rabbitmq:3.8-rc-management        "docker-entrypoint.s…"   16 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
6
7
  • 组建rabbitmq集群

登陆Rabbitmq的后两个节点,执行命令加入第一个Rabbitmq节点集群


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1### Disk Node
2# docker exec rabbitmq2 bash -c \
3"rabbitmqctl stop_app && \
4rabbitmqctl reset && \
5rabbitmqctl join_cluster rabbitmq1@rabbitmq1 && \
6rabbitmqctl start_app"
7
8### Ram Node
9# docker exec rabbitmq3 bash -c \
10"rabbitmqctl stop_app && \
11rabbitmqctl reset && \
12rabbitmqctl join_cluster --ram rabbitmq1@rabbitmq1 && \
13rabbitmqctl start_app"
14
15

登录:http://你的公网IP:15672 ,使用rabbitmq1-Dustyone/bai5331359登录,登录其他节点,访问相应的端口并使用相应的用户名/密码登录即可
Docker 之 部署RabbitMQ集群并实现Haproxy代理(一)Docker 之 部署RabbitMQ集群并实现Haproxy代理(一)

退出集群


1
2
3
4
5
6
1# docker exec rabbitmq3 bash -c \
2"rabbitmqctl stop_app && \
3rabbitmqctl reset && \
4rabbitmqctl start_app"
5
6

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

  • 拉取haproxy镜像


1
2
3
1docker pull haproxy
2
3
  • 创建目录/workspace/rabbitmq/haproxy-etc,并在该路径下创建haprox.cfg配置文件


1
2
3
4
5
6
7
8
9
10
1[root@iZ2ze8sm5upgi8z1dcazqeZ haproxy-etc]# pwd
2/workspace/rabbitmq/haproxy-etc
3[root@iZ2ze8sm5upgi8z1dcazqeZ haproxy-etc]# tree
4.
5└── haproxy.cfg
6
70 directories, 1 file
8[root@iZ2ze8sm5upgi8z1dcazqeZ haproxy-etc]#
9
10

haproxy.cfg配置信息如下:


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
1#Simple configuration for an HTTP proxy listening on port 80 on all
2# interfaces and forwarding requests to a single backend "servers" with a
3# single server "server1" listening on 127.0.0.1:8000
4
5global
6    daemon
7    maxconn 256
8
9defaults
10    mode http
11    timeout connect 5000ms
12    timeout client 5000ms
13    timeout server 5000ms
14
15listen rabbitmq_cluster
16    bind 0.0.0.0:5677
17    option tcplog
18    mode tcp
19    balance leastconn
20    server  rabbit1 rabbitmq1:5672 check inter 2s rise 2 fall 3
21    server  rabbit2 rabbitmq2:5672 check inter 2s rise 2 fall 3
22    server  rabbit3 rabbitmq3:5672 check inter 2s rise 2 fall 3
23
24listen http_front
25    bind 0.0.0.0:8002
26    stats uri /haproxy?stats
27
28listen rabbitmq_admin
29    bind 0.0.0.0:8001
30    server rabbit1 rabbitmq1:15672
31    server rabbit2 rabbitmq2:15672
32    server rabbit3 rabbitmq3:15672
33
34
  • 拉取haproxy镜像


1
2
3
1docker pull haproxy
2
3
  • 启动haproxy


1
2
3
4
5
6
7
8
1docker run -d \
2    --name rabbitmq-haproxy \
3    -p 8002:8002 -p 5677:5677 -p 8001:8001 \
4    --net=rabbitmqnet \
5    -v /workspace/rabbitmq/haproxy-etc:/usr/local/etc/haproxy:ro \
6    haproxy:latest
7
8

启动haproxy后,可以通过haproxy来访问rabbitmq集群:http://你的公网IP:8001
Docker 之 部署RabbitMQ集群并实现Haproxy代理(一)

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

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

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

2018-2-1 18:02:50

安全技术

JVM优化Java代码时都做了什么?

2022-1-11 12:36:11

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