HAPrpxy的配置⽂件haproxy.cfg由两⼤部分组成,分别是global和proxies部分。
global:全局配置段
进程及安全配置相关的参数
性能调整相关参数
Debug参数
proxies:代理配置段
defaults:为frontend, backend, listen提供默认配置
frontend:前端,相当于nginx中的server {}
backend:后端,相当于nginx中的upstream {}
listen:同时拥有前端和后端配置
1、global配置参数
chroot #锁定运⾏⽬录
deamon #以守护进程运⾏
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level
admin #socket⽂件
user, group, uid, gid #运⾏haproxy的⽤⼾⾝份
nbproc #开启的haproxy进程数,与CPU保持⼀致
nbthread #指定每个haproxy进程开启的线程数,默认为每个进程⼀个线程
cpu-map 1 0 #绑定haproxy 进程⾄指定CPU,单进程多线程和多进程单
线程不能并存。
maxconn #每个haproxy进程的最⼤并发连接数
maxsslconn #每个haproxy进程ssl最⼤连接数,⽤于haproxy配置了证
书的场景下
maxconnrate #每个进程每秒创建的最⼤连接数量
spread-checks #后端server状态check随机提前或延迟百分⽐时间,建议
2-5(20%-50%)之间
pidfile #指定pid⽂件路径
log 127.0.0.1 local3 info #定义全局的syslog服务器;最多可以定
义两个
2、Proxies配置
defaults [<name>] #默认配置项,针对以下的frontend、backend和
lsiten⽣效,可以多个name也可以没有name
frontend <name> #前端servername,类似于Nginx的⼀个虚拟主机
server。
backend <name> #后端服务器组,等于nginx的upstream
listen <name> #将frontend和backend合并在⼀起配置
注:name字段只能使⽤”-”、”_”、”.”、和”:”,并且严格区分⼤⼩写,
例如:Web和web是完全不同的两组服务器。
2.1、Proxies配置-defaults
option redispatch #当server Id对应的服务器挂掉后,强制定向
到其他健康的服务器,重新派发
option abortonclose #当服务器负载很⾼的时候,⾃动结束掉当前队
列处理⽐较久的链接,关闭
option http-keep-alive # 开启与客⼾端的会话保持
option forwardfor # 透传客⼾端真实IP⾄后端web服务器
mode http # 设置默认⼯作类型
timeout http-keep-alive 120s#session 会话保持超时时间,范围内
会转发到相同的后端服务器
timeout connect 120s # 客⼾端请求从haproxy到后端server的最⻓连
接等待时间(TCP之前)
timeout server 600s # 客⼾端请求从haproxy到后端服务端的请求处理
超时时⻓(TCP之后)
timeout client 600s # 设置haproxy与客⼾端的最⻓⾮活动时间
timeout check 5s # 对后端服务器的默认检测超时时间
2.2、Proxies配置-frontend
bind:指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP
或端⼝,可同时⽤于listen字段中
bind [<address>]:<port_range> [, ...] [param*]
listen http_proxy #监听http的多个IP的多个端⼝和sock⽂件
bind :80,:443,:8801-8810
bind 10.0.0.1:10080,10.0.0.1:10443
bind /var/run/ssl-frontend.sock user root mode 600
accept-proxy
listen http_https_proxy #https监听
bind :80
bind :443 ssl crt /etc/haproxy/site.pem
listen http_https_proxy_explicit #监听ipv6、ipv4和unix sock
⽂件
bind ipv6@:80
bind ipv4@public_ssl:443 ssl crt /etc/haproxy/site.pem
bind unix@ssl-frontend.sock user root mode 600 accept-proxy
listen external_bind_app1 #监听file descriptor
bind "fd@${FD_APP1}"
# ⽣产⽰例:
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 #调⽤的后端服务器组名称
2.3、Proxies配置-backend
定义⼀组后端服务器,backend服务器将被frontend进⾏调⽤。
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.lijiach.com/ #将请求临时重定向⾄
其它URL,只适⽤于http模式
maxconn <maxconn>:当前后端server的最⼤并发连接数
backlog <backlog>:当server的连接数达到上限后的后援队列⻓度
2.4、frontend+backend
frontend WEB_PORT_80
bind 192.168.1.61:80
mode http
use_backend web_prot_http_nodes
backend web_prot_http_nodes
mode http
option forwardfor
server 192.168.5.51 192.168.5.51:80 check inter
3000 fall 3 rise 5
server 192.168.5.52 192.168.5.52:80 check inter
3000 fall 3 rise 5
2.5、Proxies配置-listen替代frontend+backend
listen WEB_PORT_80
bind 192.168.1.61:80
mode http
option forwardfor
server 192.168.5.51 192.168.5.51:80 check inter 3000 fall
3 rise 5
server 192.168.5.52 192.168.5.52:80 check inter 3000 fall
3 rise 5
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END