首页 > 其他分享 >六月学习之Haproxy Proxies配置

六月学习之Haproxy Proxies配置

时间:2023-07-04 22:32:57浏览次数:37  
标签:Haproxy haproxy maxconn 六月 server 172.16 80 Proxies check

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

相关文章

  • 六月学习之Haproxy default配置
    4、Haproxydefault配置defaults段用于为所有其他配置段提供默认参数4.1、option参数httplogoptionhttplog:用来记录日志,其通常包括但不限于HTTP请求、连接计时器、会话状态、连接数、捕获的首部及cookie、"frontend"、"backend"等信息。dontlognulloptiondontlognull:不记录......
  • 代理服务器之 squid、lvs、nginx、haproxy之间的区别
    代理服务器之squid、lvs、nginx、haproxy之间的区别代理服务可简单的分为正向代理和反向代理1、正向代理正向代理服务器:squid用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上......
  • Haproxy介绍及安装
    Haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。参考网址......
  • HAproxy 配置
    HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它......
  • KeepAlived和HAproxy的介绍和原理及应用
    KeepAlived是一款基于VRRP协议实现的负载均衡软件,可以在多个服务器节点之间实现高可用部署和负载均衡。它通过检测后端节点的健康状态,将请求分发到可用的节点上。同时,Keepalived还支持多种健康检查方式和自定义的负载均衡算法,可以满足不同场景的需求。HAproxy是一款高性能的负载均......
  • 阅读笔记 六月
    第五章——画蛇添足:    第五章主要阐述了结构师在开发第二个系统时,容易被诱惑开发更多的功能,从而达到不好的效果,这应该被避免。大部分结构师在开发第一个系统时,由于技术不够成熟,所以他会谨慎仔细地工作。对于不断产生的装饰和润色功能,大部分都被搁置在一边,作为“下一个......
  • haproxy 2.8 发布
    最近haproxy2.8发布了,提供了不少新特性,以及新能上的提升新特性lua的邮件通知新的lua事件框架lua队列支持更多新的可以lua访问的server函数lua执行超时指令http客户端可以禁用默认dns直接request以及response的http压缩tls签名算法支持配置alpn默认值支持......
  • 六月八日实验
    实验一思考:将line34改成n=i,运行结果与之前不同的原因是feof()是判断文件结束的函数,结束时返回1,未结束是返回0。而最后一个有效字符不一定是文件的最后一个字符。如出现“空格”或“回车”等字符时feof()依然返回1,故在此文件的条件下需要将n设为i-1.实验二略实验三略实验......
  • 武汉星起航:亚马逊卖家如何通过六月,实现销量增长
    六月是一个重要的销售季节,对于亚马逊卖家来说,高效运营至关重要。下面是武汉星起航整理的一些提高六月销售效果的策略和技巧:优化产品页:确保你的产品页信息完整准确,包括清晰的产品标题、详细的产品描述和吸引人的产品图片。优化关键词,以提高产品在搜索结果中的排名。促销活动:利用六月......
  • haproxy.router.openshift.io/disable_cookies
    haproxy.router.openshift.io/disable_cookies是OpenShift中Route对象的一个注解,用于控制是否禁用HAProxy负载均衡器在请求和响应中添加Cookie。当该注解设置为true时,HAProxy负载均衡器将不会在请求和响应中添加Cookie。这对于一些特定的应用程序场景可能非常有用,例......