当前位置:首页 > 经验 >

32段均衡器完美调节图(32段均衡器最佳参数)

来源:原点资讯(www.yd166.com)时间:2022-10-27 02:07:09作者:YD166手机阅读>>

32段均衡器完美调节图,32段均衡器最佳参数(1)

HAProxy是什么

HAProxy 是一个免费的负载均衡软件,可以运行于大部分主流的 Linux 操作系统上。

HAProxy 提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。

HAProxy 的社区非常活跃,版本更新快速(最新稳定版1.7.2于2017/01/13推出)。最关键的是,HAProxy 具备媲美商用负载均衡器的性能和稳定性。

因为 haproxy 的上述优点,它当前不仅仅是免费负载均衡软件的首选,更几乎成为了唯一选择。

HAProxy 的核心功能
  • 负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash 等丰富的负载均衡算法
  • 健康检查:支持TCP和HTTP两种健康检查模式
  • 会话保持:对于未实现会话共享的应用集群,可通过 Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种 Hash 方式实现会话保持
  • SSL:HAProxy 可以解析 HTTPS 协议,并能够将请求解密为 HTTP 后向后端传输
  • HTTP 请求重写与重定向
  • 监控与统计:HAProxy 提供了基于 Web 的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控 HAProxy 的状态
HAProxy的关键特性性能
  • 采用单线程、事件驱动、非阻塞模型,减少上下文切换的消耗,能在1ms内处理数百个请求。并且每个会话只占用数KB的内存。
  • 大量精细的性能优化,如O(1)复杂度的事件检查器、延迟更新技术、Single-buffereing、Zero-copy forwarding等等,这些技术使得HAProxy在中等负载下只占用极低的CPU资源。
  • HAProxy大量利用操作系统本身的功能特性,使得其在处理请求时能发挥极高的性能,通常情况下,HAProxy自身只占用15%的处理时间,剩余的85%都是在系统内核层完成的。
  • HAProxy作者在8年前(2009)年使用1.4版本进行了一次测试,单个HAProxy进程的处理能力突破了10万请求/秒,并轻松占满了10Gbps的网络带宽。
稳定性

作为建议以单进程模式运行的程序,HAProxy对稳定性的要求是十分严苛的。按照作者的说法,HAProxy在13年间从未出现过一个会导致其崩溃的BUG,HAProxy一旦成功启动,除非操作系统或硬件故障,否则就不会崩溃(我觉得可能多少还是有夸大的成分)。

在上文中提到过,HAProxy的大部分工作都是在操作系统内核完成的,所以HAProxy的稳定性主要依赖于操作系统,作者建议使用2.6或3.x的Linux内核,对sysctls参数进行精细的优化,并且确保主机有足够的内存。这样HAProxy就能够持续满负载稳定运行数年之久。

个人的建议:

  • 使用3.x内核的Linux操作系统运行HAProxy
  • 运行HAProxy的主机上不要部署其他的应用,确保HAProxy独占资源,同时避免其他应用引发操作系统或主机的故障
  • 至少为HAProxy配备一台备机,以应对主机硬件故障、断电等突发情况(搭建双活HAProxy的方法在后文中有描述)
  • sysctl的建议配置(并不是万用配置,仍然需要针对具体情况进行更精细的调整,但可以作为首次使用HAProxy的初始配置使用):

net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 1024 65023 net.ipv4.tcp_max_syn_backlog = 10240 net.ipv4.tcp_max_tw_buckets = 400000 net.ipv4.tcp_max_orphans = 60000 net.ipv4.tcp_synack_retries = 3 net.core.somaxconn = 10000HAProxy的安装和运行

下面介绍在CentOS7中安装和运行HAProxy最新稳定版(1.7.2)的方法

安装

为HAProxy 创建用户和用户组,此例中用户和用户组都是“ha”。注意,如果想要让HAProxy监听1024以下的端口,则需要以root用户来启动

下载并解压

wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.2.tar.gz tar -xzf haproxy-1.7.2.tar.gz

编译并安装

make PREFIX=/home/ha/haproxy TARGET=linux2628 make install PREFIX=/home/ha/haproxy

PREFIX为指定的安装路径,TARGET则根据当前操作系统内核版本指定:

- linux22 for Linux 2.2 - linux24 for Linux 2.4 and above (default) - linux24e for Linux 2.4 with support for a working epoll (> 0.21) - linux26 for Linux 2.6 and above - linux2628 for Linux 2.6.28, 3.x, and above (enables splice and tproxy)

此例中,我们的操作系统内核版本为3.10.0,所以TARGET指定为linux2628

创建 HAProxy 配置文件

mkdir -p /home/ha/HAProxy/conf vi /home/ha/haproxy/conf/haproxy.cfg

