Coyote Point Equalizer
鉴于 Linux 在许多 ISP 中的普及,Linux 系统管理员有必要了解负载均衡,因为大多数 ISP 使用负载均衡器来增加他们为客户提供的 Web 服务器的可扩展性和容错能力。负载均衡器是用于将来自 Internet 的客户端请求分配到服务器虚拟集群(通常称为 Web 服务器群)的设备。通过虚拟集群,可以处理比单个服务器更多的请求,并且集群中的任何服务器都可能发生故障而不会中断服务,因为负载均衡器将简单地绕过禁用的服务器,而集群中的其他服务器将继续运行。
负载均衡器创建一个虚拟 IP 地址。例如,如果 DNS 为 www.foo.com 解析的地址是 192.72.166.240,则该地址实际上是负载均衡器。因此,发送到 www.foo.com 的任何流量实际上都定向到负载均衡器,然后负载均衡器将请求定向到 Web 服务器群中的一台服务器。在典型场景中,负载均衡器连接到两个网络。一个以太网端口被赋予网站的 IP 地址,另一个端口连接到实际服务器连接的网络。
正如多个 Web 服务器可以驻留在单个物理服务器上一样,负载均衡器可以在同一组服务器上创建许多虚拟集群,每个集群具有不同的虚拟 IP 地址,但将请求定向到相同的服务器。这使 ISP 能够在 Web 服务器群中将内容复制到尽可能多的服务器,以便一个 URL 可能分布在十个服务器上,而由同一负载均衡器服务的另一个 URL 将仅驻留在十个服务器中的三个上。
负载均衡器使用不同的算法在 Web 服务器群中的服务器之间分配负载。最早的版本使用轮询方法,简单地轮流浏览服务器列表,将每个后续请求发送到列表中的下一个服务器。很快变得明显的问题是,不同的请求可能会在服务器上产生截然不同的负载——运行 CGI 脚本比下载图形占用更多的服务器处理能力,尽管图形可能会占用更多的网络带宽。较新的算法尝试通过将下一个请求发送到响应速度最快或连接用户数最少的服务器来解决此问题。
负载均衡器有几种类型:交换机、纯软件产品和设备。负载均衡交换机在物理上与通常的 10/100/1000 以太网交换机相同,但增加了负载均衡功能。纯软件产品需要一台具有两个以太网接口的 PC,并且通常需要相当多的专业知识才能设置。设备通常基于运行 UNIX(通常是 FreeBSD)的机架式、基于 Intel 的 PC,预配置为运行负载均衡应用程序。
Coyote Point Equalizer E350 是负载均衡设备的一个很好的例子:一个 2U (3.5 英寸) 机架式工业 PC 机箱,配备 Pentium III 处理器、64MB RAM 和两个 10/100 以太网接口。它具有可移动硬盘驱动器,这允许进行升级或维修,而无需更换整个单元。到本文发表时,E350 将已从 2U 机箱更改为 1U (1.75 英寸) 机箱。
E350 可以通过带有 ssh 的 Telnet 会话或通过 Web 浏览器进行管理。浏览器必须支持 JavaScript。在设备可以管理之前,必须完成初始设置,以便为 E350 提供主机名、IP 地址、两个以太网接口的子网掩码和外部接口的默认路由器,以及 DNS 服务器的 IP 地址、时间和日期以及管理员界面的密码。
Equalizer 可以由 Coyote Point 预先配置,无需任何费用;客户填写一份一页的表格,Equalizer 到达时已设置好所有基本内容,从而无需通过串行终端进行初始设置。由于这台设备订购时未预设配置,我设置了串行连接并输入了基本配置信息,然后从浏览器登录到该设备以设置虚拟集群。初始配置和集群设置都很顺利。
管理界面简单明了。虽然某些网络设备似乎被设计为仅通过命令行界面进行管理,而浏览器界面是事后才想到的,但 Equalizer 的浏览器界面是一个强大的应用程序,显然被设计为易于使用。它具有强大的报告工具,可图形化显示集群和单个服务器上的负载。它允许历史分析,因此管理员可以在负载变得过高之前查看趋势并采取行动。管理员可以设置触发器,这些触发器将运行脚本或发送电子邮件,例如,如果站点或服务器发生故障,则会提醒管理员。
文档编写清晰,在一本印刷手册中。这在 Linux 商店中是一个特殊的优势,因为一些竞争产品仅在 CD 和 PDF 格式中提供文档,这可能难以阅读。
我设置了一个包含三台服务器的单个集群。E350 允许管理员从多种不同的负载均衡算法中进行选择:最快服务器响应时间、最少请求数、静态加权分配值、轮询或使用可选服务器代理测量的实际服务器负载。Coyote Point 提供用于编写服务器代理的示例 C 代码,但不包含代理。
我尝试了所有算法,使用 RadView Software 的 WebLoad 生成针对虚拟集群的流量。所有算法都有效,在服务器之间提供了良好的负载分配。Equalizer 还能够立即检测到故障服务器,基于 ping 失败或 Web 服务器未能返回对内容验证的正确响应。Equalizer 允许您检查特定的 URL 并验证返回字符串,以确保内容在服务器上可用,而不是仅仅依赖服务器响应 ping 或 TCP 端口检查,即使 Web 服务器已挂起,也可能返回一个值。
E350 还提供地理负载均衡选项,我没有测试。这个 2,995 美元的选项允许跨多个站点进行负载均衡,以便可以将用户定向到将提供最佳性能的站点(不一定是物理上最近的站点)。
一旦用户被定向到特定服务器,有时希望确保他们在整个会话期间都留在该服务器上。例如,在电子商务会话期间,用户应保持连接到同一服务器,因为另一台服务器将没有该用户的购物车信息。通常,会话期间的每个请求都定向到负载最少的服务器,这可能会在会话期间发生变化。解决此问题的方法是通过以某种方式识别用户来使会话“粘性”,以便来自该客户端的所有请求都可以发送到单个服务器。
在这方面,Equalizer 比其他设备稍微简单一些:它仅基于 IP 源地址提供粘性会话,并且不支持基于 cookie、URL 或安全套接字层 (SSL) 会话 ID 的持久性。随着大量用户通过 AOL 进入,这可能会在会话期间多次更改用户的 IP 地址,以及大多数企业互联网网关中网络地址转换 (NAT) 的日益普及,这对于某些用户来说可能是一个问题。
技术支持包括工作时间内的免费电话和电子邮件支持,以及可选的 24/7 电话和电子邮件支持以及现场硬件维修。
Equalizer 有三种型号可供选择:E250、E350 和 E450,以及包含两个具有故障转移功能的控制器的冗余版本。这些型号支持的服务器和集群数量各不相同:E250 支持 64 个虚拟集群,每个集群最多包含八个服务器,最多支持 64,000 个并发连接,目标是具有 T-1 访问权限的站点;E350 支持无限数量的 16 服务器集群,最多支持 200 万个并发连接,目标是具有 T-3 连接的站点;E450 支持无限数量的 64 服务器集群,最多支持 400 万个并发连接,目标是具有高达 100Mbps 连接的站点。
虽然大多数负载均衡器用于创建 Web 服务器群,但它们也可以用于扩展或为其他类型的服务器提供冗余。Equalizer 支持 UDP 负载均衡,它支持 UDP 协议,例如 DNS、Radius 和 WAP,以及网络附加存储设备。
