- 前言
- 为什么要写这本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第一部分 安全运维篇
- 第 1 章 Linux 服务器安全运维
- 第 2 章 Linux 网络安全运维
- 第 3 章 数据安全工具 DRBD、extundelete
- 第二部分 运维故障排查篇
- 第 4 章 Linux 系统运维故障排查思路
- 第 5 章 Linux 故障排查案例实战
- 第三部分 自动化运维篇
- 第 6 章 轻量级运维利器 pssh、pdsh 和 mussh
- 第 7 章 分布式监控系统 Ganglia
- 第 8 章 基于 nagios 的分布式监控报警平台 Centreon
- 第 9 章 通过 Ganglia 与 Centreon 构建智能化监控报警平台
- 第四部分 集群架构篇
- 第 10 章 高性能 Web 服务器 Nginx
- 第 11 章 高性能集群软件 Keepalived
- 第 12 章 千万级高并发负载均衡软件 HAProxy
- 第 13 章 构建高性能的 MySQL 集群系统
- 第 14 章 高性能负载均衡集群软件 HAProxy
12.1 高性能负载均衡软件 HAProxy 介绍
随着互联网业务的迅猛发展,大型电商平台和门户网站对系统的可用性和可靠性要求越来越高,高可用集群、负载均衡集群成为一种热门的系统架构解决方案。在众多的负载均衡集群解决方案中,有基于硬件的负载均衡设备,例如 F5、Big-IP 等,也有基于软件的负载均衡产品,例如 HAProxy、LVS、Nginx 等。在软件的负载均衡产品中,又分为两种实现方式,分别是基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS 就是基于 Linux 操作系统实现的一种软负载均衡,而 HAProxy 就是基于第三应用实现的软负载均衡。本章将详细介绍 HAProxy 这种基于第三方应用实现的负载均衡技术。
12.1.1 HAProxy 简介
HAProxy 是一个开源的、高性能的、基于 TCP(第四层)和 HTTP(第七层)应用的负载均衡软件,借助 HAProxy 可以快速、可靠地提供基于 TCP 和 HTTP 应用的负载均衡解决方案。HAProxy 作为一个专业的负载均衡软件,它的显著优点如下:
- 可靠性和稳定性非常好,可以与硬件级的 F5 负载均衡设备相媲美。
- 最高可以同时维护 40000~50000 个并发连接,单位时间内处理的最大请求数为 20000 个,最大数据处理能力可达 10Gbps。作为软件级别的负载均衡来说,HAProxy 的性能强大可见一斑。
- 支持多于 8 种负载均衡算法,同时也支持 session 保持。
- 支持虚拟主机功能,这样实现 Web 负载均衡更加灵活。
- 从 HAProxy1.3 版本后开始支持连接拒绝、全透明代理等功能,这些功能是其他负载均衡器所不具备的。
- HAProxy 拥有一个功能强大的服务器状态监控页面,通过此页面可以实时了解系统的运行状况。
- HAProxy 拥有功能强大的 ACL 支持,能给使用带来很大方便。
HAProxy 是借助于操作系统的技术特性来实现性能最大化的,因此,在使用 HAProxy 时,对操作系统进行性能调优是非常重要的。在业务系统方面,HAProxy 非常适用于那些并发量特别大且需要持久连接或四层和七层处理机制的 Web 系统,例如门户网站或电商网站等。另外。HAProxy 也可用于 MySQL 数据库(读操作)的负载均衡。
12.1.2 四层和七层负载均衡的区别
在 12.1 节中提到了 HAProxy 是一个四层和七层负载均衡器。下面简单介绍下四层和七层的概念与区别。
所谓的四层就是 ISO 参考模型中的第四层。四层负载均衡器也称为四层交换机,它主要是通过分析 IP 层及 TCP/UDP 层的流量实现的基于“IP+端口”的负载均衡。常见的基于四层的负载均衡器有 LVS、F5 等。
以常见的 TCP 应用为例,负载均衡器在接收到第一个来自客户端的 SYN 请求时,会通过设定的负载均衡算法选择一台最佳的后端服务器,同时将报文中目标 IP 地址修改为后端服务器 IP,然后直接转发给该后端服务器,这样一个负载均衡请求就完成了。从这个过程来看,一个 TCP 连接是客户端和服务器直接建立的,而负载均衡器只不过完成了一个类似路由器的转发动作。在某些负载均衡策略中,为保证后端服务器返回的报文可以正确传递给负载均衡器,在转发报文的同时可能还会对报文原来的源地址进行修改。整个过程如图 12-1 所示。
图 12-1 四层负载均衡器转发原理
同理,七层负载均衡器也称为七层交换机,位于 ISO 的最高层,即应用层,此时负载均衡器支持多种应用协议,常见的有 HTTP、FTP、SMTP 等。七层负载均衡器可以根据报文内容,再配合负载均衡算法来选择后端服务器,因此也称为“内容交换器”。比如,对于 Web 服务器的负载均衡,七层负载均衡器不但可以根据“IP+端口”的方式进行负载分流,还可以根据网站的 URL、访问域名、浏览器类别、语言等决定负载均衡的策略。例如,有两台 Web 服务器分别对应中英文两个网站,两个域名分别是 A、B,要实现访问 A 域名时进入中文网站,访问 B 域名时进入英文网站,这在四层负载均衡器中几乎是无法实现的,而七层负载均衡器可以根据客户端访问域名的不同选择对应的网页进行负载均衡处理。常见的七层负载均衡器有 HAProxy、Nginx 等。
这里仍以常见的 TCP 应用为例,由于负载均衡器要获取到报文的内容,因此只能先代替后端服务器和客户端建立连接,接着,才能收到客户端发送过来的报文内容,然后再根据该报文中特定字段加上负载均衡器中设置的负载均衡器算法来决定最终选择的内部服务器。纵观整个过程,七层负载均衡器在这种情况下类似于一个代理服务器。整个过程如图 12-2 所示。
图 12-2 七层负载均衡器代理实现原理
对比四层负载均衡器和七层负载均衡器运行的整个过程,可以看出,在七层负载均衡模式下,负载均衡器与客户端及后端的服务器会分别建立一次 TCP 连接,而在四层负载均衡模式下,仅建立一次 TCP 连接。由此可知,七层负载均衡对负载均衡设备的要求更高,而七层负载均衡的处理能力也必然低于四层模式的负载均衡。
12.1.3 HAProxy 与 LVS 的异同
通过上面两小节的介绍,读者应该基本清楚了 HAProxy 负载均衡与 LVS 负载均衡的优缺点和异同了。下面就这两种负载均衡软件的异同做一个简单总结。
1)两者都是软件负载均衡产品,但是 LVS 是基于 Linux 操作系统实现的一种软负载均衡,而 HAProxy 是基于第三应用实现的软负载均衡。
2)LVS 是基于四层的 IP 负载均衡技术,而 HAProxy 是基于四层和七层技术、可提供 TCP 和 HTTP 应用的负载均衡综合解决方案。
3)LVS 工作在 ISO 模型的第四层,因此其状态监测功能单一,而 HAProxy 在状态监测方面功能强大,可支持端口、URL、脚本等多种状态检测方式。
4)虽然 HAProxy 功能强大,但是它的整体处理性能低于四层负载均衡模式的 LVS,而 LVS 拥有接近硬件设备的网络吞吐和连接负载能力。
综上所述,HAProxy 和 LVS 各有优缺点,没有好坏之分,要选择哪个作为负载均衡器,要以实际的应用环境来决定。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论