Haproxy配置文件参数

配置文件格式
HAProxy的配置处理3类来主要参数来源:
——最优先处理的命令行参数,
——“global”配置段,用于设定全局配置参数;
——proxy相关配置段,如“defaults”、“listen”、“frontend”和“backend”;

Haproxy 的参数参数很多 这里就总结一点平时常用的
“defaults”段用于为所有其它配置段提供默认参数,这配置默认配置参数可由下一个“defaults”所重新设定。
“frontend”段用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。
“backend”段用于定义一系列“后端”服务器,代理将会将对应客户端的请求转发至这些服务器。
“listen”段通过关联“前端”和“后端”定义了一个完整的代理

所有代理的名称只能使用大写字母、小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此外,ACL名称会区分字母大小写。
global全局配置
log 127.0.0.1:514 local0 err
maxconn 20480
chroot /usr/local/haproxy
uid 99
gid 99
daemon
pidfile /usr/local/haproxy/var/run/haproxy.pid
spread-checks 3
nbproc 1

log 定义全局的rsyslog服务器,也可以在每个实例中单独添加,最多可以定义两个 格式:log 地址:514 设备 错误级别
maxconn 设定每个haproxy进程所接受的最大并发连接数,其等同于命令行选项“-n”;“ulimit -n”自动计算的结果正是参照此参数设定的;(设定一个前端的最大并发连接数,因此,其不能用于backend区段。对于大型站点来说,可以尽可能提高此值以便让haproxy管理连接队列,从而避免无法应答用户请求。当然,此最大值不能超出“global”段中的定义。此外,需要留心的是,haproxy会为每个连接维持两个缓冲,每个缓冲的大小为8KB,再加上其它的数据,每个连接将大约占用17KB的RAM空间。这意味着经过适当优化后,有着1GB的可用RAM空间时将能维护40000-50000并发连接。
如果为指定了一个过大值,极端场景下,其最终占据的空间可能会超出当前主机的可用内存,这可能会带来意想不到的结果;因此,将其设定了一个可接受值方为明智决定。其默认为2000。)
chroot 监牢地址 定义haproxy只能运行在该路径下 安全考虑
uid 运行haproxy的用户id
gid 运行haproxy的组id
daemon 运行模式 后台运行
pidfile pid文件存放路径
spread-checks 在haproxy后端有着众多服务器的场景中,在精确的时间间隔后统一对众服务器进行健康状况检查可能会带来意外问题;此选项用于将其检查的时间间隔长度上增加或减小一定的随机时长
nbproc 开启几个进程

defaults 默认配置
如果实例中没有单独定义参数的情况下会引用defaults中的配置
log global
mode http #默认采用http模式
option httplog #日志类别
option dontlognull #不保存空日志
retries 3 #3次连接失败认为服务器不可用
option httpclose #每次请求完毕后主动关闭http通道
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
option redispatch #当serverid对应的服务器挂掉后,强制定向到其他服务器
option forwardfor #让web端记录的是客户端的ip而不是ha的ip
option logasap #提前将HTTP请求记入日志 只不过,此时将不记录整体传输时长和字节数
no option splice-response #不拼接响应
contimeout 5000 #连接超时时间
clitimeout 50000 #客户端连接超时时间
srvtimeout 50000 #服务器端超时时间
timeout check 10s #健康状态监测时的超时时间,过短会误判,过长资源消耗
timeout http-request 10s #请求超时
timeout http-keep-alive 10s #定义保持连接的超时时长
http-server-close # 在使用长连接时,为了避免客户端超时没有关闭长连接,此功能可以使服务器端关闭长连接
timeout queue 1m #请求队列超时时间
stats hide-version #隐藏版本

原有版本的参数,在新版本中已经废弃了
contimeout 被 timeout connect取代
clitimeout 被timeout client取代
srvtimeout 被timeout server取代

listen定义一个完整代理
listen www01 0.0.0.0:80 #定义一个实例 名称 监听ip端口 允许前端访问ip
mode http #运行方式7层http 或4层tcp
balance roundrobin #轮询算法rr
option httpchk HEAD /index.html HTTP/1.0 #健康检查文件要在网站服务器页面根目录
server app1_1 10.125.192.2:80 cookie app1inst1 check inter 2000 rise 2 fall 5 #定义后端RS server关键字 后面是名字自己起 IP 健康检查方法
server app1_2 10.125.192.3:80 cookie app1inst2 check inter 2000 rise 2 fall 5

frontend和backend定义一个代理
frontend http-in #定义实例名
bind *:80 #监听IP端口 允许前端访问IP
mode http
log global
default_backend servers #定义一个谁可以应用这条frontend 后端实例名称
backend servers #定义一个实例名称与frontend 中default_backend相同 表示应用那个前端 组成一个完整代理
balance roundrobin
server websrv1 192.168.10.11:80 check maxconn 2000
server websrv2 192.168.10.12:80 check maxconn 2000

你可能感兴趣的:(负载均衡)