HAProxy

可靠、高性能的 TCP/HTTP 负载均衡器

  镜像站点:主站
  语言:English

快速链接

最新消息
最新消息
描述
主要特性
支持的平台
性能
可靠性
安全性
他们在用!
企业版功能
第三方扩展
商业支持
附加功能
其他解决方案
讨论
Slack 频道
邮件列表
10GbE 负载均衡
贡献
编码风格
待解决问题
已知缺陷

HATop:Ncurses 界面
Herald:负载反馈代理
haproxystats:统计信息收集
基于 Alpine 的 Docker 镜像
基于 Debian 的 Docker 镜像
基于 RHEL 的 Docker 镜像
Debian/Ubuntu 软件包


位访客在线
 
感谢您的支持!




警告:此处为旧内容

此页面是一个未整理的旧信息和旧链接列表,其中一些可能仍然有效,但绝对已经过时。为了保持主站的整洁,它们已于2021年11月23日从主站移除,并且正在进行手动清理,以便只保留相关和可能有用的内容。您应该不需要此页面上的任何信息。

描述

HAProxy 是一款免费、非常快速且可靠的解决方案,为基于 TCP 和 HTTP 的应用程序提供高可用性负载均衡和代理服务。它特别适用于流量非常高的网站,并为世界上许多访问量最大的网站提供支持。多年来,它已成为事实上的开源负载均衡器标准,现在大多数主流 Linux 发行版都附带它,并且通常默认部署在云平台中。由于它不会自我宣传,我们只有在管理员报告使用情况时才知道它的应用 :-)

它的运行模式使得将其集成到现有架构中变得非常容易且无风险,同时仍然提供了不将脆弱的 Web 服务器暴露在网络中的可能性,如下所示:

我们始终并行支持至少两个活跃版本,以及一个仅处于关键修复模式的旧版本。当前支持的版本是:

  • 2.4 版本:通过 TCP 的 syslog 和 DNS、多线程 Lua、空闲连接完全共享、更低延迟、服务器端动态 SSL 更新、Opentracing、H2 上的 WebSocket、原子 map、Vary 支持、新的调试工具、更友好的 CLI 和配置、大量清理工作
  • 2.3 版本:syslog 转发、更好的空闲连接管理、改进了大队列下的均衡、简化的 SSL 管理、更多统计指标、默认更严格的配置检查、全面的性能改进
  • 2.2 版本:运行时证书添加、改进的空闲连接管理、通过 TCP 记录日志、HTTP "return" 指令、错误文件模板、默认 TLSv1.2、可扩展的健康检查
  • 2.1 版本:改进的 I/O 和多线程、FastCGI、运行时证书更新、仅 HTX、改进的调试、移除了过时的关键字
  • 2.0 版本:gRPC、第 7 层重试、进程管理器、SSL peers、日志负载均衡/采样、端到端 TCP fast-open、自动设置(maxconn、线程、HTTP 复用、连接池)……
  • 1.9 版本:改进的多线程、端到端 HTTP/2、连接池、队列优先级控制、stdout 日志记录……
  • 1.8 版本:多线程、HTTP/2、缓存、动态添加/移除服务器、无缝重载、DNS SRV、硬件 SSL 引擎……
  • 1.7 版本:增加了服务器热重配、内容处理代理、多类型证书……
  • 1.6 版本:增加了 DNS 解析支持、HTTP 连接多路复用、完整的粘性表复制、无状态压缩……
  • 1.5 版本:增加了 SSL、IPv6、keep-alive、DDoS 防护……

主要特性

