程序环境:
主程序:/usr/sbin/haproxy
配置文件:/etc/haproxy/haproxy.cfg
Unit file:/usr/lib/systemd/system/haproxy.service

以下配置文件内容是通过yum安装的

[root @ centos7 data]#cat  /usr/lib/systemd/system/haproxy.service

[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
EnvironmentFile=/etc/sysconfig/haproxy
ExecStart=/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid $OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
[Install]
WantedBy=multi-user.target

[root @ centos7 data]#cat /etc/haproxy/haproxy.cfg

global:全局配置-->进程及安全配置相关的参数 ; 性能调整参数 ; Debug参数
maxconn 100000  -->每个haproxy进程的最大并发连接数
chroot /usr/local/haproxy  -->锁定运行目录
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin -->socket文件
uid 99
gid 99   -->user, group, uid, gid 运行haproxy的用户身份
daemon   -->以守护进程运行
nbproc 2 -->开启的haproxy进程数,与CPU保持一致
cpu-map 1 0
cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3 -->绑定haproxy进程至指定CPU
pidfile /usr/local/haproxy/run/haproxy.pid -->指定pid文件路径
log 127.0.0.1 local3 info -->定义全局的syslog服务器;最多可以定义两个
nbthread           #指定每个haproxy进程开启的线程数,默认为每个进程一个线程
maxsslconn         #SSL每个haproxy进程ssl最大连接数
maxconnrate        #每个进程每秒最大连接数
spread-checks      #后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间
defaults
option http-keep-alive   -->开启会话保持
option  forwardfor       -->开启IP透传
maxconn 100000  
mode http                -->默认工作类型
timeout connect 300000ms -->转发客户端请求到后端server的最长连接时间(TCP之前)
timeout client  300000ms -->与客户端的最长空闲时间
timeout server  300000ms -->转发客户端请求到后端服务端的超时时长(TCP之后)
option abortonclose            #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
option redispatch              #当server Id对应的服务器挂掉后,强制定向到其他健康的服务器
timeout http-keep-alive 120s   #session 会话保持超时时间范围内会转发到相同的后端服务器
timeout check 5s               #对后端服务器的检测超时时间
listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
stats uri     /haproxy-status
stats auth    haadmin:q1w2e3r4ys
listen  web_port
bind 0.0.0.0:80
mode http
log global
server web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5

proxies:代理配置段

defaults:为frontend, backend, listen提供默认配置
frontend:前端,相当于nginx中的server {}
backend:后端,相当于nginx中的upstream {}
listen:同时拥有前端和后端配置

defaults [<name>]   #默认配置项,针对以下的frontend、backend和lsiten生效,可以多个name
frontend <name>   #前端servername,类似于Nginx的一个虚拟主机server。
backend <name>    #后端服务器组,等于nginx的upstream
listen <name>    #将frontend和backend合并在一起配置
注:name字段只能使用”-”、”_”、”.”、和”:”,并且严格区分大小写,例如:Web和web是完全不同的两组服务器。

frontend配置参数

bind:指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP或端口,可同时用于listen字段中
bind []: [, ...] [param*]
mode http/tcp       #指定负载协议类型
use_backend backend_name #调用的后端服务器组名称

backend配置参数

mode http/tcp  #指定负载协议类型
option               #配置选项
server               #定义后端real server
注意:option后面加httpchk,smtpchk, mysql-check, pgsql-check,ssl-hello-chk方法,可用于实现更多应用层检测功能
后端服务器状态监测及相关配置
check对指定real进行健康状态检查,默认不开启

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