defaults []
默认配置项,针对以下的frontend、backend和lsiten生效,可以多个name。
defaults常用的配置参数:
option redispatch
当server Id对应的服务器挂掉后,强制定向到其他健康的服务器,生产环境推荐添加该参数进行调优。
option abortonclose
当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接,生产环境推荐添加该参数进行调优。
option http-keep-alive 开启会话保持,如"option http-keep-alive 60"则表示会话保持时间为60s。
option forwardfor
开启IP透传,无法自定义"forwardfor"这个变量,而在nginx中式可以自定义的,生产环境中推荐添加该擦承诺书进行调优。
mode
指定默认工作类型,比如"mode http"表示默认基于http协议工作,"mode tcp"则表示默认基于tcp协议工作。
timeout connect
转发客户端请求到后端server的最长连接时间(TCP之前),如"timeout connect 60s"则表示客户端请求到haproxy服务器之后,由haproxy将请求转发到后端服务器,若超过60s(即1分钟)后端服务器依旧没有响应客户端则超时(说白了就是客户端和后端服务器建立连接的超时时间)。
timeout server
转发客户端请求到后端服务端的超时超时时长(TCP之后),如"timeout server 600s"则表示客户端请求到haproxy服务器之后,由haproxy将请求转发到后端的服务器,若后端服务器(比如数据库查询操作)在600s(10分钟)内依旧没有响应则超时(说白了就是客户端已经和后端服务器建立连接后,定义执行查询或写入操作的超时时间)。
timeout client 600s
与客户端的最长空闲时间,表示客户端和服务器端已经建立连接,若在指定的规定的时间内发起了新的请求则无需重新建立连接,直接使用上一次的连接即可。
timeout http-keep-alive 120s
session会话保持超时时间,范围内会转发到相同的后端服务器。
timeout check 5s
对后端服务器的检测超时时间。
frontend前端servername,类似于Nginx的一个虚拟主机server。
bind:
指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP或端口,可同时用于listen字段中
语法为:"bind [
]: [, ...] [param*]",如"bind 172.30.1.102:80,172.30.1.102:8080,172.30.1.102:8081"
mode http/tcp
指定负载协议类型
use_backend backend_name
调用的后端服务器组名称(即使用backend关键字定义的后端服务器组)
backend后端服务器组,等于nginx的upstream
mode http/tcp
指定负载协议类型
option
配置选项,option后面加httpchk,smtpchk, mysql-check, pgsql-check,ssl-hello-chk方法,可用于实现更多应用层检测功能。
server
定义后端realserver
后端服务器状态监测及相关配置如下所示:
check
对指定real进行健康状态检查,默认不开启
addr IP
可指定的健康状态监测IP
port num
指定的健康状态监测端口,比如LA/NMP架构中,咱们可以指定检测PHP的9000端口。
inter num
健康状态检查间隔时间,默认2000 ms
fall num
后端服务器失效检查次数,默认为3
rise num
后端服务器从下线恢复检查次数,默认为2
weight
默认为1,最大值为256,0表示不参与负载均衡
backup
将后端服务器标记为备份状态,即当其它可用节点都挂掉后该节点才会被启用。
disabled
将后端服务器标记为不可用状态,即手动将某个后台节点下线。
redirect prefix http://node101.yinzhengjie.org.cn
将请求临时重定向至其它URL,只适用于http模式
maxconn当前后端server的最大并发连接数,若并发数没有超过规定的最大值时则当前节点响应用户请求(说白了就是未达到最大并发连接数时所有用户请求的连接数它一个节点来处理),若超过则需要其它节点来一起响应用户请求(说白了就是达到最大并发连接数时它和别的节点一起来处理用户请求的连接数)。
backlog当server的连接数达到上限后的后援队列长度
listen将frontend和backend合并在一起配置。可参考案例:https://www.cnblogs.com/yinzhengjie/p/12114195.html