每个版本都在前一个版本的基础上带来了一系列新功能。向上兼容性是 HAProxy 的一个非常重要的方面,即使是 1.5 版本也能够运行 13 年前为 1.0 版本编写的配置。1.6 版本删除了一些长期弃用的关键字,并建议了替代方案。每个版本最具差异化的功能如下:

  • 1.5 版本,发布于 2014 年。这个版本在 1.4 的基础上,经过 4 年的辛勤工作,进一步扩展了功能:原生 SSL 支持,双向支持 SNI/NPN/ALPN 和 OCSP stapling;IPv6 和 UNIX 套接字在所有地方都得到支持;完整的 HTTP keep-alive,更好地支持 NTLM 并提高了静态资源场的效率;HTTP/1.1 压缩(deflate, gzip)以节省带宽;PROXY 协议版本 1 和 2 的双向支持;对请求或响应中的所有内容(包括负载)进行数据采样ACL 可以对任何输入样本使用任何匹配方法;maps 和动态 ACL 可从 CLI 更新粘性表支持计数器,以跟踪任何输入样本上的活动;自定义格式的日志、unique-id、标头重写和重定向;改进的健康检查(SSL、脚本化 TCP、检查代理……);配置可扩展性大大增强,可轻松支持数十万个后端和证书。
  • 1.4 版本,发布于 2010 年。这个版本在 1.3 的基础上带来了许多期待已久的新功能:客户端 keep-alive,以减少客户端通过网络加载重页面的时间;TCP 加速,帮助 TCP 栈为每个连接节省一些数据包;响应缓冲,进一步减少服务器上的并发连接数;RDP 协议支持,包括服务器粘性和用户过滤;基于源的粘性,将源地址附加到服务器;一个更好的统计界面,报告大量有用信息;更详细的健康检查,在统计和日志中报告精确的状态和响应;基于流量的健康检查,当错误率超过某个阈值时快速将服务器标记为失败;支持对任何请求(包括统计)进行 HTTP 认证,并支持密码加密;从 CLI 进行服务器管理,无需重启 haproxy 即可启用/禁用服务器和更改服务器权重;基于 ACL 的持久性,无论服务器状态如何,都可以根据 ACL 维护或禁用持久性;日志分析器,能以 1 GB/s 的速度解析日志并快速生成报告。
  • 1.3 版本,发布于 2006 年。这个版本在 1.2 的基础上带来了许多新功能和改进,其中包括:内容切换,根据任何请求标准选择服务器池;ACL,用于编写内容切换规则;更广泛的负载均衡算法选择,以实现更好的集成;内容检查,允许阻止意外的协议;在 Linux 下的透明代理,允许使用客户端的 IP 地址直接连接到服务器;内核 TCP splicing,在两端之间转发数据而无需复制,以达到数千兆位的数据速率;分层设计,将套接字、TCP 和 HTTP 处理分离,以实现更稳健、更快的处理和更容易的演进;快速公平的调度器,通过为某些任务分配优先级来实现更好的 QoS;为共存环境提供的会话速率限制,等等……

1.2 版本自 2006 年以来一直在生产环境中使用,并在 1.1 的基础上提供了更高的性能水平。该版本已不再维护,因为其大多数用户早已切换到 1.3。自 2002 年以来一直维持关键站点在线的 1.1 版本也已不再维护。建议用户升级到 1.4 或 1.5。

支持的平台

已知 HAProxy 可在以下操作系统/平台上可靠运行:

在支持可扩展轮询机制的现代操作系统上可获得最高性能,例如 Linux 2.6/3.x 上的 epoll 或 FreeBSD 和 OpenBSD 上的 kqueue。这需要高于 1.2.5 版本的 haproxy。在 Linux 3.x 上使用 TCP splicing 和 haproxy 1.4 或 1.5 可以实现快速数据传输。经过非常仔细的调优,在这样的平台上已经实现了高达 40 Gbps 的转发速率。虽然支持 Solaris 和 AIX,但如果需要极端性能,则不应使用它们。

目前典型的 1U 服务器配备六核到八核处理器,通常能达到 200,000 到 500,000 请求/秒,并且在 Linux 下可以轻松跑满 25 Gbps 以太网。

性能

