HAProxy 基础配置详解

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
喜欢就支持一下吧
点赞0 分享