(推荐在V200R003之前版本使用增加二层交换机方案和单设备物理链路环回方案)
网络负载均衡NLB(Network Load Balance)是微软在Windows Server上开发的多服务器群集负载均衡特性。对于使用Windows Server的企业来说,实现设备与NLB服务器群集的对接非常重要。本文描述了S系列交换机与NLB服务器群集直连做网关的场景分析和配置过程。
背景知识
在NLB服务器群集中,每台服务器都有自己的IP地址和MAC地址。同时,NLB服务器群集还有一个单播的虚拟IP地址和一个虚拟MAC地址,分别称为群集IP地址和群集MAC地址。NLB群集通过该IP、MAC和做网关的S交换机直连互通,交换机通过三层转发将网络侧的流量同时同时转发一份给NLB集群中每一台服务器,然后NLB集群服务器内部通过特定算法实现负载分担,决定由哪一台服务器向网络侧回应报文。
目前,NLB服务器支持单播模式、组播模式和IGMP多播模式三种工作模式。
对接分析
三种工作模式下,S交换机与其对接做网关时存在的问题如下:
l 单播模式:单播群集MAC地址以02bf开头(单播MAC)。S交换机与单播模式的NLB服务器群集对接时,对应群集IP地址的ARP表项只能学习到一个出接口。因此,只有一台NLB服务器会收到发往群集IP地址的报文。
l 组播模式:组播群集MAC地址以03bf开头(组播MAC)。S交换机与组播模式的NLB服务器群集对接时,由于缺省情况下,S交换机无法学习到MAC地址是组播MAC的ARP表项。通过使能动态学习组播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所属VLAN的VLANIF接口作为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,服务器id为01,那么该台服务器外发数据报文的时候源MAC地址为0201-0a80-f6fc。
启用MaskSourceMac功能以后,服务器给交换机发送数据包的时候使用的源MAC地址是在群集MAC地址基础上根据主机ID修改后的MAC地址,而不同的主机ID是不一样的,这样就使得交换机连接服务器的各个端口上学习到的MAC地址不一样,就避免了MAC地址漂移的现象。而网关设备在发送针对群集IP的ARP请求的时候得到的回应是群集MAC,这个群集MAC地址不会学习在交换机的任何端口上。
因此,报文到达交换机以后,报文的目的MAC是群集MAC,由于交换机查找不到MAC地址表项,按照未知单播报文处理,所以在VLAN内进行广播。
以上分析是对接工作在单播模式的NLB服务器,如果NLB服务器工作在组播模式,其集群MAC是组播MAC,交换机无法学习到MAC地址是组播MAC的ARP表项。因此,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“增加二层交换机”的方案类似,物理链路环回以后逻辑上交换机被分成了两块,一部分是二层交换机一部分是三层做网关的交换机,原理就不再赘述了。
如下图所示,Switch通过接口GE0/0/1、GE0/0/2和GE0/0/3分别与三台NLB服务器直连。NLB服务器群集工作在单播模式下,群集IP地址为10.128.246.252/24,群集MAC地址为02bf-0a80-f6fc。Switch与客户端Client之间路由可达。
当客户端Client访问NLB服务器群集时,交换机Switch能够将发往群集IP地址的报文发送给群集中的所有NLB服务器。
配置思路
通过物理链路环回方法实现对接的配置思路如下:
1. 配置与NLB服务器直连的接口GE0/0/1~GE0/0/3加入VLAN100。
2. 去使能自环接口GE0/0/4和GE0/0/5的STP/RSTP/VBST/MSTP功能,并以Access类型分别加入VLAN100和VLAN200。
3. 配置三层接口VLANIF200的IP地址,VLANIF200作为NLB服务器群集的网关。
4. 连接自环接口GE0/0/4和GE0/0/5。
操作步骤
1. 配置与NLB直连的接口GE0/0/1~GE0/0/3以Access方式加入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/4和GE0/0/5
# 去使能接口GE0/0/4和GE0/0/5的STP/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/4和GE0/0/5以Access类型分别加入VLAN100和VLAN200。
[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/4和GE0/0/5
上述配置完成后,进行物理连线。
5. 验证配置结果
上述配置完成后,发往NLB服务器群集IP地址的报文Server_1~Server_3都能收到。
当NLB服务器群集工作在单播模式时,不需要在交换机上配置静态ARP表项(以上举例是这种情况);当NLB服务器群集工作在组播模式时,需要在交换机上配置静态ARP表项(IP地址和MAC都是NLB服务器的群集IP和MAC,出接口为VLAN200所在的接口,以上举例中就是GE0/0/5)。