Windows网络负载均衡(NLB)常见部署问题
 
问:什么是 AOL Proxy(或 Mexaproxy)问题?
答:
所有例如 AOL 或 MSN 这样的大公司或大型服务机构 (megaservice) 发出的连接都通过客户端代理。但是,无法保证同一个客户端发出的两个 TCP 连接可以遍历同一个代理。
由于 NLB 根据源 IP 地址和端口来判断客户端的身份,因此这样的两个连接对于 NLB 来说将是来自不同的客户端,它们可能会被负载平衡到相同群集的不同服务器中。如果这些连接隐式共享 NLB 成员上存储的会话信息,则该会话将会中断。
这引起了更大的会话状态维护问题,应当通过将会话状态保持为高可用性共享后端来解决这个问题。如果不能使用这种办法,群集管理员可以将端口规则的客户端关系设置为 C 类,以尽量减少这种 megaproxy 问题。
注意: 这种办法假定代理服务器的 IP 地址落在 C 类 IP 地址范围内。
问:如果大多数客户端都通过客户端代理连接到 NLB 群集,是否可以得到平均的负载平衡?
答:
当不同客户端的连接都通过相同的客户端代理时,它们到达 NLB 群集时将具有相同的源 IP 地址。如果对于这种流量的端口规则被配置为单一客户端关系,那么 NLB 在进行负载平衡决策时将仅使用传入连接的“源 IP 地址”;一个群集成员将处理所有通过此代理的连接。若要分布来自遍历相同代理服务器的多个客户端的连接,请将端口规则的客户端关系设置为***。
问:多播和单播操作模式之间有什么不同?我应当在我的 NLB 安装中使用哪一个?
答:
NLB 依赖于将传入数据包定向到所有群集成员来实现。而接收/丢弃过滤决策则是各个群集成员自行决定。NLB 支持三种操作模式。
单播。在每个群集成员上,NLB 覆盖网络适配器上制造商提供的 MAC 地址。NLB 对所有成员都使用相同的单播 MAC 地址。这种模式的优点是它可以无缝地与大多数路由器和交换机协同工作。缺点是到达群集的流量会扩散到交换机虚拟 LAN (VLAN) 上的所有端口,并且主机之间的通信不能通过 NLB 绑定到的适配器。
多播NLB 保留原厂 MAC 地址不变,但是向网络适配器中增加了一个第 2 层多播 MAC 地址。所有入站流量都会到达这个多播 MAC 地址。优点是这种方法可以通过在交换机的“内容可寻址存储器”(CAM) 表中创建静态项,从而使得入站流量仅到达群集中的主机。当然,这种方法也有缺点,因为 CAM 项必须静态关联一组交换机端口。如果没有这些 CAM 项,入站流量仍然会扩散到交换机 VLAN 上的所有端口。还有一个缺点就是很多路由器不会自动将单播 IP 地址(群集的虚拟 IP 地址)与多播 MAC 地址关联起来。如果进行静态配置的话,一些路由器可以存在这种关联。
IGMP 多播 (Windows Server 2003)。就像多播操作模式一样,NLB 保留原厂 MAC 地址不变,但是向网络适配器中增加了一个 IGMP 多播地址。此外,NLB 主机会发出这个组的 IGMP 加入消息。如果交换机探测到这些消息,它可以使用所需的多播地址来填充自己的 CAM 表,这样入站流量就不会扩散到 VLAN 上的所有端口。这是这种群集模式的主要优点。缺点是有一些交换机不支持 IGMP 探测。除此之外,路由器仍然支持单播 IP 地址到多播 MAC 地址的转换。
问:如何减少 NLB 产生的交换机扩散?
答:
对于 Windows 2000,唯一的选择就是使用以下两种方法之一来隔离 NLB 主机。其一,可以让这些主机连接到它们自己的 LAN 或 VLAN。这种办法对于上述群集模式都有效。其二,对于多播模式,管理员可以在交换机的 CAM 表中创建静态项。
对于 Windows Server 2003,可以使用上述一种办法,或是使用 IGMP 多播模式。
注意:Microsoft 建议使用单播操作模式,除非它不能满足您部署的需要。建议的解决扩散的方法是通过 VLAN。
问:NLB 要求每台主机使用两个网络适配器吗?
答:
NLB 仅要求每台主机有一个网络适配器。但是,在一些情况下可能需要增加一个网络适配器:
单播模式下的主机间通信
单播模式下,每个群集成员都具有相同的 MAC 地址。因此,相同群集中的成员之间如果要进行通信就需要增加一个适配器。
隔离前端流量与后端流量
例如,如果 NLB 群集面向 Internet,那么就可以在 NLB 成员中增加一个用于管理流量的适配器。然后就可以使用策略将 NLB 接口锁定,以阻止管理活动。
问:NLB 可以使用 NIC 协作适配器吗?
答:
大多数主要的网络适配器供应商都提供 NIC 协作解决方案,以提供适配器容错 (AFT)。使用 NIC 协作可以将某个连接的网络适配器端口组织为一个物理网段。如果通过一个端口无法进行连接,那么另外一个端口就会自动激活。这种操作对于操作系统和网络上的其他设备来说是透明的。
NLB 可以使用某些协作适配器。但是,这要求 NLB 和协作适配器配置软件之间可以很好地协调。有关详细信息,请参考知识库文章 将协作适配器用于网络负载平衡可能引发网络问题 ([url]http://go.microsoft.com/fwlink/?LinkId=18366[/url])。
问:NLB 可以替代 NIC 协作软件来提供适配器容错或提高吞吐量吗?
答:
不能,NLB 不能用于“协作”适配器,也就是说不能将适配器端口组织到一起。NLB 只能用于平衡负载平衡群集中多台主机之间的流量。
问:如何配置 NLB 的第 2 层交换机?
答:
如果您将 NLB 主机连接到交换机而非集线器,那么您就需要确保交换机没有将群集 MAC 地址与特定的交换机端口关联起来。知识库文章 连接第 2 层交换机的 WLBS 主机配置选项 ([url]http://go.microsoft.com/fwlink/?LinkId=18367[/url]) 介绍了如何配置 NLB 的第 2 层交换机。
问:如何配置 NLB 的第 3 层交换机?
答:
第 3 层交换机必须专门配置才能够与 NLB 一起使用。必须为群集成员建立一个 VLAN,并且这个 VLAN 必须配置为在第 2 层模式下运行。可能不是所有第 3 层交换机都支持此项功能,但是如果它们支持,则设置第 2 层 VLAN 的机制仅适用于特定构造和模式。在配置这种系统之前,请查询交换机文档。
问:如何避免交换机成为单点故障?
答:
创建一个跨越两个交换机的子网,并将一半 NLB 群集连接到一台交换机。您还需要两个路由器上行链路,每个链路连接一台交换机。您的路由器必须运行冗余路由协议(例如 HSRP)以防路由器链接故障。最后,交换机之间还需要两个交叉连接(否则交叉表就成为了单点故障)。
在这种配置中,每台交换机都具有两个连接网络的路径:一个是通过它所链接的路由器,一个是通过其他交换机。如果一台路由器出现故障,那么连接它的交换机将会使用交叉连接。如果一台交换机出现故障,那么群集的容量就会减半。
问:我的 NLB 群集中,每台服务器上都具有两个网络适配器。如何确保让所有出站流量都经过非负载平衡网络适配器?
答:
您可以通过设置网络适配器上的参数来控制这种行为。
问:我可以让一部分群集运行多播模式,另外一部分群集运行单播模式吗?
答:
不能,所有群集成员必须配置为使用相同模式。
问:NLB 支持多个虚拟 IP 地址吗?
答:
是的。有关详细信息,请参考知识库文章 如何对 WLBS 配置多个虚拟 IP 地址 ([url]http://go.microsoft.com/fwlink/?LinkId=18368[/url])。
问:可以为同一组主机上的不同虚拟 IP 地址 (VIP) 指定不同的端口规则吗?
答:
Windows 2000:不能,端口规则应用于所有为群集配置的 VIP。请参考知识库文章 如何对 WLBS 配置多个虚拟 IP 地址 ([url]http://go.microsoft.com/fwlink/?LinkId=18368[/url])。
Windows Server 2003:可以,端口规则可以指定它应用到的 IP 地址。
问:如果不同的子网添加了同一组主机上的多个 VIP,NLB 还有效吗?
答:
是的,只要 IP 地址被路由到相同的 LAN 就行。
问:同一群集中可以混合使用 NT 4.0 Server、Windows 2000 Server 和 Windows Server 2003 机器吗?
答:
可以。
注意:
当群集中存在使用下级操作系统的成员时,Windows Server 2003 的 NLB 将会运行在向后兼容模式下,而新的 NLB 功能将不可用。请参见 群集技术提供了哪些新功能 ([url]http://go.microsoft.com/fwlink/?LinkId=18369[/url]) 以获得 Windows Server 2003 的新 NLB 功能列表。
“NLB 管理器”无法管理使用下级操作系统的群集成员。
问:可以将 NLB 绑定到多个接口吗?
答:
Windows Server 2003。 从 Windows Server 2003 起,您可以将 NLB 绑定到多个网络适配器。每个 NLB 实例都是相互独立的,并且这些实例不必是相同群集的成员。
问:在相同的子网上可以使用两个 NLB 群集吗?
答:
可以。
问:我们的一个群集需要跨越多栋建筑物。这样可以使用 NLB 吗?
答:
可以,如果群集成员连接到相同子网的话。
问:NLB 支持令牌环网络吗?
答:
不支持。令牌环网络不允许多台主机共用一个 MAC 地址,而这是 NLB 的基本要求。