HAProxy配置文件详解和ACL功能(3)

tune.maxpollevents :设定一次io复用时系统调用可以处理的事件最大数,默认值取决于OS;其值小于200时可节约带宽,但会略微增大网络延迟,而大于200时会降低延迟,但会稍稍增加网络带宽的占用量;(不建议设置项)

tune.maxrewrite :设定为首部重写或追加而预留的缓冲空间,建议使用1024左右的大小;在需要使用更大的空间时,haproxy会自动增加其值;(不建议设置项)

tune.rcvbuf.client :设定两端的recv_buff大小(haproxy和客户端建立tcp,和后端服务器建立tcp,共两端,因此有两个recv_buff和两个send_buff)。单位为字节;(强烈推荐使用默认值)

tune.rcvbuf.server :(强烈推荐使用默认值)

tune.sndbuf.client:设定两端的send_buff大小(强烈推荐使用默认值)

tune.sndbuf.server:(强烈推荐使用默认值)

因此,抛去不建议设置的项后,global段的设置大致如下:这也是yum安装haproxy时默认提供的配置

global
    daemon
    log        127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile    /var/run/haproxy.pid
    maxconn    4000
    user        haproxy
    group      haproxy
    stats socket /var/lib/haproxy/stats

注意上面配置了使用local2记录log,因此还需去rsyslogd的配置文件中添加该设备以及记录的日志位置。如下:

cat <<eof>>/etc/rsyslog.conf
  local2.*    /var/log/haproxy.log
eof

1.4 proxy配置段和常用配置选项

proxy配置部分是haproxy最重要的配置部分,包含下面四种配置段:

defaults []:设置frontend/backend/listen配置段的默认值。

frontend :配置监听客户端连接的套接字。

backend :配置haproxy所代理的后端服务器组。

listen :定义一个完整的前端和后端代理,但后端可以不定义。所以有时候等价于frontend+backend。它常用于绑定前后端1对1的情况。

所有代理的名称只能使用大写字母、小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此外,ACL名称会区分字母大小写。

目前,有两种主流的代理模式:tcp代理(即所谓的4层代理)和http代理(即所谓的7层代理)。在4层代理模式下,haproxy简单的在两端进行双向转发。在7层代理模式下,haproxy会对协议进行分析,可以根据协议来允许、阻塞、切换、增加、修改和移除request或response中的属性内容。

1.4.1 http事务模型相关设置

(no) option http-keep-alive
启用或禁用客户端和服务端到haproxy之间的长连接。haproxy将处理所有请求和响应报文,请求完后haproxy两端的连接都处于空闲状态。

(no) option http-server-close
启用或禁用在haproxy处理完第一次响应之后关闭haproxy到服务端之间长连接的功能,但客户端的长连接还保持,后续的每次请求都重新建立和后端的连接,每次响应后都关闭和后端的连接。启用该选项时,haproxy将会在转发给后端server的request数据包中添加一个"Connection:Close"标记,后端Server看到此标记就会在响应后关闭tcp连接。

(no) option http-tunnel
启用或禁用在haproxy处理完第一次请求和响应后关闭haproxy两端长连接的功能。在1.0-1.5.21版本该项是默认项,但现在不建议使用,因为会产生一些问题。

(no) option forceclose
启用或禁用传输完响应报文后关闭两端的连接。

(no) option htthttpcloseose(废弃选项)

(no) option http-pretend-keepalive
有些服务器会无视带有"Connection:Close"标记的请求,从而http-server-close的后端发送响应后不会关闭tcp连接。设置该选项时,haproxy在收到响应后会主动关闭和后端的连接。不建议设置该选项,因为绝大多数服务器都能正常工作并且有很好的调整能力。

一般来说,后端是静态内容缓存服务器时,或者就是静态服务器时,首选使用http-keep-alive模式,后端是动态应用程序服务器时,首选使用http-server-close模式

默认情况下,如果客户端请求根据调度算法被调度到另一台后端服务器时,http-keep-alive模式下和后端服务器的空闲连接会立即断开,并重新和被调度选中的后端服务器建立连接。可以使用"prefer-last-server"选项,使得haproxy先查看当前保持的空闲连接是否可用,如果可用,则继续使用该空闲连接,但是这样会影响调度性能。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8859b78c5f683a11c8d486dc0ccf0c06.html