[ 警告:本节信息可追溯至 2007 年,此后性能已提高一个数量级 ]
[ 关于 2021 年可能达到的性能的最新报告,请参阅
在 AWS ARM 架构的 Graviton2 上进行的这次测试,达到了 200 万请求/秒和 100 Gbps ]

好吧,既然用户的证言胜过长篇大论的演示,请看看 Chris Knight 的经验,他在 2007 年在一个视频下载网站上使用 haproxy 跑满了千兆光纤。从那时起,性能已显著提升,硬件也变得更加强大,正如两年后我使用 Myricom 的 10-Gig 网卡所做的实验所展示的那样。现在到了 2014 年,10-Gig 网卡已经过于受限,并且几乎不适用于 1U 服务器,因为它们很少能提供足够的端口密度以在 1U 服务器中达到 40-60 Gbps 以上的速度。100-Gig 网卡即将问世,我期望在它们可用时进行新一轮的测试。

HAProxy 采用了一些操作系统架构中常见的技术,以实现绝对的最大性能:

  • 单进程、 事件驱动模型显著降低了上下文切换的成本和内存使用量。在一毫秒内处理数百个任务是可能的,每个会话的内存使用量在几千字节的级别,而在 preforked 或 threaded 服务器中,每个进程消耗的内存则在兆字节级别。
  • 在允许的系统上(Linux 和 FreeBSD),使用 O(1) 事件检查器,允许在数万个连接中即时检测到任何连接上的任何事件。
  • 使用惰性事件缓存延迟更新事件检查器,确保我们只在绝对需要时才更新事件。这节省了大量的系统调用。
  • 尽可能在读写之间使用单缓冲,不进行任何数据复制。这节省了大量的 CPU 周期和宝贵的内存带宽。通常,瓶颈会是 CPU 和网络接口之间的 I/O 总线。在 10-100 Gbps 的速度下,内存带宽也可能成为瓶颈。
  • 零拷贝转发可以通过使用splice()在 Linux 系统下实现系统调用,并从 Linux 3.5 开始实现真正的零拷贝。这使得一个功耗低于 3 瓦的小型设备,如 Seagate Dockstar,能够以每秒一千兆位的速度转发 HTTP 流量。
  • 使用固定大小的内存池MRU内存分配器,用于即时内存分配,优先使用热缓存区域而非冷缓存区域。这大大减少了创建新会话所需的时间。
  • 工作分解,例如一次进行多个 accept(),以及在多进程模式下运行时限制每次迭代的 accept() 次数的能力,从而使负载在进程之间均匀分布。
  • 在多进程模式下运行时支持CPU亲和性,或者简单地为了适应硬件并尽可能地靠近管理网卡的CPU核心,同时不与之冲突。
  • 基于树的存储,大量使用我多年来一直在开发的弹性二叉树。这用于保持定时器有序,保持运行队列有序,管理轮询和最少连接队列,查找 ACL 或表中的键,成本仅为 O(log(N))。
  • 优化的定时器队列:如果定时器被推迟,它们不会在树中移动,因为它们被满足的可能性接近于零,因为它们主要用于超时处理。这进一步优化了 ebtree 的使用。
  • 优化的HTTP头部分析:头部是即时解析和解释的,解析过程经过优化,以避免重新读取任何先前已读的内存区域。当缓冲区末端遇到不完整的头部时,会使用检查点,这样在读取更多数据时,解析就不会从头开始。在一个快速的 Xeon E5 上,解析一个平均的 HTTP 请求通常需要半微秒。
  • 精心减少昂贵的系统调用数量。默认情况下,大部分工作都在用户空间完成,例如时间读取、缓冲区聚合、文件描述符的启用/禁用。
  • 内容分析经过优化,只携带指向原始数据的指针,除非数据需要转换,否则绝不复制。这确保了只携带非常小的数据结构,并且在非绝对必要时绝不复制内容。

