运行Windows 2000的单一计算机可以提供有限级别的服务器可靠性和可伸缩性。但是,通过将两个或两个以上运行Windows 2000 高级服务器的主机连成群集,网络负载均衡就能够提供关键任务服务器所需的可靠性和性能。
每个主机运行一个所需服务器程序的独立拷贝,诸如Web、FTP、Telnet或e-mail服务器程序。对于某些服务(如运行在Web服务器上的那些服务)而言,程序的一个拷贝运行在群集内所有的主机上,而网络负载均衡则将工作负载在这些主机间进行分配。对于其他服务(例如e-mail)只有一台主机处理工作负载,针对这些服务,网络负载均衡允许网络通讯量流到一个主机上,并在该主机发生故障时将通讯量移至其它主机。
网络负载均衡配置概述
网络负载均衡是Windows 2000的一个网络驱动程序。它的操作对TCP/IP网络栈而言是透明的。
为确保网络性能达到最优,网络负载均衡通常使用一个网络适配器来处理客户到群集的通讯量,而其它对服务器的网络通讯量则经由一个单独网络适配器。然而,第二个网络适配器是不需要的。
来自负载均衡服务器应用的数据库访问
某些服务器程序需要访问由客户请求来更新的数据库。当这些程序的负载在群集内得到均衡分配时,相关的更新工作则应保持同步状态。每个主机均使用一个本地、独立的数据库拷贝,而该数据库在必要时可脱机并入。另一种方法是,群集主机能够共享对一个独立的网络数据库服务器的访问。也可以组合使用这些方法。例如,静态Web网页能够在全部群集服务器间进行复制,以确保快速访问和全面容错。但是,数据库访问请求将转发至为多个Web服务器进行更新处理的公共数据库服务器。
某些关键任务程序可能需要使用高度可用的数据库引擎以确保全面容错。逐渐地,具有群集识别能力的数据库软件将得到部署,用以在整个群集模式中提供具有高度可用性与可伸缩性的数据库访问。Microsoft SQL Server就是一个例子,它能够使用群集服务功能以双节点方式进行部署。群集服务可确保在一个节点发生故障的情况下,剩余的节点将承担起故障电脑的职责,这样,就能够为Microsoft SQL Server 客户提供近乎连续的服务。由于两台电脑共享一个公共磁盘子系统,则上述功能是可以实现的。
通过讨论在以下两个群集解决方案之间进行比选是十分重要的。第一方案,网络负载均衡主要是分配引入的传输控制协议/网际协议(TCP/IP)通讯量;加入这一解决方案的计算机形成一种群集。第二方案,群集服务主要是提供从一台计算机到另一计算机的故障应急服务;加入这一解决方案的计算机形成另一种群集。网络负载均衡群集通常运行Web服务器程序。群集服务通常运行数据库程序(当与网络负载均衡联合使用时)。通过将两个群集连接在一起以互补方式发挥作用,用户创建了全面群集解决方案。
网络负载均衡如何工作
网络负载均衡为共同工作且使用两个或两个以上主机群集的Web服务器提供了高度可用性和可伸缩性。因特网客户使用单一的IP地址(或一个多主主机的一组地址)访问群集。客户不能将单一服务器从群集中区分开来。服务器程序不能识别它们正运行于一个群集中。但是,由于网络负载均衡群集即使在群集主机发生故障的情况下仍能提供了不间断的服务,故而,它与运行单一服务器程序的单一主机大相径庭。与单一主机相比,群集还能对客户需求做出更迅捷的反应。
网络负载均衡通过在主机发生故障或脱机的情况下将网络通讯量重新指定给其它工作群集主机来提供高度的可用性。与脱机主机现存的连接虽然丢失,但因特网服务仍然处于可用状态。在大多数情况下(例如,就Web服务器而言),客户软件会自动重试发生故障的连接,而且,客户仅需几秒的延迟即可收到响应。
网络负载均衡通过在群集的一个或一个以上虚拟IP地址当中分配引入的网络通讯量来提供伸缩能力。群集中的主机于是对不同客户请求做出响应,即使是来自同一客户的多重请求也如是。例如,Web浏览器可能在单一Web网页内获得群集内不同主机处的多重映射。这就加速了处理过程并缩短了对客户的响应时间。
网络负载均衡使在一个子网上的全部群集主机能够为群集的主IP地址(以及多主主机上的额外IP地址)同时检测引入的网络通讯量。在每个群集主机上,网络负载均衡驱动程序充当了一个介于群集适配器驱动程序和TCP/IP栈之间的过滤器,以这种方式使主机能够收到一部分引入的网络通讯量。
网络负载均衡使用全面分布式的算法来从统计意义上将引入的客户映射到基于IP地址、端口和其它信息的群集主机上。在检查收到的数据包时,所有主机均同步执行这种映射以迅速决定哪个主机应处理该数据包。除非群集主机数量发生变化,该映射会保持不变。网络负载均衡过滤算法在数据包处理程序方面要比在集中负载均衡程序方面高效得多,而这必须修改并重发数据包。这就使网络负载均衡能够提供高得多的聚集带宽。通过直接在群集主机上运行,网络负载均衡的性能并不受某一代处理器或网络技术的局限。
群集通讯量的分配
网络负载均衡控制对从因特网客户到群集内选定主机的TCP与用户数据报协议(UDP)通讯量的分配,做法如下:在配置了网络负载平衡以后,对群集IP地址的引入客户请求由群集内的所有主机收到。网络负载平衡在这些数据报到达TCP/IP协议软件之前,就对这些数据报进行过滤以指定TCP和UDP端口。网络负载平衡只管理 TCP/IP中TCP和UDP协议,并以逐端口方式控制它们的活动。
除了流向指定端口的TCP和UDP通讯量之外,网络负载均衡不控制任何引入的IP通讯量。网络负载均衡不对网际控制报文协议(ICMP)、网际组成员协议(IGMP)、地址解析协议(ARP)或其它IP协议进行过滤。所有这些通讯量均不加修改地传递给在群集内全部主机上的TCP/IP协议软件。因为有了TCP/IP的稳定性及其处理重复数据报的能力,其它协议就能够在群集环境内正确运转。可是,当使用群集IP地址时,你可能预期从特定的点到点TCP/IP程序(比如ping)中看到重复的响应。这些程序能够通过为每个主机使用专用的IP地址来避免这种情况的发生。
集中收敛
网络负载均衡主机通过在群集内定期交换组播或广播消息来协调彼此间的活动。这就使它们能够监控群集所处的状态。当群集所处状况发生变化时(比如主机故障、脱离或加入群集),网络负载均衡就会调用一个称为集中收敛的处理过程,在这个处理过中,主机之间将交换消息以确定一个新的、持续的群集状态,并推举一个具有最高优先级的主机充当新的缺省主机。当群集的全部主机就新的群集状态达成一致时,它们就会将集中收敛的完成记入Windows 2000的事件日志。
在集中收敛期间,除非故障主机没有收到服务,主机将一如继往地处理引入的网络通讯量。客户对工作主机的请求是不受影响的。在集中收敛完成时,故障主机的通讯量会重新分配给剩余主机。负载均衡通讯量将在剩余宿主间分配,从而达成特定的TCP或UDP端口间最大可能的负载均衡。如果一个主机添加到群集中,集中收敛会允许该主机接管处理端口的任务,并由此使之具备最高的优先级;同时,集中收敛还将使该主机分到它所应负担的负载均衡通讯量份额。群集扩展不会影响正在进行的群集操作,并且保证对因特网客户和服务器程序而言是以透明方式实现的。可是,在客户的相似性被选定的情况下,群集扩展会影响到跨越多重TCP连接的客户话路,这主要是因为在连接之间可能将客户映射到不同的群集主机上去了。
网络负载均衡假定只要主机参加了群集宿主间的正常消息交换,那么,它就在群集内处于正常运转状态。如果其它主机在若干期间均未收到对消息交换的响应,它们就会启动一个集中收敛操作以重新分配先前由故障宿主承担的负载。你能够控制消息交换的周期和用来决定启动集中收敛操作的通信遗漏次数。以上两者各自的默认值分别为1000毫秒 (1秒)和5次。由于上述参数不常修改,因此,它们不能在"网络负载均衡属性"对话框中进行设置。必要时,这些参数可在系统注册表中以手工方式加以调整。