配置详解:

HAPrpxy的配置文件:/etc/haproxy/haproxy.cfg
由两大部分组成,分别是globalproxies部分。

  1. global : 全局配置段
进程及安全配置相关的参数
性能调整相关参数
Debug参数
  1. proxies : 代理配置段,有多个子段
defaults    为frontend, backend, listen提供默认配置
listen      同时拥有前端和后端配置

#下面不常用
frontend    前端,相当于nginx中的server {}
backend     后端,相当于nginx中的upstream {}

global配置参数:

官方文档:https://cbonte.github.io/haproxy-dconv/2.0/intro.html

global

    #锁定运行目录
    chroot  /usr/local/haproxy 

    #定义全局的syslog服务器;最多可以定义两个
    log 127.0.0.1 local3 info 

    #指定pid文件路径
    pidfile /var/run/haproxy.pid

    #以守护进程运行
    deamon  

    #每个haproxy进程的最大并发连接数
    maxconn 4000

    #运行haproxy的用户身份
    user haproxy
    group haproxy
    #或者
    uid 99
    gid 99
    /********************可选项********************/
    #开启的haproxy进程数,与CPU保持一致
    nbproc 4
    #CPU绑定
    cpu-map 1 0
    cpu-map 2 1
    cpu-map 3 2
    cpu-map 4 3

    #指定每个haproxy进程开启的线程数,默认为每个进程一个线程
    nbthread 1

    #socket文件1,mode文件的权限,level等级,process多进程时使用,绑定socket文件
    stats socket /var/lib/haproxy/haproxy.sock1 mode 600 level admin process 1
    #socket文件2
    stats socket /var/lib/haproxy/haproxy.sock2 mode 600 level admin process 2

    #每个haproxy进程ssl最大连接数,用于haproxy配置了证书的场景下
    maxsslconn 

    #每个进程每秒创建的最大连接数量
    maxconnrate 200

    #后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间
    spread-checks 3

defaults配置:

为frontend, backend, listen提供默认配置

defaults
    #默认工作类型
    mode http 
    #定义日志,global表示根据全局定义
    log  global 

    #开启与客户端的会话保持
    option http-keep-alive 
    #透传客户端真实IP至后端web服务器
    option forwardfor 

    #当server Id对应的服务器挂掉后,强制定向到其他健康的服务器
    option redispatch 
    #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    option abortonclose 

    #客户端请求到后端server的最长连接等待时间(TCP之前)
    timeout connect 120s 
    #客户端请求到后端服务端的超时超时时长(TCP之后)
    timeout server 600s 
    #与客户端的最长非活动时间
    timeout client 600s 

    #session 会话保持超时时间,范围内会转发到相同的后端服务器
    timeout http-keep-alive 120s 
    #对后端服务器的检测超时时间
    timeout check 5s

listen:

使用listen替换frontend和backend的配置方式:

listen WEB_PORT_80
    bind 192.168.7.102:80
    mode http
    balance <算法>
    option forwardfor
    server web1 192.168.7.101:80 check inter 3000 fall 3 rise 5
    server web2 192.168.7.101:80 check inter 3000 fall 3 rise 5

frontend配置

前端,相当于nginx中的server {}

#指定HAProxy的监听地址,可同时监听多个IP或端口
bind [<address>]:<port_range> [, ...] [param*]
 

frontend WEB_PORT
    bind :80,:8080
    bind 192.168.7.102:10080,:8801-8810,192.168.7.101:9001-9010
    mode http/tcp #指定负载协议类型
    use_backend backend_name #调用的后端服务器组名称

backend配置

定义一组后端服务器,backend服务器将被frontend进行调用。

#指定负载协议类型
mode http/tcp 
#配置选项
option 
#定义后端real server
server <name> <ip:port>
    #默认为1,最大值为256,0表示不参与负载均衡
    weight 
    #将后端服务器标记为备份状态
    backup 
    #将后端服务器标记为不可用状态
    disabled 
    #将请求临时重定向至其它URL,只适用于http模式
    redirect prefix http://www.magedu.net/ 
    #后端server的最大并发连接数
    maxconn <maxconn>
    #server的连接数达到上限后的后援队列长度
    backlog <backlog>
    #对指定real进行健康状态检查,默认不开启
    check 
        #可指定的健康状态监测IP
        addr IP 
        #指定的健康状态监测端口
        port num 
        #健康状态检查间隔时间,默认2000 ms
        inter num 
        #后端服务器失效检查次数,默认为3
        fall num 
        #后端服务器从下线恢复检查次数,默认为2
        rise num

frontend+backend配置实例:

frontend WEB_PORT_80
    bind 192.168.7.248:80
    mode http
    use_backend web_prot_http_nodes

backend web_prot_http_nodes
    mode http
    option forwardfor
    server 192.168.7.101 192.168.7.101:8080 check inter 3000 fall 3 rise 5
    server 192.168.7.102 192.168.7.102:8080 check inter 3000 fall 3 rise 5