在CentOS上安装和使用代理软件HAProxy的完全攻略

2020-01-30 14:48:02王旭

– spread-checks <0..50, in percent>:在haproxy后端有着众多服务器的场景中,在精确的时间间隔后统一对众服务器进行健康状况检查可能会带来意外问题;此选项用于将其检查的时间间隔长度上增加或减小一定的随机时长;
– tune.bufsize <number>:设定buffer的大小,同样的内存条件小,较小的值可以让haproxy有能力接受更多的并发连接,较大的值可以让某些应用程序使用较大的cookie信息;默认为16384,其可以在编译时修改,不过强烈建议使用默认值;
– tune.chksize <number>:设定检查缓冲区的大小,单位为字节;更大的值有助于在较大的页面中完成基于字符串或模式的文本查找,但也会占用更多的系统资源;不建议修改;
– tune.maxaccept <number>:设定haproxy进程内核调度运行时一次性可以接受的连接的个数,较大的值可以带来较大的吞吐率,默认在单进程模式下为100,多进程模式下为8,设定为-1可以禁止此限制;一般不建议修改;
– tune.maxpollevents <number>:设定一次系统调用可以处理的事件最大数,默认值取决于OS;其值小于200时可节约带宽,但会略微增大网络延迟,而大于200时会降低延迟,但会稍稍增加网络带宽的占用量;
– tune.maxrewrite <number>:设定为首部重写或追加而预留的缓冲空间,建议使用1024左右的大小;在需要使用更大的空间时,haproxy会自动增加其值;
– tune.rcvbuf.client <number>:
– tune.rcvbuf.server <number>:设定内核套接字中服务端或客户端接收缓冲的大小,单位为字节;强烈推荐使用默认值;
– tune.sndbuf.client:
– tune.sndbuf.server:
* Debug相关的参数
- debug
- quiet
* 超时时长
timeout http request :在客户端建立连接但不请求数据时,关闭客户端连接
timeout queue :等待最大时长
timeout connect: 定义haproxy将客户端请求转发至后端服务器所等待的超时时长
timeout client:客户端非活动状态的超时时长
timeout server:客户端与服务器端建立连接后,等待服务器端的超时时长,
timeout http-keep-alive :定义保持连接的超时时长
timeout check:健康状态监测时的超时时间,过短会误判,过长资源消耗
maxconn :每个server最大的连接数
http-server-close : 在使用长连接时,为了避免客户端超时没有关闭长连接,此功能可以使服务器端关闭长连接
redispatch: 在使用基于cookie定向时,一旦后端某一server宕机时,会将会话重新定向至某一上游服务器,必须使用 的选项
* 实现访问控制:
http-request: 7层过滤
tcp-request content: tcp层过滤,四层过滤
2.4 代理
代理相关的配置可以如下配置段中