5、Haproxy Proxies配置
代理相关配置
frontend <name>:用于定义一系列监听的端口,这些端口可接受客户端请求并与之建立连接
backend <name>:用于定义一系列后端服务器,代理将会将对应客户端的请求转发至这些服务器
listen <name>:通过关联"前端"和"后端"定义了一个完整的代理
5.1、mode参数
mode概念:设置haproxy实例运行的协议
mode语法:mode { tcp|http }
tcp:实例运行于TCP模式,不对7层报文做任何检查;通常用于SSL、SSH、MYSQL等应用
http:实例运行于HTTP模式,客户端请求服务端,服务端重新封装请求报文,请求后端真实节点
mode示例
#listen中定义mode
listen www *:8089
mode tcp
server web1 172.16.1.7:8080
#frontend中定义mode
frontend shop *:80
mode http
use_backend webcluster
5.2、bind参数
bind概念:设置haproxy实例运行的端口
bind语法:bind [<address>]:<port_range> [, ...] interface <interface>
<address>:可选选项,其可以为主机名、IPV4地址、IPV6地址或*;将其指定为*或0.0.0.0时,将监听当前系统的所有IPV4地址
<port_range>:可以是一个特定的TCP端口,也可是一个端口范围,如8080-9090
<interface>:指定物理接口名称,仅能在Linux系统上使用;其不能使用接口别名,只有管理有权限指定绑定的物理接口
bind示例
#listen中定义bind
listen proxy.qingchen.com
bind *:80 #单个端口
mode tcp
server web1 172.16.1.7:8080
#frontend中定义bind
frontend proxy.qingchen.com
bind *:88999-9090
mode tcp
use_backend webcluster
5.3、maxconn参数
maxconn概念:设定一个前端的最大并发连接数,对于大型站点来说,应该尽可能提高此值,从而避免haproxy无法应答用户请求,当然,此值最大值不能超出global段中的定义
maxconn注意:haproxy会为每个连接维持两个缓冲,每个缓冲的大小为8KB,再加上其它的数据,每个连接将大约占用17KB的RAM空间,这意味着经过适当优化后,1GB的可用RAM空间将能维护40000-50000并发连接
maxconn语法: maxconn <conns>
<conns>:如果为<conns>指定了一个过大值,极端场景下,其最终占据的空间可能会超出当前主机的可用内存,这可能会带来意想不到的结果,因此,将其设定了一个系统可接受值
maxconn示例
#Global settings(定义全局,最大不能超过4000并发连接数)
global
maxconn 4000
#defaults settings(当frontend没定义则使用默认,最大不能超过3000并发连接数)
defaults
maxconn 3000
#frontend settings(定义每个站点的最大连接数,所有站点并发值加起来不能超过Global中的设定)
frontend proxy.qingchen.com
mode http
maxconn 2000
frontend ha.qingchen.com
mode http
maxconn 2000
5.4、server参数
为后端声明一个server节点信息,因此,不能用于defaults和frontend区段
server语法: server <name> <address>[:port] [param*]
<name>:为此服务器指定标识名称,会出现在日志文件中
<address>:填写节点的IPV4地址,也支持使用可解析的主机名称
[:port]:指定将连接所发往节点的目标端口,如未设定,则使用客户端请求的端口
[param*]:为此服务器设定的一系列参数,其可用的参数非常多,下面仅说明几个常用的参数
5.4.1、backup
backup设定为备用服务器
在负载均衡场景中,所有的正常server均不可用时,此backup节点则会顶替提供服务
backend webcluster
server web1 172.16.1.7:80 backup #当8与9都节点异常,则启用7节点
server web2 172.16.1.8:80
server web3 172.16.1.9:80
5.4.2、check
check:对此server进行TCP的健康状态检查
backend webcluster
server web1 172.16.1.7:80 backup #当8与9都节点异常,则启用7节点
server web2 172.16.1.8:80 check port 80 #检测tcp的80端口
server web3 172.16.1.9:80 check port 80
5.4.3、inter
inter <delay>:设定健康状态检查的时间间隔,单位为毫秒,默认为2000毫秒
backend webcluster
server web1 172.16.1.7:80 backup
server web2 172.16.1.8:80 check inter 3000
server web3 172.16.1.9:80 check inter 3000
5.4.4、rise
rise <count>:设置离线状态转换至正常状态需要成功检查的次数
backend webcluster
server web1 172.16.1.7:80 backup
server web2 172.16.1.8:80 check inter 3000 rise 2
server web3 172.16.1.9:80 check inter 3000 rise 2
5.4.5、fall
fall <count>:设置正常状态节点转换为不可用状态,需要检查的次数
backend webcluster
server web1 172.16.1.7:80 backup
server web2 172.16.1.8:80 check inter 3000 rise 2 fall 3
server web3 172.16.1.9:80 check inter 3000 rise 2 fall 3
5.4.6、maxconn
maxconn <maxconn>:指定此服务器接受的最大并发连接数
如果发往此服务器的连接数目高于此处指定的值,其将被放置于请求队列,以等待其它连接被释放
backend webcluster
server web1 172.16.1.7:80 backup
server web2 172.16.1.8:80 check inter 3000 rise 2 fall 3 maxconn 2000
server web3 172.16.1.9:80 check inter 3000 rise 2 fall 3 maxconn 3000
5.4.7、maxqueue
maxqueue <maxqueue>:设定请求队列的最大长度
当请求超过maxconn设定的数值,剩余请求进入排队状态,排队的最大长度由maxqueue决定
#节点总共能处理的并发连接之和不能超过global设定的maxconn
backend webcluster
balance roundrobin
server web1 172.16.1.7:80 check maxconn 2000 maxqueue 200
server web2 172.16.1.8:80 check maxconn 2000 maxqueue 200
5.4.8、weight
weight <weight>:服务器节点权重,默认为1,最大值为256
0表示不参与负载均衡,等同于将该节点进行下线处理(可以通过脚本实现滚动上线于下线)
backend webcluster
server web1 172.16.1.7:80 backup
server web2 172.16.1.8:80 check inter 3000 rise 2 fall 3 maxconn 2000 maxqueue 200 weight 2
server web3 172.16.1.9:80 check inter 3000 rise 2 fall 3 maxconn 3000 maxqueue 200 weight 2
5.5、使用子配置管理
当业务众多时,将所有配置都放在一个配置文件中,会造成维护困难
可以考虑按业务分类,将配置信息拆分,放在不同的自配置文件中,从而达到方便维护的目的
5.5.1、创建子配置文件
#创建子配置文件,注意,必须为cfg后缀
mkdir /etc/haproxy/conf.d/
vim /etc/haproxy/conf.d/app.qingchen.net.cfg
frontend app_web
bind *:8899
mode http
use_backend app_servers
backend app_servers
balance roundrobin
server web1 172.16.1.7:8888 check inter 3000 fall 2 rise 5
server web2 172.16.1.8:8888 check inter 3000 fall 2 rise 5
5.5.2、修改unit配置
#添加子配置目录到unit文件中,使其能加载子目录配置
vim /usr/lib/systemd/system/haproxy.service
Description=HAProxy Load Balancer
After=network-online.target
Wants=network-online.target
[Service]
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/run/haproxy.pid"
#定义配置文件路径变量
Environment="CONFIG_D=/etc/haproxy/conf.d/"
#启动或停止使用-f调用CONFIG_D
ExecStartPre=/usr/sbin/haproxy -f $CONFIG -f $CONFIG_D -c -q $OPTIONS
ExecStart=/usr/sbin/haproxy -Ws -f $CONFIG -f $CONFIG_D -p $PIDFILE $OPTIONS
ExecReload=/usr/sbin/haproxy -f $CONFIG -f $CONFIG_D -c -q $OPTIONS
##
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
SuccessExitStatus=143
Type=notify
[Install]
WantedBy=multi-user.target
5.5.3、重载服务
systemctl daemon-reload
systemctl restart haproxy
netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8899 0.0.0.0:* LISTEN 112435/haproxy
标签:Haproxy,haproxy,maxconn,六月,server,172.16,80,Proxies,check
From: https://blog.51cto.com/u_13236892/6626343