企业运维之七层负载均衡--haproxy(代码片段)

123坤 123坤     2022-12-06     234

关键词:

1. 基础介绍

https://www.haproxy.org/(官方网站)

https://www.haproxy.org/download/1.8/src/haproxy-1.8.14.tar.gz(下载地址)

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。

第七层是 web 内容交换技术,即对访问流量的高层控制方式,通过对应用层内容的切换,将这种真正有意义的信息,结合我们对负载均衡设备的特定设置,进行服务器的选择。七层负载均衡是在四层的基础上做的,它可以根据七层的特定信息决定如何转发流量以及选择服务器实现负载均衡。
考虑到为了不造成访问流量的停滞,第七层交换技术更具优势。在接收到数据包时,它会检查Http报头,根据报头内的数据来决定将信息发送给哪台服务器,同时根据报头提供的信息判断用何种方式为个人信息或者图像视频等不同格式的内容提供服务。Http请求URL,但通过 web 内容交换技术,Http有可能请求到不同的服务器,即同一个URL请求对应了多个服务器,因为在Http发出请求时,并非建立了一个会话,而是通过负载均衡服务器建立了多个会话与真实的服务器连接。

2. 负载均衡的类型

  1. 无负载均衡:没有负载平衡的简单 Web 应用程序环境可能如下所示;

在这里插入图片描述
用户直接连接到Web服务器,在web 服务器上,没有负载平衡。如果单个Web服务器出现故障,用户将无法再访问到Web服务器。此外,如果许多用户试图同时访问服务器并且无法处理负载,他们可能会遇到缓慢的体验,或者可能根本无法连接。

  1. 4层负载均衡

将网络流量负载平衡到多个服务器的最简单方法是使用第4层(传输层)负载均衡。以这种方式进行负载均衡将根据 IP 范围和端口转发用户流量(即,如果请求访问web 服务器,则流量将转发到处理web 请求的后端。端口80)。

第四层交换功能的实现,也就是虚拟IP 地址( VIP) 方法,这个地址并不是与特定的计算机相连,也没有与计算机中的网络接口卡相连。它的实现过程是当数据包发送到这个VIP 地址时,通过第四层交换功能,并根据设定好的调度算法分配到一个真实的网络接口。每次TCP 请求都可以动态分配其中的一个IP 地址,从而达到负载均衡。
四层负载均衡,主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的后端服务器。

在这里插入图片描述

用户访问负载均衡器,负载均衡器将用户的请求转发给后端服务器的Web后端组。无论选择哪个后端服务器,都将直接响应用户的请求。通常,Web后端中的所有服务器应该提供相同的内容 - 否则用户可能会收到不一致的内容。

  1. 七层负载均衡

7层负载均衡是更复杂的负载均衡网络流量的方法是使用第7层(应用层)负载均衡。使用第7层允许负载均衡器根据用户请求的内容将请求转发到不同的后端服务器。这种负载均衡模式允许在同一域和端口下运行多个Web应用程序服务器。

七层负载均衡,也称为“内容交换”,主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的后端服务器。

注:一般4层 lvs 的性能好一点,但是七层 haproxy 可以做具体的策略,所以企业中一般是四层和七层负载均衡结合使用,也就是lvs->haproxy->rs。

3. Haproxy 的部署

实验环境:server1作为调度器,server2和server3作为后端的真实服务器。

3.1 Haproxy 实现负载均衡和监控

  1. 七层调度器是支持端口转发且自带健康检测的,首先在调度器上安装haproxy服务;
    编辑配置文件,修改内核的最大连接数系统的最大连接数。
    因为文件中的最大连接数为4000,而系统默认最大为1024。操作系统的最大允许操作数必须也做出改变。所以需要编辑/etc/security/limits.conf 文件,修改操作系统最大可操作文件数量。
[root@server1 ~]# yum install -y haproxy
[root@server1 ~]# cd /etc/haproxy/
[root@server1 haproxy]# id haproxy
uid=188(haproxy) gid=188(haproxy) groups=188(haproxy)

[root@server1 haproxy]# sysctl -a |grep file
fs.file-max = 200070
fs.file-nr = 928	0	200070
fs.xfs.filestream_centisecs = 3000
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"

[root@server1 haproxy]# vim /etc/security/limits.conf

haproxy         -       nofile          4096
#在文件最后一行加入表示文件数为4096;表示对haproxy 服务用户做修改,默认为1024,-表示软硬权限一致
  1. /etc/haproxy/目录下,编辑haproxy.cfg文件,内容如下

