使用同一台阿里云服务器搭建3个RabbitMq的集群和Haproxy负载均衡。
创建rabbitmq容器
使用docker pull rabbitmq拉取最新rabbimq镜像,docker pull haproxy 拉取haproxy镜像
创建docker网络 rabbtimanet 用于haproxy和rabbimq通信
1 | docker network create rabbtimanet |
创建三节点rabbitmq容器
rabbitmq1:
1 | docker run -d --name=rabbitmq1 -p 5672:5672 -p 15672:15672 -e RABBITMQ_NODENAME=rabbitmq1 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ' -h rabbitmq1 --net=rabbtimanet rabbitmq:management |
rabbitmq2:
1 | docker run -d --name=rabbitmq1 -p 5673:5672 -p 15673:15672 -e RABBITMQ_NODENAME=rabbitmq2 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ' -h rabbitmq2 --net=rabbtimanet rabbitmq:management |
rabbitmq3:
1 | docker run -d --name=rabbitmq1 -p 5674:5672 -p 15674:15672 -e RABBITMQ_NODENAME=rabbitmq3 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ' -h rabbitmq3 --net=rabbtimanet rabbitmq:management |
rabbitmq集群
分别进入rabbitmq2 和rabbitmq3容器(docker exec -it 容器id /bin/bash),执行以下:
1 | rabbitmqctl stop_app |
部署Haproxy
编辑haproxy配置文件如下:
1 | global |
创建haproxy容器
1 | docker run -d --name rabbitmq-haproxy -p 8090:80 -p 5677:5677 -p 8001:8001 --net=rabbtimanet -v /home/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest |
通过外部8090访问haproxy容器的80端口,外部8001访问haproxy容器8001,外部5677访问haproxy 容器5677端口
测试
连接rabbitmq 的5677端口,并发送数据,检查haproxy的web页面,对每次的请求转发至不同的rabbitmq
通过haproxy的8001端口访问rabbitmq的客户端:
本文作者:
Mr Han
本文链接: https://linbei.top/Docker%E6%90%AD%E5%BB%BARabbitMq%E9%9B%86%E7%BE%A4%E5%8F%8AHaProxy%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://linbei.top/Docker%E6%90%AD%E5%BB%BARabbitMq%E9%9B%86%E7%BE%A4%E5%8F%8AHaProxy%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!