全局配置前端
"global"配置中的参数为进程级别的参数,且一般与其运行的OS相关。node
* 进程管理以及安全相关的参数linux
-chroot<jail dir>:修改haproxy的工做目录至指定的目录并在放弃权限以前执行chroot()操做,能够提高haproxy的安全级别,不过须要注意的是要确保指定的目录为空目录且任何用户均不能有写权限;后端
-daemon:让haproxy以守护进程的方式工做于后台,其等于“-D”选项的功能,固然,也能够在命令行中以“-db”选项将其禁用;安全
-gid<number>:以指定的GID运行haproxy,建议使用专用于运行haproxy的GID,以避免因权限问题带来风险;服务器
-group<group name>:同gid,不过指定的组名;cookie
-log <address> <facility> [max level [min level]]:定义全局syslog服务器,最多能够定义两个;网络
-log-send-hostname [<string>]:在syslog信息的首部添加当前主机名,能够为“string”指定的名称,也能够缺省使用当前主机名;并发
-nbproc <number>:指定启动的haproxy进程的个数,只能用于守护进程模式的haproxy;默认只启动一个进程,鉴于调试困难等多方面的缘由,通常只在单进程仅能打开少数文件描述符的场景中才使用多进程模式;frontend
-pidfile:haproxy运行的进程pid文件位置目录
-ulimit -n:设定每进程所可以打开的最大文件描述符数目,默认状况下其会自动进行计算,所以不推荐修改此选项;
-user:同uid,但使用的是用户名;
-stats:
-node:定义当前节点的名称,用于HA场景中多haproxy进程共享同一个IP地址时;
-description:当前实例的描述信息;
*性能调整相关的参数
- maxconn <number>:设定每一个haproxy进程所接受的最大并发链接数,其等同于命令行选项“-n”;“ulimit -n”自动计算的结果正是参照此参数设定的;
- maxpipes<number>:
:haproxy使用pipe完成基于内核的tcp报文重组,此选项则用于设定每进程所容许使用的最大pipe个数;每一个pipe会打开两个文件描述符,所以,”ulimit -n“自动计算时会根据须要调大此值:默认为maxconn/4,其一般会显得过大;
- noepoll:在linux系统上禁用epoll机制;
- nokqueue:在BSE系统上禁用kqueue机制;
- nopoll:禁用poll机制;
- nosepoll:在linux禁用启发式epoll机制;
- nosplice:禁止在linux套接字上使用内核tcp重组,这会致使更多的recv/send系统调用;不过,在linux2.6.25-28系列的内核上,tcp重组功能有bug存在;- 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>:设定内核套接字中服务端或客户端接受缓冲的大小,单位为字节,强烈推荐
使用默认值;
代理配置
代理相关的配置能够以下配置段中。
- defaults <name>
- frontend <name>
- backend <name>
- listen <name>
"defaults"段用于为全部其它配置段提供默认参数,这配置默认配置参数可由下一个"defaults"所从新设定。
"frontend"段用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之创建链接。
"backend"段用于定义一系列"后端"服务器,代理将会将对应客户端的请求转发至这些服务器。
"listen"段经过关联"前端"和"后端"定义了一个完整的代理,一般只对TCP流量有用。
全部代理的名称只能使用大小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此外,ACL 名称会区分字母大小写。