haproxy docker容器化部署以及负载均衡 端口转发 路径转发配置详解

在网上找了下,国内没有多少介绍haproxy的,好像都是nginx多一些,但是在大多数容器化部署的今天,人们好像总是要使用docker去部署一下子,折腾半天,记录一下(此篇主要讲用docker部署haproxy,主要功能有端口转发,负载均衡,根据api路径转发这三种)

1. 执行 `docker pull haproxy:1.7` 

2. 我准备了一份docker-compose 文件,方便启动调试:

version: '3'
services: 
  haproxy:
    image: haproxy:1.7
    container_name: haproxy_v1
    restart: always
    volumes:
      - /home/test-haproxy/haproxy:/etc/haproxy:ro
    command: ["haproxy", "-f", "/etc/haproxy/haproxy.cfg"]
    ports:
      - 80:80
      - 443:443
      - 3000:3000
      - 5000:5000

3. haproxy配置文件,放入 `/home/test-proxy/haproxy` 中,文件名字为haproxy.cfg

global

ulimit-n 51200

defaults
    log global
    mode http
    option dontlognull
    timeout connect 1000ms
    timeout client 150000ms
    timeout server 150000ms

# 1.普通端口转发
frontend http-in1
   bind *:80
   default_backend server1

frontend http-in2
   bind *:443
   default_backend server2

backend server1
   server app1 www.zoux.xin:80 check inter 2000 rise 2 fall 5

backend server2
   server app2 www.cnki.net:80 check inter 2000 rise 2 fall 5


# 2.负载均衡
frontend http-in3
   bind *:3000
   default_backend server3

backend server3
   balance roundrobin   #"使用轮询算法",还有其他算法
   server app31 www.zoux.xin:80 check inter 2000 rise 2 fall 5
   server app32 www.cnki.net:80 check inter 2000 rise 2 fall 5


# 3.url地址转发
frontend http-in4
   bind *:5000
   acl mobile_domain hdr_beg(host) 127.0.0.1:5000
   acl mid_path path_beg  -i /xxxx
   use_backend server4 if mobile_domain mid_path   # 匹配路径中以"/xxxx"开头的请求路径都 转发到server4
   default_backend server1  # 默认使用 server1服务

backend server4
   # 192.168.1.66:7070 是我自己的web server
   server app4 192.168.1.66:7070 check inter 2000 rise 2 fall 5 # 转发目标地址必须可达,如果使用docker-compose编排后台程序和haproxy默认使用一个网卡,否则必读指定正确可达的host,否则报503

4.确认文件和配置路径正确之后执行 `docker-compose up -d` 然后就可以访问相应url请求haproxy,看看是否可以转发到你设置的server

最后带上haproxy配置编写介绍:http://blog.51cto.com/13323775/2072990 

有条件还是去查国外资料

你可能感兴趣的:(docker)