一、准备工作
1、创建相关目录
# 创建存放haproxy 编排文件的目录
mkdir -p /data/docker-compose/haproxy
# 创建存放haproxy和keepalived同步文件的目录
mkdir -p /data/docker-data/haproxy/keepalived
2、安装docker-compose
# 升级 pip
pip3 install --upgrade pip
# 指定 docker-compose 版本安装
pip install docker-compose==1.22
# 验证是否安装成功
docker-compose -v
3、创建Dockerfile
mkdir -p /data/docker-dockerfile/haproxy
cd /data/docker-dockerfile/haproxy
vi Dockerfile
FROM haproxy:2.4
USER root
RUN apt-get update \
&& apt-get install -y net-tools inetutils-ping vim iproute2 keepalived \
&& echo root:123456 | chpasswd
4、构建haproxy镜像
docker build -t haproxy2.4 .
docker rmi docker.io/haproxy:2.4
二、构建haproxy集群
1、集群规划
容器名 | IP | 映射端口 | 用户名及密码 |
---|---|---|---|
haproxy_101 | 170.200.9.101 | 8101:8100,5601:5600 | root,123456 |
haproxy_102 | 170.200.9.102 | 8102:8100,5602:5600 | root,123456 |
2、创建docker-compose.yaml
cd /data/docker-compose/haproxy
vi docker-compose.yaml
version: "3.6"
services:
haproxy_server_101:
image: haproxy2.4
ports:
- "8101:8100"
- "5601:5600"
networks:
haproxy:
ipv4_address: 170.200.9.101
privileged: true
volumes:
- /data/docker-data/haproxy:/haproxy
- /data/docker-data/haproxy/keepalived/101:/keepalived
container_name: haproxy_101
command: haproxy -f /haproxy/haproxy.cfg
haproxy_server_102:
image: haproxy2.4
ports:
- "8102:8100"
- "5602:5600"
networks:
haproxy:
ipv4_address: 170.200.9.102
privileged: true
volumes:
- /data/docker-data/haproxy:/haproxy
- /data/docker-data/haproxy/keepalived/102:/keepalived
container_name: haproxy_102
command: haproxy -f /haproxy/haproxy.cfg
networks:
haproxy:
driver: bridge
ipam:
config:
- subnet: "170.200.9.0/24"
3、创建haproxy的配置文件,并配置rabbitmq集群的负载均衡
cd /data/docker-data/haproxy
vi haproxy.cfg
global
#日志输出配置,所有日志都记录在本机,通过local0输出
log 127.0.0.1 local0 info
#最大连接数
maxconn 10240
#以守护进程方式运行
daemon
defaults
#应用全局的日志配置
log global
mode http
#超时配置
timeout connect 5000
timeout client 5000
timeout server 5000
timeout check 2000
#haproxy的客户页面
listen http_front
bind 0.0.0.0:8100
mode http
option httplog
stats uri /haproxy
# web界面的用户和密码
stats auth root:123456
stats refresh 5s
stats enable
#负载均衡配置
listen rabbimq_ha
bind 0.0.0.0:5600
option tcplog
mode tcp
#轮询算法
balance roundrobin
server mq1 192.168.78.200:5671 check inter 5000 rise 2 fall 2
server mq2 192.168.78.200:5672 check inter 5000 rise 2 fall 2
server mq3 192.168.78.200:5673 check inter 5000 rise 2 fall 2
4、构建haproxy
cd /data/docker-compose/haproxy
docker-compose up -d
5、访问192.168.78.200:8101/haproxy,查看当前haproxy状态
6、总结
到这里,就已经完成了haproxy的构建,并且将rabbitmq集群的负载均衡也配置完毕了。
这里虽然在haproxy中安装了keepalived,但在本文中并没有使用到keepalived,后面会单独开一章来写keepalived,到时候会用到。