程序环境:
主程序:/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的连接数达到上限后的后援队列长度