HAProxy的配置详解

1.1 全局配置

global配置中的参数为进程级别的参数,且通常与其运行的OS相关

 进程管理及安全相关的参数

- chroot <jail dir>:修改haproxy的工作目录至制定的目录并在放弃权限之前执行chroot()操作,可以提升haproxy的安全级别,不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限;

- daemon:让haproxy以守护进程的方式工作于后台,其等同于"-D"选项的功能,当然,也可以在命令行中以"-db"选项将其禁用;

- gid <number>:以指定的GID运行haproxy,建议使用专用于运行haproxy的GID,以免因权限问题带来风险;

- group <group name>:同gid,不过指定的组名;

- log <address> <facility> [max level] [min level]:定义全局的rsyslog服务器,最多可以定义两个;

- log-send-hostname [<string>]:在syslog信息的首部添加当前主机名,可以为"string"指定的名称,也可以缺省使用当前主机名;

- nbproc <number>:指定启动的haproxy进程的个数,只能用于守护进程模式的haproxy;默认只启动一个进程,鉴于调试困难等多方面原因,一般只在单进程仅能打开少数文件描述符的场景中才使用多进程模式 ;

- pidfile:

- uid:以指定的UID身份进行haproxy进程;

- 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机制;

- noqueue:在BSD系统上禁用kqueue机制;

- nopoll:禁用poll机制;

- nosepoll:在linux系统禁用启发式epoll机制;

- nosplice:禁止在linux套接字上使用内核tcp重组,这会导致更多的resv/send系统调用;

- spread-checks <0..50,in precent>:在haproxy后端有着众多服务器场景中,在精确时间间隔后统一对众服务器进行健康状况检查可能会带来意外的问题,此选项用于将其检查的时间间隔长度上增加或减小一定的随机时长;

- tune.bufsize <number>:设定buffer的大小,同样的内存条件下,较小的值可以让haproxy有能力接受更多的并发链接,较大的值可以让某些应用程序使用较大的cookie信息;默认为16384,其可以在编译时修改,不过强烈建议使用默认值;

- tune.chksize <number>:设定检查缓冲区的大小,单位为字节;更大的值有助于在较大的页面中完成基于字符串或模式的文本查找,但也会占用更多的系统资源;不建议修改

- tune.maxpollevents <number>:设定一次系统调用可以处理的时间最大数,默认值取决于OS;其值小于200时可以节约带宽,但会略微增大网络延迟,而大于200时会降低延迟,但会稍稍增加网络带宽占用量;

- tune.rcvbuf.server <number>:设定内核套接字中服务端或客户端接收缓冲的大小,单位为字节;强烈推荐使用默认值;

- tune.maxaccept <number>:设定haproxy进程内核调度运行时一次性可以接受的连接的个数,较大的值可以带来较大的吞吐量,默认在单进程模式下为100,多进程模式下为8,设定为-1可以禁止此限制;一般不修改

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

补充:对于最大打开文件数量

首先SSH登录服务器,执行ulimit -a查看当前限制。这一步是可选,主要是看下限制,心里有数。

第一处修改:

vim /etc/security/limits.conf

在文件尾部增加:

* soft nofile 65535

* hard nofile 65535

第二处修改

vim /etc/profile

在文件尾部增加:

ulimit -S 65535

ulimit -H 65535

ulimit -n 65535

ulimit -f 6553500

保存修改后,重启Linux服务器。重启完毕后,SSH登入服务器,执行ulimit -a查看系统限制。

补充:ulimit命令的参数详细介绍

-H 设置硬资源限制.

-S 设置软资源限制.

-a 显示当前所有的资源限制.

-c size:设置core文件的最大值.单位:blocks

-d size:设置数据段的最大值.单位:kbytes

-f size:设置创建文件的最大值.单位:blocks

-l size:设置在内存中锁定进程的最大值.单位:kbytes

-m size:设置可以使用的常驻内存的最大值.单位:kbytes

-n size:设置内核可以同时打开的文件描述符的最大值.单位:n

-p size:设置管道缓冲区的最大值.单位:kbytes

-s size:设置堆栈的最大值.单位:kbytes

-t size:设置CPU使用时间的最大上限.单位:seconds

-v size:设置虚拟内存的最大值.单位:kbytes

-u <程序数目>  用户最多可开启的程序数目
原文地址:https://www.cnblogs.com/zh-dream/p/12907955.html