目录

HAproxy功能:

不具备的功能:

一、准备工作

1、创建相关目录

2、安装docker-compose

3、创建Dockerfile

4、构建haproxy镜像

二、构建haproxy集群

1、集群规划

2、创建docker-compose.yaml

3、创建haproxy的配置文件,并配置rabbitmq集群的负载均衡

4、构建haproxy

5、访问192.168.78.200:8101/haproxy,查看当前haproxy状态

6、总结


HAproxy功能:

TCP和HTTP反向代理
SSL/TSL服务器
可以针对HTTP请求添加cookie,进行路由后端服务器
可平衡负载至后端服务器,并支持持久连接
支持所有主服务器故障切换至备用服务器
支持专用端口实现监控服务
支持不影响现有连接情况下停止接收新连接请求
可以在双向添加,修改或删除HTTP报文首部
响应报文压缩
支持基于pattern实现连接请求的访问控制
通过特定的URI为授权用户提供详细的状态信息


不具备的功能:

正向代理
缓存代理
WEB服务
不支持UDP协议
单机性能–lvs

一、准备工作

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_101170.200.9.1018101:8100,5601:5600root,123456
haproxy_102170.200.9.1028102:8100,5602:5600root,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,到时候会用到。

更多推荐