配置文件中global表示全局配置段;defaults表示默认配置段;

[root@server1 haproxy]# vim haproxy.cfg 

 60         stats uri /status		#在default区域添加监控

 63 frontend  main *:80		#负载均衡器端采监听80端口
 64 #    acl url_static       path_beg       -i /static /images /javascript /sty    lesheets
 65 #    acl url_static       path_end       -i .jpg .gif .png .css .js
 66 #
 67 #    use_backend static          if url_static
 68     default_backend             app	#默认访问的服务器组是app组


 73 #backend static
 74 #    balance     roundrobin		
 75 #    server      static 127.0.0.1:4331 check

 80 backend app
 81     balance     roundrobin		##轮询方式为加权轮询
 82     server  app1 172.25.105.2:80 check
 83     server  app2 172.25.105.3:80 check
[root@server1 haproxy]# systemctl start haproxy
[root@server1 haproxy]# netstat -antlp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10223/haproxy 

此时在网页访问http://172.25.105.1/status可以看到监控信息;

在这里插入图片描述

访问http://172.25.105.1/ 时可以看到负载均衡现象,也可以用 curl 172.25.105.1 来测试;

[root@westos ~]# curl 172.25.105.1
server2
[root@westos ~]# curl 172.25.105.1
server3
[root@westos ~]# curl 172.25.105.1
server2
[root@westos ~]# curl 172.25.105.1
server3

此时如果关闭一个后端,haproxy 是有健康检查的,会自动识别到。

这种直接可以看到监控信息相对来说是不太安全的,可以对其加对应的验证:

[root@server1 haproxy]# vim haproxy.cfg 

 60         stats uri /status
 61         stats auth admin:zxk

[root@server1 haproxy]# systemctl restart haproxy

此时再次访问:http://172.25.105.1/status时便有认证;

在这里插入图片描述

3.2 日志采集

默认日志是存放在/var/log/messages下,为了方便查看用户访问时产生的日志,可以编辑/etc/rsyslog.conf文件,内容如下所示:

[root@server1 haproxy]# vim /etc/rsyslog.conf 

 14 # Provides UDP syslog reception
 15 $ModLoad imudp		#开启日志的传输格式UDP
 16 $UDPServerRun 514
 
 73 local7.*                                                /var/log/boot.log
 74 local2.*                       /var/log/haproxy.log
 #表示local2的所有日志存放在后面的文件中
[root@server1 haproxy]# systemctl restart rsyslog

此时重启之后还没有生成日志文件/var/log/haproxy.log ,需要经过访问几次然后才会生文件。

[root@server1 haproxy]# ll /var/log/haproxy.log
-rw------- 1 root root 12222 Jul 11 22:11 /var/log/haproxy.log
[root@server1 haproxy]# tail -n3 /var/log/haproxy.log
Jul 11 22:10:49 localhost haproxy[11761]: Proxy app started.
Jul 11 22:10:54 localhost haproxy[11762]: 172.25.105.250:45398 [11/Jul/2021:22:10:54.750] main main/<STATS> -1/-1/-1/-1/0 401 262 - - PR-- 0/0/0/0/0 0/0 "GET /status HTTP/1.1"
Jul 11 22:11:11 localhost haproxy[11762]: 172.25.105.250:45400 [11/Jul/2021:22:11:11.300] main main/<STATS> 0/0/0/0/0 200 14104 - - LR-- 1/1/0/0/0 0/0 "GET /status HTTP/1.1"

3.3 调度算法

  1. source 算法
    前面负载时,使用默认的 rr 轮询调度的算法;
    修改调度算法为 source,该算法通过在静态散列表中查看源 ip 来给真正的服务器分派请求,当来源 ip 不变时,只要后端的页面还在,就不会调度的其他的页面。当 IP 不变,当后端页面找不到时才会调度到其他的页面。
[root@server1 haproxy]# vim haproxy.cfg 

 82 backend app
 83     #balance     roundrobin
 84     balance     source
 85     server  app1 172.25.105.2:80 check
 86     server  app2 172.25.105.3:80 check
[root@server1 haproxy]# systemctl reload haproxy
  1. 设置权重

对于某一个性能比较好的后端服务器,可以较多的分发一些请求;

[root@server1 haproxy]# vim haproxy.cfg 

 82 backend app
 83     balance     roundrobin
 84     #balance     source
 85     server  app1 172.25.105.2:80 check weight 2
 86     server  app2 172.25.105.3:80 check
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# systemctl reload haproxy

