第一十四章 高可用群集和QoS
第一节 Windows Server 2008实现网络负载
Windows Server 2008 中的网络负载平衡 (NLB) 功能可以增强 Internet 服务器应用程序 (如在 Web、FTP、防火墙、代理、虚拟专用网络 (VPN) 以及其他执行关键任务的服务器上使用的应用程序) 的可用性和可伸缩性。运行 Windows Server 2008 的单个计算机只能提供有限的服务器可靠性和可伸缩性能。但是,通过将运行 Windows Server 2008 的其中一个产品的两台或多台计算机的资源组合到单个虚拟群集中,NLB 便可以提供 Web 服务器和其他执行关键任务服务器所需的可靠性和性能
图14-1 网络负载平衡示意图
图14-1描述了两个连接的网络负载平衡群集。第一个群集由两个主机组成,第二个群集由四个主机组成。这是如何使用 NLB 的一个示例。
每个主机都运行所需的服务器应用程序(如用于 Web、FTP和Telnet服务器的应用程序)的单个副本。NLB 在群集的多个主机中分发传入的客户端请求。可以根据需要配置每个主机处理的负载权重,还可以向群集中动态地添加主机,以处理增加的负载。此外,NLB 还可以将所有流量引导至指定的单个主机,该主机称为默认主机。
NLB 允许使用相同的群集IP地址集指定群集中所有计算机的地址,并且它还为每个主机保留一组唯一专用的 IP 地址。对于负载平衡的应用程序,当主机出现故障或者脱机时,会自动在仍然运行的计算机之间重新分发负载。当计算机意外出现故障或者脱机时,将断开与出现故障或脱机的服务器之间的活动连接。但是,如果用户有意关闭主机,则可以在使计算机脱机之前,使用 drainstop 命令维护所有活动的连接。任何一种情况下,都可以在准备好时将脱机计算机明确地重新加入群集,并重新共享群集负载,以便使群集中的其他计算机处理更少的流量。
NLB 群集中的主机会交换检测消息以保持有关群集成员身份的数据的一致性。默认情况下,当主机在5 s之内未能发送检测消息时,该主机便出现了故障。当主机出现故障时,群集中的剩余主机将聚合在一起并执行以下操作。
*确定哪些主机仍然是群集中的活动成员。
*选择优先级最高的主机作为新的默认主机。
*确保所有新的客户端请求都由仍然活动的主机进行处理。
在聚合期间,仍然活动的主机会查找一致的检测信号。如果无法发送检测信号的主机开始提供一致的检测信号,则它会在聚合过程中重新加入群集。当新的主机尝试加入群集时,它会发送检测消息,该消息也会触发聚合。当所有群集主机对当前的群集成员身份达成一致之后,会向剩余主机重新分发客户端负载,并完成聚合。
通常聚合只需几秒钟,因此由群集中断的客户端服务是非常少的。在聚合期间,仍然活动的主机会继续处理客户端请求,而不会影响现有连接。如果所有主机在几个检测期间报告的群集成员身份和分发映射都一致,则聚合结束。
14.1.1 NLB中的新增功能
对于 Windows Server 2008,NLB 包括以下改进。
*支持 IPv6。NLB 对所有通信都完全支持 IPv6。所有 NLB 组件都支持 IPv6 地址,并且可以将这些地址配置为主要群集 IP 地址、专用 IP 地址和虚拟 IP 地址。此外,还可以作为纯 IPv6 以及在 IPv6 over IPv4 模式下对 IPv6 进行负载平衡。
*支持 NDIS 6.0。NLB 驱动程序使用 NDIS 6.0 轻型筛选模型。NDIS 6.0 保持与早期 NDIS 版本的向后兼容性。NDIS 6.0 的设计包括增强的驱动程序性能和可伸缩性以及简化的 NDIS 驱动程序模型。
*WMI 增强。MicrosoftNLB命名空间添加了对IPv6的多个专用IP地址的支持,包括以下地址。
*MicrosoftNLB命名空间中的类支持IPv6地址(除了IPv4地址之外)。
*MicrosoftNLB_NodeSetting类支持多个专用的IP地址,方法是在DedicatedIPAddresses和DedicatedNetMasks中指定这些地址。
*改进了拒绝服务 (DoS) 攻击和计时器饥饿保护。使用回调接口,NLB 可以在攻击期间或者节点负载过高时检测并通知应用程序。当群集节点过载或者受到攻击时,ISA 服务器使用该功能。
*支持每个节点使用多个专用 IP 地址。NLB 完全支持为每个节点定义多个专用 IP 地址,而以前只支持每个节点使用一个专用 IP 地址。当客户端由 IPv4 和 IPv6 通信组成时,ISA 服务器可以使用该功能来管理每个 NLB 节点。
*支持滚动升级。NLB 支持从 Windows Server 2003 到 Windows Server 2008 的滚动升级。
*通过网络负载平衡管理器综合管理。不再需要使用网络连接工具配置 NLB 群集,只需通过 Windows Server 2008 中的 NLB 管理器即可执行 NLB 群集配置。这样便可以最大限度地减少可能因群集主机之间设置不一致引起的 NLB 配置问题。
14.1.2 NLB配置
NLB 作为Windows网络驱动程序运行,如图14-2所示,它的操作对于 TCP/IP 网络堆栈是透明的。
网络负载平衡的功能
*可伸缩性:可伸缩性是量度计算机、服务或应用程序如何更好地改进以满足持续增长的性能需求的标准。对于 NLB 群集而言,可伸缩性是指当群集的全部负载超过其能力时逐步将一个或多个系统添加到现有群集中的功能。以下详细介绍了 NLB 的可伸缩性功能。
·平衡 NLB 群集上对各个 TCP/IP 服务的负载请求。
·在一个群集中最多支持 32 台计算机。
·平衡群集中多个主机之间的多个服务器负载请求(来自同一个客户端或者来自几个客户端)。
·支持在负载增加时,能够在不关闭群集的情况下向 NLB 群集中添加主机。
·支持在负载降低时,能够从群集中删除主机。
·通过全部实现管道化提高性能并降低开销。管道允许向 NLB 群集发送请求,而无须等待响应上一个发送的请求。
*高可用性:通过最大限度地减少停机时间,高可用系统能够可靠地提供可接受级别的服务。NLB包括一些内置功能,可以通过自动执行以下操作来提供高可用性。
·检测发生故障或脱机的群集主机并对其进行恢复。
·在添加或删除主机时平衡网络负载。
·在10 s之内恢复并重新分发负载。
·可管理性:NLB提供以下可管理性功能。
·使用 NLB 管理器,可以从单个计算机管理和配置多个 NLB 群集和群集主机。
·使用端口管理规则,可以为单个 IP 端口或一组端口指定负载平衡行为。
·可以为每个网站定义不同的端口规则。如果对多个应用程序或网站使用相同的一组负载平衡服务器,则端口规则基于目标虚拟 IP 地址(使用虚拟群集)。
·使用可选的单主机规则,可以将所有客户端请求引导至单个主机。NLB 将客户端请求路由到运行特定应用程序的特定主机。
·可以阻止对某些 IP 端口进行不需要的网络访问。
·可以在群集主机上启用 Internet 组管理协议 (IGMP) 支持,以控制交换机广播(在多播模式中操作时)。
·使用 shell 命令或脚本,可以从运行 Windows 的任何联网计算机上远程启动、停止和控制 NLB 操作。
·可以查看 Windows 事件日志以检查 NLB 事件。NLB 在事件日志中记录所有操作和群集更改。
*易用性:NLB 提供了许多便于使用的功能。
·可以作为标准的 Windows 网络驱动程序组件安装 NLB。
·NLB 不需要更改任何硬件即可启用和运行。
·使用 NLB 管理器可以新建 NLB 群集。
·使用 NLB 管理器,可以从一台远程或本地计算机上配置和管理多个群集以及群集的所有主机。
·NLB 允许客户端使用单个逻辑 Internet 名称和虚拟 IP 地址(称为群集 IP 地址,它保留每台计算机的各个名称)访问群集。NLB 允许多宿主服务器具有多个虚拟 IP 地址。
·不需要修改服务器应用程序即可在 NLB 群集中运行。
·如果群集主机出现故障并且后来又恢复联机,则可以将 NLB 配置为自动将该主机添加到群集。之后,添加的主机将能够开始处理来自客户端的新的服务器请求。
·可以在不打扰其他主机上群集操作的情况下使计算机脱机进行预防性的维护。
·NLB群集最早出现在Windows 2000 Server的Advanced Server系统中,在Windows Server 2008的某些版本中均提供了此项功能。