Windows server系统(Windows 2000高级服务器版本、Windows server 2003所有版本)中提供了网络负载均衡(NLB)功能。NLB的操作模式有单播和多播两种,它们之间有什么区别呢?
首先,给大家介绍一下NLB的工作原理:当客户向NLB群集(NLB的虚拟IP地址)发起请求时,其实客户的请求数据包是发送到所有的NLB节点,然后运行在NLB节点上的NLB服务根据同样的NLB算法来确定是否应该由自己进行处理,如果不是则丢弃客户的请求数据包,如果是则进行处理。
如何将请求数据包发送到所有的NLB节点是NLB运行的关键之处,单播和多播这两种操作模式就是用于实现这一需求。NLB不支持单个NLB群集中的单播/多播的混合环境;在每一个NLB群集中,该群集中的所有节点都必须配置为多播或单播,否则,此NLB群集将无法正常工作。
单播和多播的运行方式和不同之处分别为:
单播
在单播模式下,NLB重新对每个NLB节点中启用NLB的网络适配器分配MAC地址(此MAC地址称为群集MAC地址),并且所有的NLB节点均使用相同的MAC地址(均使用群集MAC地址),同时NLB修改所有发送的数据包中的源MAC地址,从而使交换机不能将此群集MAC地址绑定在某个端口上。
工作在单播模式下的NLB可以在所有网络环境下正常运行,但是由于它的工作特性,具有以下两个限制:
由于NLB所使用的群集MAC地址没有绑定在某个具体的交换机端口上,所以所有的NLB通讯均通过在交换机的所有端口上广播进行,而不管此端口是否连接了NLB节点,这造成了额外的网络流量负担;
由于所有的NLB节点具有相同的MAC地址,NLB节点之间不能通过自己原有的专用IP地址进行通讯。
多播
在多播模式下,NLB不会修改NLB节点启用NLB的网络适配器的MAC地址,而是为它再分配一个二层多播MAC地址专用于NLB的通讯(此MAC地址称为群集MAC地址),这样NLB节点之间可以通过自己原有的专用IP地址进行通讯。但是在多播模式中,NLB节点发送的针对群集IP地址MAC地址ARP请求的ARP回复会将群集IP地址映射到多播MAC地址,而许多路由器或者交换机(包括CISCO的产品)会拒绝这一行为。当出现这种情况时,你必须在路由器和交换机上手动添加静态映射,将群集IP地址映射到群集的多播MAC地址。
Windows Server 2003提供了一个新的特性,称为IGMP 多播,它可以通过使用IGMP协议支持来使交换机只将NLB通讯发送到连接NLB节点的端口,而不是所有交换机端口。但是此特性必须要求交换机支持IGMP侦听,并且要求群集工作在多播模式下。
ISA企业版防火墙中提供的集成NLB服务依赖于Windows server系统中的NLB,并且从兼容性考虑,NLB工作在单播模式下,你不能修改这一配置。你可以在Windows server中的网络负载平衡管理器中修改NLB的操作模式为多播,但是此时NLB就不再是和ISA防火墙集成工作的了。
从上面单播模式的工作原理可以看出,ISA企业版中NLB节点之间不能通过自己原有的专用IP地址进行通讯。因此,当部署ISA企业版防火墙对阵列成员通讯所使用的网络提供NLB服务时,阵列成员之间将不能互相访问,所以你必须使用额外的网络适配器用于阵列成员之间的通讯。关于更详细的信息,请参见ISA中文站中关于ISA防火墙企业版的技术文章。
不过在Windows server 2003 SP1中,微软修改了NLB单播模式的驱动,从而支持阵列成员通过自己原有的专用IP地址进行通讯,详细信息请参见KB898867,Unicast NLB nodes cannot communicate over an NLB-enabled network adaptor in Windows Server 2003。在这种情况下,ISA企业版防火墙不需要再为阵列通讯配置一个额外的网络适配器,从而允许你对用于阵列通讯的网络部署NLB服务。
如下图所示,我在两台操作系统为Windows server 2003 企业版SP1的服务器上安装了ISA企业版防火墙,
ISA企业版防火墙中提供的集成NLB服务依赖于Windows server系统中的NLB,并且从兼容性考虑,NLB工作在单播模式下,你不能修改这一配置。你可以在Windows server中的网络负载平衡管理器中修改NLB的操作模式为多播,但是此时NLB就不再是和ISA防火墙集成工作的了。
从上面单播模式的工作原理可以看出,ISA企业版中NLB节点之间不能通过自己原有的专用IP地址进行通讯。因此,当部署ISA企业版防火墙对阵列成员通讯所使用的网络提供NLB服务时,阵列成员之间将不能互相访问,所以你必须使用额外的网络适配器用于阵列成员之间的通讯。关于更详细的信息,请参见ISA中文站中关于ISA防火墙企业版的技术文章。
不过在Windows server 2003 SP1中,微软修改了NLB单播模式的驱动,从而支持阵列成员通过自己原有的专用IP地址进行通讯,详细信息请参见KB898867,Unicast NLB nodes cannot communicate over an NLB-enabled network adaptor in Windows Server 2003。在这种情况下,ISA企业版防火墙不需要再为阵列通讯配置一个额外的网络适配器,从而允许你对用于阵列通讯的网络部署NLB服务。
如下图所示,我在两台操作系统为Windows server 2003 企业版SP1的服务器上安装了ISA企业版防火墙,
对阵列通讯网络部署了负载均衡,
NLB服务同样运行正常。
但是,在可能的情况以及需要高级别安全的网络环境下,你都应该为NLB的阵列通讯使用额外的网络适配器,从而避免阵列通讯泄漏造成安全问题。