所有这些微观优化使得即使在中等负载下,CPU 使用率也非常低。即使在非常高的负载下,当 CPU 饱和时,也很常见到像 5% 用户95% 系统这样的数据,这意味着 HAProxy 进程的消耗大约是其系统对应部分的 20 倍。这解释了为什么操作系统的调优非常重要。这也是为什么我们最终会构建我们自己的设备,以避免最终用户执行这项复杂而关键的任务。

在生产环境中,当非常昂贵的高端硬件负载均衡器在第 7 层处理上突然失效时,HAProxy 已多次被安装为应急解决方案。一些硬件负载均衡器仍然不使用代理,并在数据包层面处理请求,因此在支持跨多个数据包的请求高响应时间方面有很大困难,因为它们根本不做任何缓冲。另一方面,软件负载均衡器使用TCP 缓冲,对长请求和高响应时间不敏感。HTTP 缓冲的一个很好的副作用是它通过减少会话持续时间来增加服务器的连接接受能力,从而为新请求留出空间

衡量负载均衡器性能有3个重要因素:

  • 会话速率
    这个因素非常重要,因为它直接决定了负载均衡器何时无法分发其接收到的所有请求。它主要取决于CPU。有时,您会听到请求数/秒或点击数/秒,它们在HTTP/1.0HTTP/1.1keep-alive 禁用时)中与会话数/秒是相同的。启用 keep-alive 时的请求数/秒通常要高得多(因为它显著减少了系统端的工作),但对于面向互联网的部署通常意义不大,因为客户端通常会打开大量的连接,并且平均每个连接发送的请求不多。这个因素是通过不同大小的对象来测量的,最快的结果通常来自空对象(例如HTTP 302, 304404响应码)。2014 年在 Xeon E5 系统上可以实现大约每秒 100,000 个会话的会话速率。
  • 会话并发数
    这个因素与前一个因素相关。通常,当并发会话数增加时,会话速率会下降(除了使用epollkqueue轮询机制)。服务器越慢,相同会话速率下的并发会话数就越高。如果一个负载均衡器每秒接收10000个会话,而服务器在100毫秒内响应,那么负载均衡器将有1000个并发会话。这个数字受到系统可以处理的内存量和文件描述符数量的限制。使用16KB的缓冲区,HAProxy每个会话大约需要34KB,这相当于每GB内存约30000个会话。实际上,系统中的套接字缓冲区也需要一些内存,每GB内存20000个会话更合理。第4层负载均衡器通常宣称支持数百万个并发会话,因为它们需要处理系统为代理免费处理的TIME_WAIT套接字。而且它们不处理任何数据,所以不需要任何缓冲区。此外,它们有时被设计为在直接服务器返回模式下使用,在这种模式下,负载均衡器只看到转发流量,这迫使它在会话结束后很长一段时间内保持会话,以避免在会话关闭前切断会话。
  • 数据转发速率
    这个因素通常与会话速率成反比。它以兆字节/秒(MB/s)或有时以千兆比特/秒(Gbps)来衡量。最高的数据速率是通过大对象实现的,以最小化由会话建立和拆除引起的开销。大对象通常会增加会话并发数,而高会话并发数和高数据速率需要大量的内存来支持大窗口。高数据速率会消耗大量的CPU和总线周期在软件负载均衡器上,因为数据必须从输入接口复制到内存,然后再复制回输出设备。硬件负载均衡器倾向于直接将数据包从输入端口切换到输出端口以获得更高的数据速率,但无法处理它们,有时无法触及头部或cookie。在2014年典型的Xeon E5上,Haproxy的数据转发速率可达约40 Gbps。一个无风扇的1.6 GHz Atom CPU略高于1 Gbps。

负载均衡器与这些因素相关的性能通常是在最佳情况下公布的(例如:会话速率对应空对象,数据速率对应大对象)。这并非因为供应商不诚实,而是因为不可能确切地说明它在每种组合下的行为。因此,当这3个限制已知时,客户应该意识到它的性能通常会低于所有这些限制。对于软件负载均衡器,一个好的经验法则是,对于中等大小的对象,其实际平均性能约为最大会话和数据速率的一半

