负载均衡通过透明地将代理服务器和应用程序服务器进行集群来提高 Web 站点的可用性和可伸缩性。IT 基础结构的可伸缩性将因为后端处理能力可以透明地增加而得到极大地提高。
可以通过在多个主机上复制内容来满足高需求,但然后需要一种方法在这些主机之间均衡分配负载。域名服务 (DNS) 可以提供基本的循环法负载均衡,但有几种情况它的性能不是太好。
对多个内容主机执行负载均衡的更完善的解决方案是使用负载均衡器的分派器组件,如图 5 中所述。在此配置中,所有内容主机(标记为 5 的机器)都存储相同的内容。将定义它们来形成一个已进行负载均衡的集群,负载均衡器机器(标记为 4)的某个网络接口将分配一个专用于集群的主机名和 IP 地址。当使用标记为 1 的某台机器的最终用户请求文件 X 时,此请求将经过因特网 (2) 并通过企业的内部网关 (3) 进入企业的内部网络。因为此请求的 URL 将映射到分派器的主机名和 IP 地址,所以分派器将截取此请求。分派器确定集群中的哪个内容主机当前最适合于为此请求提供服务,然后将请求转发到该主机,如果配置 MAC 转发方法,那么该主机将文件 X 直接返回给客户机(即文件 X 不会经过负载均衡器)。
缺省情况下,分派器使用类似于 DNS 的循环法负载均衡,但即使是这样,它也克服了 DNS 的许多不足之处。与 DNS 不同,它跟踪内容主机是否不可用或不可访问,并且不会继续将客户机定向至不可用的内容主机。此外,它通过跟踪新连接、活动连接和已完成的连接来考虑内容主机上的当前负载。您可以通过激活负载均衡器的可选顾问程序和管理器组件进一步优化负载均衡,这些组件甚至更精确地跟踪内容主机的状态并将其他信息合并到负载均衡决策过程中。管理器使您能够将不同权重分配给决策过程中使用的不同因子,从而进一步定制站点的负载均衡。
负载均衡器的分派器还可以对多台高速缓存代理机器执行负载均衡。如果企业的 Web 站点受欢迎,那么对其内容的需求就不是单个代理服务器能够有效满足的,这可能会降低代理服务器的性能。
可以让多个 高速缓存代理 系统为单个内容主机执行代理功能(类似于 图 1 中所描绘的配置),但如果站点足够受欢迎而需要多个 代理服务器,那么可能还需要其负载由 负载均衡器 执行均衡的多台内容主机。图 6 描绘了此配置。标记为 4 的分派器对由两个代理服务器 (5) 组成的集群执行负载均衡,标记为 7 的分派器对由三台内容主机 (8) 组成的集群执行负载均衡。
标记为 4 的分派器的集群主机名是企业的 Web 内容的 URL 中显示的主机名(即,它是 Web 站点在因特网上可视的名称)。标记为 7 的分派器的集群主机名在因特网上不可视,所以它可以是您期望的任何值。例如,对于 ABC 公司,标记为 4 的分派器的合适主机名是 www.abc.com,而标记为 7 的分派器可以使用诸如 http-balancer.abc.com 之类的名称。
假定标记为 1 的某个客户机上的浏览器需要访问标记为 8 的内容服务器上存储的文件 X。该 HTTP 请求将经过因特网 (2) 并从网关 (3) 进入企业的内部网络。路由器将此请求定向至标记为 4 的分派器,该分派器将此请求传递到代理服务器 (5),根据负载均衡算法,该代理服务器当前最适合于处理此请求。如果代理服务器的高速缓存 (6) 中具有文件 X,那么它绕过标记为 4 的分派器将该文件直接返回给浏览器。
如果代理服务器的高速缓存中没有文件 X 的副本,那么它会在头的起源字段中创建一个具有其自己的主机名的新请求并将此请求发送到标记为 7 的分派器。负载均衡器确定哪个内容主机 (8) 当前最能够满足此请求并将此请求定向至该主机。该内容主机从存储器中检索文件 X 并绕过标记为 7 的分派器将该文件直接返回给代理服务器。代理服务器在合适时将文件 X 进行高速缓存,然后绕过标记为 4 的分派器将该文件转发至浏览器。
如果您为大量的客户机提供了因特网访问权,那么它们产生的对因特网访问权的需求就不是单个代理可以有效满足的。当高速缓存代理由于请求而超负荷时,客户机可能经历比直接因特网访问更长的响应时间。如果高速缓存代理发生故障或由于网络故障而变得无法访问,那么将无法访问因特网。解决方案是安装多台高速缓存代理机器并使用负载均衡器的分派器在这些机器之间均衡分配负载。
如果不使用分派器,那么仅当路由器可以将同一类型的流量路由至多个高速缓存代理时,您才能提供具有多台高速缓存代理机器的真正透明的代理;并非所有路由器都支持此功能。在不使用分派器的情况下,可以在多台高速缓存代理机器上提供常规正向代理服务,但必须显式地配置客户机浏览器以将其中一台高速缓存代理机器用作主代理。如果该高速缓存代理发生故障、超负荷或无法访问,那么最终用户将无法访问因特网。要避免该情况,可以创建一个代理自动配置 (PAC) 文件(如透明正向高速缓存代理(仅限于 Linux 系统)中所述),该文件指导浏览器故障转移到一个或多个辅助高速缓存代理。PAC 文件不会消除在高速缓存代理机器之间均衡分配负载的需要;然而,如果一个高速缓存代理接收到多于另一个高速缓存代理的请求,那么其性能可能会下降,从而使其浏览器客户机经历更长的响应时间。要使所有客户机都具有类似的性能,必须配置数目大约相等的浏览器来使用每个高速缓存代理,并手动跟踪分布情况,以便可以在添加或除去浏览器时保持负载均等。
图 7 描绘了一个网络配置,其中分派器对高速缓存代理机器集群执行负载均衡。分派器机器的某个网络接口将配置为具有集群的专用主机名和 IP 地址。客户机浏览器将配置为将因特网请求定向至集群主机名。例如,当标识为 1 的某个客户机上的浏览器需要访问内容主机 (7) 上的文件 X 时,它将其请求定向至集群主机名或地址,分派器 (2) 在那里截取此请求并将其定向至适当的高速缓存代理 (3)。该高速缓存代理创建一个新请求、通过企业的网关 (5) 在因特网 (6) 上传递此请求并在合适时将返回的文件存储在其高速缓存 (4) 中,正向高速缓存代理中进行了更详细的描述。
当某台高速缓存代理机器不可用时,分派器会检测得到并自动将请求路由至其他机器。这使您能够在不中断因特网访问的情况下关闭某个高速缓存代理进行维护。分派器具有许多配置选项,您可以使用这些选项来控制它在作出负载均衡决策时将考虑的因素。还可以在高速缓存代理机器上安装辅助的分派器程序来监视这些机器的状态并将信息返回给分派器。有关详细信息,请参阅《WebSphere® Application Server 负载均衡器管理指南》。因为在不同客户机通过不同高速缓存代理机器请求同一文件时,多个高速缓存代理都可以高速缓存该文件,所以使用多个高速缓存代理可能导致效率降低。要消除该冗余性,可以配置远程高速缓存访问 (RCA),它允许所定义的组中所有代理互相共享其高速缓存的内容。RCA 组中的代理都使用相同的算法来确定哪个高速缓存代理负责给定的 URL。当高速缓存代理截取了它不负责的 URL 时,它会将此请求传递到负责的高速缓存代理。负责的高速缓存代理执行满足此请求所需要的工作,从其高速缓存中检索此请求或将此请求转发到相关的内容主机并在合适时将返回的文件进行高速缓存。然后,负责的高速缓存代理将该文件传递到原始高速缓存代理,后者将该文件传递给发出请求的最终用户。
在 RCA 组中,如果负责给定 URL 的高速缓存代理发生故障,那么接收到客户机请求的原始高速缓存代理将直接访问内容主机(或者,如果定义了备份高速缓存代理服务器,那么将访问该服务器)。此意味着只要 RCA 组中至少有一个高速缓存代理可以正常运行,那么用户就可以访问文件。
此配置通过使用分派器在多台高速缓存代理机器上均衡分配请求负载来满足对因特网访问的高需求。一个潜在问题是分派器为单一故障点。如果它发生故障或由于网络故障而变得无法访问,那么浏览器客户机无法访问高速缓存代理或因特网。解决方案是将另一个分派器配置为主分派器的备份,图 8 中对此进行了描绘。
其中,在标记为 1 的某台机器上运行的浏览器通常将对文件 X 的请求定向至主分派器 (2),该分派器将此请求路由至根据分派器的负载均衡条件选择的高速缓存代理 (4)。该高速缓存代理创建一个新请求、通过企业的网关 (6) 在因特网 (7) 上将此请求路由至内容主机 (8) 并在合适时将返回的文件 X 存储在其高速缓存 (5) 中(有关此部分过程的更详细的描述,请参阅正向高速缓存代理)。
在此配置中,只要主分派器可以运行,备份分派器 (3) 就不会执行负载均衡。主分派器和备份分派器通过定期交换称为脉动信号的消息来跟踪彼此的状态。如果备份分派器检测到主分派器发生故障,那么它通过截取定向至主分派器的主机名和 IP 地址的请求,自动接管执行负载均衡的职责。还可以配置两个分派器以提高相互之间的高可用性。在这种情况下,每个分派器主动地对不同的高速缓存代理集群执行负载均衡,同时还充当其伙伴的备份。更多相关的论述,请参阅《WebSphere Application Server 负载均衡器管理指南》。
分派器通常不会消耗许多处理资源或内存资源,所以其他应用程序可以在分派器机器上运行。如果重点是使设备成本最小,那么甚至可以在高速缓存代理所在的机器上运行备份分派器。图 9 描绘了这样一个配置,其中,备份分派器在高速缓存代理所在的机器 (3) 上运行。