测试时效果如下:

[root@westos ~]# curl 172.25.105.1
server2
[root@westos ~]# curl 172.25.105.1
server2
[root@westos ~]# curl 172.25.105.1
server3
[root@westos ~]# curl 172.25.105.1
server2
[root@westos ~]# curl 172.25.105.1
server2
[root@westos ~]# curl 172.25.105.1
server3

3.5 设定备机

当后端两个服务器都挂掉之后,此时可以用备机来提示访问问题,而不是将错误的信息返回给用户;

[root@server1 haproxy]# vim haproxy.cfg 

 82 backend app
 83     balance     roundrobin
 84     #balance     source
 85     server  app1 172.25.105.2:80 check weight 2
 86     server  app2 172.25.105.3:80 check
 87     server  backup 172.25.105.1:8080 backup	#本机的8080端口

[root@server1 haproxy]# vim /etc/httpd/conf/httpd.conf 
#修改本机的http的默认端口为8080
 41 #Listen 12.34.56.78:80
 42 Listen 8080
 
[root@server1 haproxy]# cat /var/www/html/index.html 
Sorry ! Please try again later!!

[root@server1 haproxy]# systemctl start httpd
[root@server1 haproxy]# systemctl reload haproxy
[root@server1 haproxy]# netstat -antulp| grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14612/haproxy       
tcp6       0      0 :::8080                 :::*                    LISTEN      14619/httpd  

此时访问:http://172.25.105.1/status可以看到备机信息。

在这里插入图片描述

此时当其他的都停掉之后,才会访问到备机,生产中备机应该只提示错误信息,让用户不在来访问。

在这里插入图片描述

4. Haproxy的访问控制

4.1 通过调度器访问不同后端

  1. 编辑haproxy.cfg 文件,开放访问策略。
    用户访问时,以/static /images /javascript /stylesheets开头,以.jpg .gif .png .css .js结尾的访问请求,被转到后端默认的服务器组上;否则就转发到 app 服务器组上;
[root@server1 haproxy]# vim haproxy.cfg 

65 frontend  main *:80
 66     acl url_static       path_beg       -i /static /images /javascript /stylesheets
 67     acl url_static       path_end       -i .jpg .gif .png .css .js
 68 
 69     use_backend static          if url_static
 70     default_backend             app

 75 backend static
 76     balance     roundrobin
 77     server      static 172.25.105.3:80 check

 82 backend app
 83     balance     roundrobin
 84     server  app1 172.25.105.2:80 check
[root@server1 haproxy]# systemctl reload haproxy

给server3加信息,此时在访问http://172.25.105.1/images/vim.jpg时才能访问到图片信息;

[root@server3 ~]# mkdir /var/www/html/images
[root@server3 ~]# ls
vim.jpg
[root@server3 ~]# mv vim.jpg /var/www/html/images/
[root@server3 ~]# cd /var/www/html/images/
[root@server3 images]# ls
vim.jpg

此时在访问:http://172.25.105.1/status,可以看到static和app的信息。

在这里插入图片描述

测试:
默认访问的是server2,当以image开头以.png.jpg开始时,才可以匹配到server3

在这里插入图片描述

在这里插入图片描述

4.2 用户访问黑白名单设置

  1. 黑名单

源地址为172.25.105.250时,请求会被禁止;

[root@server1 haproxy]# vim haproxy.cfg 

 66 frontend  main *:80
 67     acl url_static       path_beg       -i /static /images /javascript /stylesheets
 68     acl url_static       path_end       -i .jpg .gif .png .css .js
 69 
 70     acl blacklist src 172.25.105.250	#黑名单,来源
 71     block if blacklist
 72 
 73     use_backend static          if url_static
 74     default_backend             app
 75 
 
[root@server1 haproxy]# systemctl restart haproxy

测试:
默认访问的是后端的app当为黑名单中的用户时,会默认禁止;其他用户可以正常访问。

[root@westos ~]# curl 172.25.105.1
<html><body><h1>403 Forbidden</h1>
Request forbidden by administrative rules.
</body></html>

[root@server3 ~]# curl 172.25.105.1
server2
[root@server2 ~]# curl 172.25.105.1
server2

同样还除了黑名单之外还有白名单;白名单的书写和黑名单类似,只需将blacklist换为 whitelist 即可,后面接的IP或者网段即可为白名单;访问时白名单的用户会访问到后端app,不在白名单中的用户会被禁止。

  1. 重定向