您可能有兴趣查看 10-Gigabit/s 页面

可靠性 - 自 2002 年以来一直保持高流量网站在线

出于对可靠性的执着,我尽力通过设计来确保服务的完全连续性。在短期内,设计一个可靠的东西更困难,但从长远来看,它比那些试图通过重生进程和类似技巧来掩盖自身错误的破损代码更容易维护。

单进程程序中,你没有失败的权利:最小的错误要么会使你的程序崩溃,要么使其疯狂旋转或冻结。在过去的 13 年里,稳定版本中没有发现过这样的错误,尽管在生产环境中运行的开发代码中发生过几次。

HAProxy 已经安装在 Linux 2.4 系统上,每天提供数百万页面的服务,并且在 3 年内仅因一次完整的操作系统升级而重启过一次。显然,它们没有直接暴露在互联网上,因为它们根本没有收到任何补丁。内核是经过大量修补的 2.4 版本,带有 Robert Love 的jiffies64补丁,以支持 497 天的时间回绕(这发生了两次)。在这样的系统上,软件一旦失败就会立即被发现!

现在,它被全球许多财富500强公司使用,可靠地每天提供数十亿的页面服务或中继巨额资金。有些人甚至非常信任它,以至于他们将其用作解决简单问题的默认方案(我经常告诉他们这样做的方式很粗糙)。这些人有时仍然使用 1.1 或 1.2 版本,这些版本的演进非常有限,主要针对关键任务应用。HAProxy 非常适合这样的环境,因为它返回的指标提供了大量关于应用程序健康状况、行为和缺陷的宝贵信息,这些信息被用来使其更加可靠。1.3 版本现在已经接受了比 1.1 和 1.2 加起来多得多的测试,因此强烈建议用户迁移到稳定的 1.3 或 1.4 版本以用于关键任务。

如前所述,大部分工作由操作系统执行。因此,很大一部分的可靠性都涉及到操作系统本身。最新版本的Linux 2.4以提供有史以来最高水平的稳定性而闻名。然而,它需要一系列补丁才能达到高性能水平,而且这个内核现在确实过时了,所以在最近的硬件上运行它通常会很困难(尽管有些人仍然这样做)。Linux 2.6和3.x包含了达到这种性能水平所需的功能,但对于真正稳定的操作,只应考虑旧的LTS版本,每年升级不超过一次。有些人更喜欢在Solaris上运行它(或者没有选择)。Solaris 8和9现在被认为是真正稳定的,提供的性能水平可与旧的Linux 2.4(没有epoll补丁)相媲美。Solaris 10的性能可能更接近早期的Linux 2.6。FreeBSD表现出良好的性能,但pf(防火墙)吃掉了一半的性能,需要禁用才能接近Linux。OpenBSD有时会因为套接字停留在FIN_WAIT2状态而显示套接字分配失败,当客户端突然消失时。另外,我注意到热重配在OpenBSD下不起作用。

当系统被推到极限时,可靠性会显著下降。这就是为什么精细调整sysctls非常重要。没有通用的规则,每个系统和每个应用程序都是特定的。然而,重要的是要确保系统永远不会耗尽内存,并且永远不会交换。一个正确调优的系统必须能够在满负荷下运行多年而不会变慢或崩溃。

安全性 - 13 年来无一例入侵

在部署软件负载均衡器时,安全性是一个重要的考虑因素。可以加固操作系统,限制开放端口和可访问服务的数量,但负载均衡器本身仍然是暴露的。因此,我对编程风格非常小心。haproxy 很少遇到漏洞,其架构显著限制了漏洞的影响,并通常允许简单的变通方法。其远程不可预测的事件处理使得可靠地利用任何漏洞变得非常困难,而且如果进程崩溃,漏洞就会被发现。顺便说一下,所有这些漏洞都是通过对意外崩溃的反向分析发现的。