我们先创建一个最简单配置文件:

global #全局属性 daemon #以daemon方式在后台运行 maxconn 256 #最大同时256连接 pidfile /home/ha/haproxy/conf/haproxy.pid #指定保存HAProxy进程号的文件 defaults #默认参数 mode http #http模式 timeout connect 5000ms #连接server端超时5s timeout client 50000ms #客户端响应超时50s timeout server 50000ms #server端响应超时50s frontend http-in #前端服务http-in bind *:8080 #监听8080端口 default_backend servers #请求转发至名为"servers"的后端服务 backend servers #后端服务servers server server1 127.0.0.1:8000 maxconn 32 #backend servers中只有一个后端服务,名字叫server1,起在本机的8000端口,HAProxy同时最多向这个服务发起32个连接

注意:HAProxy 要求系统的 ulimit -n 参数大于[maxconn*2 18],在设置较大的 maxconn 时,注意检查并修改 ulimit -n 参数

将 HAProxy 注册为系统服务

在 /etc/init.d 目录下添加 HAProxy 服务的启停脚本:

vi /etc/init.d/haproxy #! /bin/sh set -e PATH=/sbin:/bin:/usr/sbin:/usr/bin:/home/ha/haproxy/sbin PROGDIR=/home/ha/haproxy PROGNAME=haproxy DAEMON=$PROGDIR/sbin/$PROGNAME CONFIG=$PROGDIR/conf/$PROGNAME.cfg PIDFile=$PROGDIR/conf/$PROGNAME.pid DESC="HAProxy daemon" SCRIPTNAME=/etc/init.d/$PROGNAME # Gracefully exit if the package has been removed. test -x $DAEMON || exit 0 start() { echo -e "Starting $DESC: $PROGNAME\n" $DAEMON -f $CONFIG echo "." } stop() { echo -e "Stopping $DESC: $PROGNAME\n" haproxy_pid="$(cat $PIDFILE)" kill $haproxy_pid echo "." } restart() { echo -e "Restarting $DESC: $PROGNAME\n" $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE) echo "." } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2 exit 1 ;; esac exit 0运行启动、停止和重启

service haproxy start service haproxy stop service haproxy restart添加日志

HAProxy 不会直接输出文件日志,所以我们要借助 Linux 的 rsyslog 来让 HAProxy 输出日志

修改haproxy.cfg

在 global 域和 defaults 域中添加:

global ... log 127.0.0.1 local0 info log 127.0.0.1 local1 warning ... defaults ... log global ...

意思是将 info级(及以上)的日志推送到rsyslog的local0接口,将warn级(及以上)的日志推送到rsyslog的local1接口,并且所有frontend都默认使用global中的日志配置。

注:info级的日志会打印HAProxy处理的每一条请求,会占用很大的磁盘空间,在生产环境中,建议将日志级别调整为notice

为 rsyslog 添加 haproxy 日志的配置

vi /etc/rsyslog.d/haproxy.conf $ModLoad imUDP $UDPServerRun 514 $FileCreateMode 0644 #日志文件的权限 $FileOwner ha #日志文件的owner local0.* /var/log/haproxy.log #local0接口对应的日志输出文件 local1.* /var/log/haproxy_warn.log #local1接口对应的日志输出文件

修改 rsyslog 的启动参数

vi /etc/sysconfig/rsyslog # Options for rsyslogd # Syslogd options are deprecated since rsyslog v3. # If you want to use them, switch to compatibility mode 2 by "-c 2" # See rsyslogd(8) for more details SYSLOGD_OPTIONS="-c 2 -r -m 0"

重启 rsyslog 和 HAProxy

service rsyslog restart service haproxy restart

此时就应该能在/var/log目录下看到haproxy的日志文件了

用 logrotate 进行日志切分

通过 rsyslog 输出的日志是不会进行切分的,所以需要依靠 Linux 提供的 logrotate (Linux系统 Logrotate服务介绍)来进行切分工作

使用 root 用户,创建 haproxy 日志切分配置文件:

mkdir /root/logrotate vi /root/logrotate/haproxy /var/log/haproxy.log /var/log/haproxy_warn.log { #切分的两个文件名 daily #按天切分 rotate 7 #保留7份 create 0644 ha ha #创建新文件的权限、用户、用户组 compress #压缩旧日志 delaycompress #延迟一天压缩 missingok #忽略文件不存在的错误 dateext #旧日志加上日志后缀 sharedscripts #切分后的重启脚本只运行一次 postrotate #切分后运行脚本重载rsyslog,让rsyslog向新的日志文件中输出日志 /bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null endscript }

并配置在 crontab 中运行:

0 0 * * * /usr/sbin/logrotate /root/logrotate/haproxyHAProxy 搭建 L7 负载均衡器

总体方案

本节中,我们将使用 HAProxy 搭建一个 L7 负载均衡器,应用如下功能

  • 负载均衡
  • 会话保持
  • 健康检查
  • 根据URI前缀向不同的后端集群转发
  • 监控页面

架构如下:

32段均衡器完美调节图,32段均衡器最佳参数(2)

架构中共有6个后端服务,划分为3组,每组中2个服务:

  • ms1:服务URI前缀为ms1/的请求
  • ms2:服务URI前缀为ms2/的请求
  • def:服务其他请求

搭建后端服务

部署6个后端服务,可以使用任意的Web服务,如Nginx、Apache HTTPD、Tomcat、Jetty等,具体Web服务的安装过程省略。

此例中,我们在192.168.8.111和192.168.8.112两台主机上分别安装了3个Nginx:

ms1.srv1 - 192.168.8.111:8080 ms1.srv2 - 192.168.8.112:8080 ms2.srv1 - 192.168.8.111:8081 ms2.srv2 - 192.168.8.112:8081 def.srv1 - 192.168.8.111:8082 def.srv2 - 192.168.8.112:8082

在这 6个 Nginx 服务分别部署健康检查页面 healthCheck.html,页面内容任意。确保通过http://ip:port/healthCheck.html 可以访问到这个页面

接下来在6个 Nginx 服务中部署服务页面:

  • 在第一组中部署ms1/demo.html
  • 在第二组中部署ms2/demo.html
  • 在第三组中部署def/demo.html

demo.html的内容,以部署在192.168.8.111:8080上的为例:

Hello! This is ms1.srv1!

部署在 192.168.8.112:8080 上的就应该是

Hello! This is ms1.srv2!

以此类推

搭建 HAProxy

在 192.168.8.110 主机安装 HAProxy,HAProxy 的安装和配置步骤如上一章中描述,此处略去。

HAProxy 配置文件:

global daemon maxconn 30000 #ulimit -n至少为60018 user ha pidfile /home/ha/haproxy/conf/haproxy.pid log 127.0.0.1 local0 info log 127.0.0.1 local1 warning defaults mode http log global option http-keep-alive #使用keepAlive连接 option forwardfor #记录客户端IP在X-Forwarded-For头域中 option httplog #开启httplog,HAProxy会记录更丰富的请求信息 timeout connect 5000ms timeout client 10000ms timeout server 50000ms timeout http-request 20000ms #从连接创建开始到从客户端读取完整HTTP请求的超时时间,用于避免类DoS攻击 option httpchk GET /healthCheck.html #定义默认的健康检查策略 frontend http-in bind *:9001 maxconn 30000 #定义此端口上的maxconn acl url_ms1 path_beg -i /ms1/ #定义ACL,当uri以/ms1/开头时,ACL[url_ms1]为true acl url_ms2 path_beg -i /ms2/ #同上,url_ms2 use_backend ms1 if url_ms1 #当[url_ms1]为true时,定向到后端服务群ms1中 use_backend ms2 if url_ms2 #当[url_ms2]为true时,定向到后端服务群ms2中 default_backend default_servers #其他情况时,定向到后端服务群default_servers中 backend ms1 #定义后端服务群ms1 balance roundrobin #使用RR负载均衡算法 cookie HA_STICKY_ms1 insert indirect nocache #会话保持策略,insert名为"HA_STICKY_ms1"的cookie #定义后端server[ms1.srv1],请求定向到该server时会在响应中写入cookie值[ms1.srv1] #针对此server的maxconn设置为300 #应用默认健康检查策略,健康检查间隔和超时时间为2000ms,两次成功视为节点UP,三次失败视为节点DOWN server ms1.srv1 192.168.8.111:8080 cookie ms1.srv1 maxconn 300 check inter 2000ms rise 2 fall 3 #同上,inter 2000ms rise 2 fall 3是默认值,可以省略 server ms1.srv2 192.168.8.112:8080 cookie ms1.srv2 maxconn 300 check backend ms2 #定义后端服务群ms2 balance roundrobin cookie HA_STICKY_ms2 insert indirect nocache server ms2.srv1 192.168.8.111:8081 cookie ms2.srv1 maxconn 300 check server ms2.srv2 192.168.8.112:8081 cookie ms2.srv2 maxconn 300 check backend default_servers #定义后端服务群default_servers balance roundrobin cookie HA_STICKY_def insert indirect nocache server def.srv1 192.168.8.111:8082 cookie def.srv1 maxconn 300 check server def.srv2 192.168.8.112:8082 cookie def.srv2 maxconn 300 check listen stats #定义监控页面 bind *:1080 #绑定端口1080 stats refresh 30s #每30秒更新监控数据 stats uri /stats #访问监控页面的uri stats realm HAProxy\ Stats #监控页面的认证提示 stats auth admin:admin #监控页面的用户名和密码

修改完成后,启动 HAProxy

service haproxy start测试

首先,访问一下监控页面 http://192.168.8.110:1080/stats 并按提示输入用户名密码

接下来就能看到监控页面:

32段均衡器完美调节图,32段均衡器最佳参数(3)

监控页面中列出了我们配置的所有frontend和backend服务,以及它们的详细指标。如连接数,队列情况,session rate,流量,后端服务的健康状态等等

接下来,我们一一测试在HAProxy中配置的功能

健康检查

从监控页面中就可以直接看出健康检查配置的是否正确,上图中可以看到,backend ms1、ms2、default_servers 下属的 6 个后端服务的 Status 都是 20h28m UP,代表健康状态已持续了 20 小时 28 分钟,而 LastChk 显示 L7OK/200 in 1ms 则代表在 1ms 前进行了 L7 的健康检查(即HTTP请求方式的健康检查),返回码为200

此时我们将 ms1.srv1 中的 healthCheck.html 改名

mv healthCheck.html healthCheck.html.bak

然后再去看监控页面:

32段均衡器完美调节图,32段均衡器最佳参数(4)

首页 1234下一页

栏目热文

xc60均衡器最佳设置(2023款xc60的十大忠告)

xc60均衡器最佳设置(2023款xc60的十大忠告)

在40万左右的豪华品牌SUV车型中,沃尔沃XC60算的上是最“特立独行”的一个,简约的设计乍一看并不张扬,但当你细细体验...

2022-10-27 02:07:31查看全文 >>

汽车5段音效最佳设置(汽车5段均衡器最佳音质效果图)

汽车5段音效最佳设置(汽车5段均衡器最佳音质效果图)

大家好,我是汤姆特带你玩转特斯拉~−−−−−−−−−−−−−−−−−本篇跟大家聊一下如何设置音响的音效A️:基础信息 ️...

2022-10-27 01:44:00查看全文 >>

10段均衡器最佳效果(16段均衡器最佳效果图)

10段均衡器最佳效果(16段均衡器最佳效果图)

华硕Zenfone9小屏旗舰手机已于7月28日正式发布。(图片来源于网络)华硕Zenfone9号称最小的安卓旗舰之一。该...

2022-10-27 01:48:34查看全文 >>

12个均衡器最佳设置(车载12段均衡器调节图)

12个均衡器最佳设置(车载12段均衡器调节图)

原创 文:赖英智 新音响New Audiophile 三人行必有我师,拜访不同的发烧友,总能从中学习到一些新知与不同观念...

2022-10-27 02:07:14查看全文 >>

高中低三段均衡器设置(三段均衡器最佳参数)

高中低三段均衡器设置(三段均衡器最佳参数)

如何调整均衡器  均衡器(Equalizer),是一种可以分别调节各种频率成分电信号放大量的电子设备,通过对各种不同频率...

2022-10-27 02:02:57查看全文 >>

音响均衡器最佳设置图(音响均衡器10段最佳设置)

音响均衡器最佳设置图(音响均衡器10段最佳设置)

汽车音响均衡器用来调整播放音乐的风格,并不可以改善音质,要想得到更完美的视听感受,必须要下载播放音质更好,甚至无损的音乐...

2022-10-27 01:30:00查看全文 >>

31段均衡器最佳效果图(31段均衡器最佳调节图解)

31段均衡器最佳效果图(31段均衡器最佳调节图解)

众所周知均衡器的主要功能就是调整音色、调整声场和抑制声反馈了,如何调整音色的文章很多了,在这里我想着重介绍的是如何使用专...

2022-10-27 01:50:40查看全文 >>

汽车10段音效最佳设置(10段音效最佳设置图)

汽车10段音效最佳设置(10段音效最佳设置图)

电脑不支持 Dolby Audio 杜比音效,又想体验怎么办?相信大家去电影院看电影的时候,有时候会看到「Dolby A...

2022-10-27 01:33:17查看全文 >>

网易云均衡器最佳参数(十段均衡器最佳效果图)

网易云均衡器最佳参数(十段均衡器最佳效果图)

通过网易云音乐的均衡器功能,用户可以对系统的声音相关内容进行调节设置,那么网易云均衡器在哪里找到呢?下面小编就为大...

2022-10-27 01:31:33查看全文 >>

十档音效最佳音质(十段均衡器最佳重低音效果图)

十档音效最佳音质(十段均衡器最佳重低音效果图)

华为余承东手持Mate50系列手机钛媒体App 9月6日消息,华为推出全新旗舰手机Mate 50系列。新品为全球首款支持...

2022-10-27 02:00:46查看全文 >>

文档排行