以上设置黑白名单之后,此时直接返回错误值,过于暴力,不够友好,可以将其错误信息重定向一个错误返回页面。

[root@server1 haproxy]# vim haproxy.cfg 

 66 frontend  main *:80
 67     acl url_static       path_beg       -i /static /images /javascript /stylesheets
 68     acl url_static       path_end       -i .jpg .gif .png .css .js
 69 
 70     acl blacklist src 172.25.105.250
 71     block if blacklist
 72     errorloc 403 http://172.25.105.1:8080
 73 
 74     use_backend static          if url_static
 75     default_backend             app
[root@server1 haproxy]# systemctl restart haproxy

测试:对于命令的测试需要加参数-I,因为curl 默认不会显示重定向的信息;

[root@westos ~]# curl 172.25.105.1 -I
HTTP/1.1 302 Found
Cache-Control: no-cache
Content-length: 0
Location: http://172.25.0.1:8080

在这里插入图片描述

也可以将其重定向至别的 网站门户;

[root@server1 haproxy]# vim haproxy.cfg 

 66 frontend  main *:80
 67     acl url_static       path_beg       -i /static /images /javascript /stylesheets
 68     acl url_static       path_end       -i .jpg .gif .png .css .js
 69 
 70     acl blacklist src 172.25.105.250
 71     #block if blacklist
 72     #errorloc 403 http://172.25.105.1:8080
 73     redirect location http://www.baidu.com	if blacklist
 74     
 75     use_backend static          if url_static
 76     default_backend             app
 77 
[root@server1 haproxy]# systemctl restart haproxy

此时在用户 172.25.105.250访问服务器时会被重定向到百度。

4.3 读写分离

将读和写分别设定到不同的 RS上,编辑haproxy.cfg文件,然后重新编辑匹配的策略;

当匹配到写的规则时,去访问后端的static 172.25.105.3:80;当没有匹配到写的策略时会默认访问后端的app

[root@server1 haproxy]# vim haproxy.cfg 

 66 frontend  main *:80
 67     acl url_static       path_beg       -i /static /images /javascript /stylesheets
 68     acl url_static       path_end       -i .jpg .gif .png .css .js
 
 74     acl write method PUT
 75     acl write method POST

 79     use_backend static          if write
 80     default_backend             app
 
 85 backend static
 86     balance     roundrobin
 87     server      static 172.25.105.3:80 check

 92 backend app
 93     balance     roundrobin
 94     #balance     source
 95     server  app1 172.25.105.2:80 check weight 2
 96     #server  app2 172.25.105.3:80 check
 97     server  backup 172.25.105.1:8080 backup
[root@server1 haproxy]# systemctl reload haproxy

在server3上测试php 是否成功安装;

[root@server3 ~]# yum install -y php
[root@server3 images]# cd /var/www/html/
[root@server3 html]# vim index.php
[root@server3 html]# cat index.php 	#php的发布页面可用测试php是否安装成功。
<?php
phpinfo()
?>
[root@server3 html]# systemctl restart httpd

在RS上安装php服务,在RS的 apache 默认发布目录下,写两个php文件以实现动态的写入;建立一个上传目录,设置该目录的权限为777;

[root@server2 ~]# yum install -y php
[root@server2 ~]# systemctl restart httpd	#重启apache 会自动加载php信息
[root@server2 html]# vim upload_file.php 
[root@server2 html]# cat upload_file.php	#上传信息控制
<?php
if ((($_FILES["file"]["type"] == "image/gif")	#文件格式
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))			#2M内的大小
  
  if ($_FILES["file"]["error"] > 0)
    
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    
  else
    
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      
      echo $_FILES["file"]["name"] . " already exists. ";
      
    else
      
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      
    
  
else
  
  echo "Invalid file";
  
?>
[root@server2 html]# cat index.php	##php的发布页面
<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id查看详情  

企业运维之lvs负载均衡和高可用(代码片段)

企业运维之Lvs负载均衡和高可用1.LVS简介2.工作模式的介绍1.基于NAT的LVS模式负载均衡2.基于TUN的LVS负载均衡3.基于DR的LVS负载均衡4.基于FULLNAT的LVS负载均衡3.LVS负载均衡调度算法4.LVS的DR模式1.LVS简介LVS(LinuxVirtualServer)即Lin... 查看详情

