(推荐在V200R003之前版本使用增加二层交换机方案和单设备物理链路环回方案)

网络负载均衡NLBNetwork Load Balance)是微软在Windows Server上开发的多服务器群集负载均衡特性。对于使用Windows Server的企业来说,实现设备与NLB服务器群集的对接非常重要。本文描述了S系列交换机与NLB服务器群集直连做网关的场景分析和配置过程。

背景知识

NLB服务器群集中,每台服务器都有自己的IP地址和MAC地址。同时,NLB服务器群集还有一个单播的虚拟IP地址和一个虚拟MAC地址,分别称为群集IP地址和群集MAC地址。NLB群集通过该IPMAC和做网关的S交换机直连互通,交换机通过三层转发将网络侧的流量同时同时转发一份给NLB集群中每一台服务器,然后NLB集群服务器内部通过特定算法实现负载分担,决定由哪一台服务器向网络侧回应报文。

目前,NLB服务器支持单播模式、组播模式和IGMP多播模式三种工作模式。

对接分析

三种工作模式下,S交换机与其对接做网关时存在的问题如下:

l  单播模式:单播群集MAC地址以02bf开头(单播MAC)。S交换机与单播模式的NLB服务器群集对接时,对应群集IP地址的ARP表项只能学习到一个出接口。因此,只有一台NLB服务器会收到发往群集IP地址的报文。

l  组播模式:组播群集MAC地址以03bf开头(组播MAC)。S交换机与组播模式的NLB服务器群集对接时,由于缺省情况下,S交换机无法学习到MAC地址是组播MACARP表项。通过使能动态学习组播MAC的功能或静态ARP表项绑定的方式,也只能学习到一个出接口。因此,只有一台NLB服务器会收到发往群集IP地址的报文。

l  IGMP多播模式:IGMP多播群集MAC地址以0100-5e开头。目前,S交换机不支持与工作在IGMP多播模式的NLB服务器对接。

如上分析,必须解决只能发送一台服务器的问题,S交换机和NLB服务器才能实现对接。

对接方案

多端口ARP方案:多端口ARP可以实现将发往服务器群集的报文同时发送给群集中所有的服务器。多端口ARP主要通过静态ARP表项将NLB群集IP地址与NLB服务器群集使用的共同MAC地址进行绑定,并且通过多端口MAC表项将NLB服务器群集使用的共同MAC地址与设备上与服务器相连的出接口进行绑定。这样发往服务器群集IP地址的数据报文会从设备上所有与服务器相连的出接口发送出去。 这种方案适用于S交换机V200R003C00及以后版本。

对于V200R003之前的版本,可以通过如下两种方式实现对接:

l  在交换机与NLB服务器之间增加二层交换机(当NLB服务器工作在组播模式时,需要在交换机上使能ARP动态学习组播MAC的功能或者配置静态ARP表项)。这种方法需要多增加一台二层交换机,适用于设备资源充足的情况。

l  物理链路环回方法。这种方法与增加二层交换机的方法相比,配置较复杂。

对接案例1——多端口ARP方案(V200R003及以后版本)

上一期我们已经介绍了这个方案的实现过程,具体请参见:http://hanjh8.blog.51cto.com/742232/1582041

Note:部分盒式款型不支持,帖子里都有介绍。

对接案例2——增加二层交换机

对于不支持多端口ARP的设备形态,在设备条件满足的情况下,通过增加二层交换机的方法,可以实现设备与NLB服务器群集的对接。如下图所示,在三层交换机Switch下增加二层交换机LSW,接口GE0/0/1所属VLANVLANIF接口作为NLB服务器群集的网关。由Switch发往群集IP地址的报文到达LSW后,会在VLAN10内广播,从而实现所有NLB服务器都会收到发往群集IP地址的报文

 

为什么报文到了二层交换机以后会在VLAN 10内广播?为什么不是查找MAC地址进行单播转发? 

NLB服务器工作在单播模式的时候,NLB群集中每一台服务器的网卡的MAC地址会被替换成一个相同的群集MAC地址,他们通过此群集MAC地址来接受外部的连接请求。这个时候不同的服务器给交换机发送数据包的时候源MAC地址是相同的,而交换机上不允许不同的接口学习到相同的MAC地址,这会产生MAC地址漂移,导致转发报文异常。

为了解决上述问题,NLB服务器又引入了一个MaskSourceMac功能,它会根据每一台服务器的主机ID来更改外送数据包的源MAC地址。将群集MAC地址中最高第二组字符改为主机ID,然后将此修改过的MAC地址作为源MAC地址发送数据包。例如,群集MAC地址为02bf-0a80-f6fc,服务器id01,那么该台服务器外发数据报文的时候源MAC地址为0201-0a80-f6fc

启用MaskSourceMac功能以后,服务器给交换机发送数据包的时候使用的源MAC地址是在群集MAC地址基础上根据主机ID修改后的MAC地址,而不同的主机ID是不一样的,这样就使得交换机连接服务器的各个端口上学习到的MAC地址不一样,就避免了MAC地址漂移的现象。而网关设备在发送针对群集IPARP请求的时候得到的回应是群集MAC,这个群集MAC地址不会学习在交换机的任何端口上。