无论如何,在编写操作标头的代码时都非常小心。不可能的状态组合会被检查并返回,错误从会话创建到销毁都会被处理。全球有几个人审查了代码,并提出了清理建议以提高清晰度,便于审计。顺便说一句,我习惯于拒绝那些引入可疑处理或对异常情况不够注意的补丁。

我通常建议以root身份启动 HAProxy,因为这样它就可以将自己关在chroot jail 中,并在启动实例之前放弃其所有权限。如果不是以root身份启动,这是不可能的,因为只有rootroot

才能执行chroot(),这与一些管理员的看法相反。日志提供了大量信息来帮助维持令人满意的安全级别。它们通常通过UDP发送,因为一旦 chroot,/dev/log

  • UNIX 套接字就无法访问了,而且必须不能向文件写入。以下信息特别有用:
  • 源 IP 和端口请求者的信息使得在防火墙日志中找到其来源成为可能;
  • 会话建立日期通常与防火墙日志匹配,而拆除日期通常与代理日期匹配;
  • 正确的请求编码确保请求者无法隐藏不可打印的字符,也不会欺骗终端。
  • 任意请求和响应的标头和 cookie 捕获有助于检测扫描攻击、代理和受感染的主机。

计时器有助于区分手动输入的请求和浏览器的请求。

HAProxy 还提供基于正则表达式的标头控制。请求的部分内容,以及请求和响应的标头可以被拒绝允许移除重写添加。这通常用于阻止危险的请求或编码(例如,Apache Chunk 漏洞),并防止服务器意外地向客户端泄露信息。其他功能,如Cache-control 检查,确保敏感信息不会因为应用服务器的错误而被上游代理意外缓存。

商业支持和可用性

  1. 如果您认为自己没有足够的时间和技能来设置和维护一个免费的负载均衡器,或者您正在寻求商业支持以满足您的客户或老板,您有以下选择:
  2. 联系HAProxy Technologies 聘请专业服务或签订支持合同;
  3. 安装 HAProxy Enterprise Edition (HAPEE),这是一个长期维护的 HAProxy 软件包,附带一套精心打磨的软件、脚本、配置文件和文档,极大地简化了完整运营解决方案的设置和维护;它特别适合需要快速部署的云环境
尝试 ALOHA 设备(硬件或虚拟),这甚至可以使您不必担心系统、硬件和管理类 Unix 系统。

我还认为有必要感谢Loadbalancer.org。我与他们没有任何关联,但像我们一样,他们为该项目贡献了相当多的时间和金钱来增加新功能,并且他们在邮件列表上帮助用户,所以我对他们的工作表示尊重。他们是一家英国公司,他们的负载均衡器也使用 HAProxy,尽管它与 ALOHA 有些不同。

附加功能和贡献

一些满意的用户贡献了代码,这些代码可能被包含也可能不被包含。其他人花了很长时间分析代码,还有一些人维护着最新的端口。最困难的内部更改是由一些大客户以付费时间的形式贡献的,他们有能力支付一名开发人员数月的时间来从事一个开源项目。不幸的是,其中一些客户不希望被列出,其中最大的客户就是这种情况。

此表列举了导致 1.4 版本的所有已知重要贡献,以及提议的资金和有待开发但仍在等待空闲时间的功能。不过,它没有更新。