企业运维之lvs负载均衡和高可用(代码片段)

企业运维之Lvs负载均衡和高可用1.LVS简介2.工作模式的介绍1.基于NAT的LVS模式负载均衡2.基于TUN的LVS负载均衡3.基于DR的LVS负载均衡4.基于FULLNAT的LVS负载均衡3.LVS负载均衡调度算法4.LVS的DR模式1.LVS简介LVS(LinuxVirtualServer)即Lin... 查看详情

nginx架构四之七层负载均衡(代码片段)

...用层。此时,该LoadBalancer能理解应用协议。如:HAProxy、Nginx等。四层负载均衡四层就是基于IP+端口的负载均衡,是在三次负载均衡的基础上,即从第四层"传输层"开始,使用"ip+port"接收请求&#x... 查看详情

企业实战-实现基于haproxy负载均衡集群的电子商务网站架构

企业实战:逐步实现企业各种情景下的需求企业情景四:随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务提供,不在和pc站点一起提供服务,此... 查看详情

企业运维之cdn内容分发网络(代码片段)

企业运维之CDN内容分发网络1.CDN是什么?2.CDN的工作原理3.CDN的组成4.部署5.负载均衡及健康检查1.CDN是什么?CDN是ContentDeliveryNetwork的简称,即"内容分发网络”的意思。一般我们所说的CDN加速,一般是指网站加速或者用户下... 查看详情

tengine-2.3.2负载均衡和haproxy七层代理(代码片段)

下载tengine-2.3.2[root@ha1soft]#wgethttp://tengine.taobao.org/download/tengine-2.3.2.tar.gz添加www用户[root@ha1soft]#useraddwww-s/sbin/nologin-u1000[root@ha1soft]#ll-rw-r--r--1rootroot2835884Sep52019tengine 查看详情

七层负载均衡haproxy生产环境lvs+keepalived+haproxy(代码片段)

LB-Haproxy/Nginx💯解析:七层负载均衡器,为与七层模型上的应用层,通过URL地址(应用层)进行负载均衡。优点:详细地址,数据精准定位缺点:地址长、范围广一、HAproxy原理解析别名:七... 查看详情

七层代理与四层负载区别(代码片段)

...会将请求报文拆开至应用层,分析用户请求的资源,然后haproxy会代替用户请求后端服务器的资源;后端服务器把资源返还给haproxy,haproxy会对资源再次进行封装,然后返还给客户端;七层代理是由haproxy进行处理的,并且需要建... 查看详情

haproxy企业级负载均衡应用实战讲解

课程介绍:HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行... 查看详情

使用haproxy-实现七层负载均衡

使用haproxy-实现七层负载均衡HAProxy概述:    HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。HAProxy... 查看详情

使用haproxy-实现七层负载均衡

 使用haproxy-实现七层负载均衡HAProxy概述: HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。HAProxy特别适用... 查看详情

企业运维实战--k8s学习笔记通过ingress-nginx实现k8s七层负载均衡ingress加密认证以及地址重写(代码片段)

1.Ingress服务简介一种全局的、为了代理不同后端Service而设置的负载均衡服务,就是Kubernetes里的Ingress服务。Ingress由两部分组成:Ingresscontroller和Ingress服务。IngressController会根据你定义的Ingress对象,提供对应的代理能... 查看详情

haproxy负载均衡原理及企业级实例部署haproxy集群

一HAProxy简介 HAProxy是一种高效、可靠、免费的高可用及负载均衡解决方案,非常适合于高负载站点的七层数据请求。客户端通过HAProxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转... 查看详情

实现基于haproxy+keepalived负载均衡高可用架构

1.项目介绍:上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务提供,不在和pc站点一起提供... 查看详情

haproxy负载均衡原理及企业级实例部署haproxy集群

一HAProxy简介HAProxy是一种高效、可靠、免费的高可用及负载均衡解决方案,非常适合于高负载站点的七层数据请求。客户端通过HAProxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给... 查看详情

linux企业运维——lvs负载均衡(代码片段)

Linux企业运维——LVS负载均衡(临时笔记,以后会详细修补)文章目录Linux企业运维——LVS负载均衡1、LVS简介2、DR模式3、使用DR模式实现负载均衡4、问题解决5、LVS的10个调度算法简介1、LVS简介LVS(LinuxVirtualServer&#x... 查看详情

centos7部署haproxy负载均衡策略(代码片段)

简介HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理,HAProxy运行在当前的硬... 查看详情