Docker快速构建HaProxy集群,并配置好rabbitmq的负载均衡

一、准备工作

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,到时候会用到。