一些可能未出现在上表中的较早的代码贡献仍在此处列出。

  • 应用程序 Cookies

    Aleksandar Lazic 和 Klaus Wagner 实现了这个功能,并已合并到 1.2 版本中。它允许代理学习服务器发送给客户端的 cookie,并在 URL 中找到它,以将客户端定向到正确的服务器。学习到的 cookie 在一段时间不活动后会自动清除。

  • 最少连接数负载均衡算法

    这个针对 haproxy-1.2.14 的补丁由 Oleksandr Krailo 提交。它实现了一个基本的最小连接算法。由于可伸缩性方面的考虑,我没有将这个版本合并到 1.3 中,但我把它留在这里,供那些想把它包含到 1.2 版本中的人使用,而且这个补丁非常干净。

  • 服务器软停止

    Aleksandar Lazic 给我发了这个针对 1.1.28 的补丁,它实际上做了两件事。第一个有趣的部分允许人们编写一个文件,列出需要停止的服务器,然后向正在运行的代理发送一个信号,告诉它重新读取文件并停止使用这些服务器。这不会被合并到主线中,因为它对安全性有间接影响,因为正在运行的进程将需要访问文件系统上的一个文件,而当前版本可以在一个 chroot 的、空的、只读的目录中运行。真正需要的是一种向正在运行的进程发送命令的方法。然而,我理解有些人可能需要这个功能,所以在这里提供它。补丁的第二部分已经被合并。它允许一个活动服务器和一个备用服务器共享同一个 cookie。这听起来可能很明显,但之前是不可能的。

    用法: Aleks 说你只需要将想要停止的服务器名称写入文件,然后kill -USR2给正在运行的进程。不过我没有测试过。

  • 服务器权重

    Sébastien Brize 给我发了这个针对 1.1.27 的补丁,它为服务器添加了 'weight' 选项,以便在快速和慢速服务器之间提供更平滑的负载均衡。它在这里提供,因为可能还有其他人在 1.1 版本中寻找这个功能。

    我没有包含这个更改,因为它有一个副作用,即在高权重或不相等的权重下,一些服务器可能会收到大量连续的请求。在 1.2.12 中实现了一个不同的概念来提供平滑和公平的负载均衡,它也支持加权哈希负载均衡。

    用法: 在服务器行上指定“weight X”。
    注意: 应用此补丁编写的配置通常仍可在未来的 1.2 版本中使用。

  • 1.1.27 的 IPv6 支持

    我为 1.1.27 实现了客户端的 IPv6 支持,并将其合并到了 haproxy-1.2 中。无论如何,这个补丁仍然在这里提供,供那些想在 HAProxy-1.1 上实验 IPv6 的人使用。

  • 其他补丁

    浏览目录以获取其他有用的贡献。

其他解决方案

如果您不需要 HAProxy 的所有功能,并且正在寻找一个更简单的解决方案,您可能会在这里找到您需要的东西:

  • Linux 虚拟服务器 (LVS)
    非常快速的第 3/4 层负载均衡,已合并到 Linux 2.4 和 2.6 内核中。应与 Keepalived 结合使用以监控服务器。这通常是大多数基于 IP 的负载均衡器默认嵌入的解决方案。
  • Nginx ("engine X")
    Nginx 是一款优秀的软件。最初它是一个非常快速和可靠的 Web 服务器,但它已经发展成为一个功能齐全的代理,也可以提供负载均衡功能。Nginx 的负载均衡功能不如 haproxy 先进,但它可以做一些额外的事情(例如:缓存、运行 FCGI 应用程序),这解释了为什么它们通常会一起使用。我强烈推荐给任何需要快速、可靠和灵活的 Web 服务器的人!
  • Pound
    Pound 非常小且相当不错。它的目标是保持小巧和可审计,而非追求速度。它在 HAProxy 之前就支持 SSL 和 keep-alive。它的配置文件小而简单。它是基于线程的,但对于小型网站来说,当不需要 HAProxy 的灵活性和性能时,它可以是一个更简单的替代方案。
  • Pen
    Pen 是一款非常简单的 TCP 协议负载均衡器。它支持基于源 IP 的持久性,最多支持 2048 个客户端。支持基于 IP 的 ACL。使用select()并支持比 Pound 更高的负载,但对于数千个并发连接的扩展性不佳。然而,它更通用,可以被认为是 HAProxy 和 socat 之间缺失的一环。