因此,报文到达交换机以后,报文的目的MAC是群集MAC,由于交换机查找不到MAC地址表项,按照未知单播报文处理,所以在VLAN内进行广播。

以上分析是对接工作在单播模式的NLB服务器,如果NLB服务器工作在组播模式,其集群MAC是组播MAC,交换机无法学习到MAC地址是组播MACARP表项。因此,NLB服务器工作在组播模式时,需要在做网关的Switch上使能ARP动态学习组播MAC的功能或配置静态ARP表项(表项的IP地址为群集IP地址、MAC地址为群集组播MAC地址、出接口为网关设备上连接二层交换机的接口GE0/0/1)。

ARP动态学习组播MAC配置命令:arp learning multicast enable,配置在网关设备连接二层交换机的接口上。

静态ARP表项配置命令(以上图为例):arp static 群集IP 群集MAC vid 10 interface gigabitethernet 0/0/1

对接案例3——单台设备物理链路环回

本方案适用于S系列交换机所有产品形态及版本但这个方案需要占用物理端口资源,支持多端口ARP的情况下,推荐使用多端口ARP

物理链路环回方案和案例2“增加二层交换机”的方案类似,物理链路环回以后逻辑上交换机被分成了两块,一部分是二层交换机一部分是三层做网关的交换机,原理就不再赘述了。

anchor.gifanchor.gif组网需求

如下图所示,Switch通过接口GE0/0/1GE0/0/2GE0/0/3分别与三台NLB服务器直连。NLB服务器群集工作在单播模式下,群集IP地址为10.128.246.252/24,群集MAC地址为02bf-0a80-f6fcSwitch与客户端Client之间路由可达。

当客户端Client访问NLB服务器群集时,交换机Switch能够将发往群集IP地址的报文发送给群集中的所有NLB服务器。

 

配置思路

通过物理链路环回方法实现对接的配置思路如下:

1.   配置与NLB服务器直连的接口GE0/0/1GE0/0/3加入VLAN100

2.   去使能自环接口GE0/0/4GE0/0/5STP/RSTP/VBST/MSTP功能,并以Access类型分别加入VLAN100VLAN200

3.   配置三层接口VLANIF200IP地址,VLANIF200作为NLB服务器群集的网关。

4.   连接自环接口GE0/0/4GE0/0/5

操作步骤

1.   配置与NLB直连的接口GE0/0/1GE0/0/3Access方式加入VLAN100

<Quidway> system-view

[Quidway] sysname Switch

[Switch] vlan batch 100 200

[Switch] interface gigabitethernet 0/0/1

[Switch-GigabitEthernet0/0/1] port link-type access

[Switch-GigabitEthernet0/0/1] quit

[Switch] interface gigabitethernet 0/0/2

[Switch-GigabitEthernet0/0/2] port link-type access

[Switch-GigabitEthernet0/0/2] quit

[Switch] interface gigabitethernet 0/0/3

[Switch-GigabitEthernet0/0/3] port link-type access

[Switch-GigabitEthernet0/0/3] quit

[Switch] vlan 100

[Switch-vlan100] port gigabitethernet 0/0/1 to 0/0/3

[Switch-vlan100] quit

2.   配置自环接口GE0/0/4GE0/0/5

去使能接口GE0/0/4GE0/0/5STP/RSTP/VBST/MSTP功能。

[Switch] interface gigabitethernet 0/0/4

[Switch-GigabitEthernet0/0/4] undo stp enable

[Switch-GigabitEthernet0/0/4] quit

[Switch] interface gigabitethernet 0/0/5

[Switch-GigabitEthernet0/0/5] undo stp enable

[Switch-GigabitEthernet0/0/5] quit

配置接口GE0/0/4GE0/0/5Access类型分别加入VLAN100VLAN200

[Switch] interface gigabitethernet 0/0/4

[Switch-GigabitEthernet0/0/4] port link-type access

[Switch-GigabitEthernet0/0/4] port default vlan 100

[Switch-GigabitEthernet0/0/4] quit

[Switch] interface gigabitethernet 0/0/5

[Switch-GigabitEthernet0/0/5] port link-type access

[Switch-GigabitEthernet0/0/5] port default vlan 200

[Switch-GigabitEthernet0/0/5] quit

3.   配置NLB服务器群集网关的IP地址

[Switch] interface vlanif 200

[Switch-Vlanif200] ip address 10.128.246.250 24

[Switch-Vlanif200] quit

4.   连接自环接口GE0/0/4GE0/0/5

上述配置完成后,进行物理连线。

5.   验证配置结果

上述配置完成后,发往NLB服务器群集IP地址的报文Server_1Server_3都能收到。

配置注意事项

NLB服务器群集工作在单播模式时,不需要在交换机上配置静态ARP表项(以上举例是这种情况);NLB服务器群集工作在组播模式时,需要在交换机上配置静态ARP表项IP地址和MAC都是NLB服务器的群集IPMAC,出接口为VLAN200所在的接口,以上举例中就是GE0/0/5)。