组网如图所示,从Client访问NLB集群的虚拟地址,实现多服务器的业务负载均衡。
三台服务器使用微软的NLB集群技术多播模式,虚拟出一个单播IP和组播MAC地址。
客户反馈思科设备C4500成为Client所在VLAN 196的VRRP Master时,Client能正常访问NLB集群的web应用;
但当S7506E成为VLAN 196的VRRP Master时,Client无法打开web应用。
在访问异常情况下,S7506E并没有异常告警信息,设备工作正常。
NLB基本工作原理
NLB使单个子网上的所有群集主机都接收传到群集 IP 地址的传入客户端请求。其采用一种完全分布式的算法,根据传入客户端的 IP 地址和端口,以统计方式将其映射到群集主机。此进程的发生不需要主机间进行任何通信。当发现到达的数据包时,所有主机同时执行这种映射,以快速确定哪个主机应当处理这个程序包。这种映射一直保持不变,直到群集主机数发生更改时为止。例如有3台Host组成1个群集NLB,发给虚拟Server的所有流量这三台Host都需要能够收到,然后由这三台Host的适配层去把本Host不期望的流量过滤掉。
1) 单播模式
NLB将会根据Host 的ID来伪造Host的MAC地址,如Host 1的伪MAC为address 00−01−ac−10−00−01, Host 2的伪MAC为00−02−ac−10−00−01,NLB发送ARP报文时,Ethernet字段的源MAC使用伪MAC,整个MAC将为交换机学习到MAC地址表中,ARP报文字段中的源MAC使用集群MAC,整个MAC将被学习到交换机的ARP表项中,在交换机发送ARP应答的时候,ARP字段的目的MAC填充的是集群MAC,二层目的MAC填充的也是集群MAC,但交换机的MAC地址表中并没有该MAC,于是ARP报文会被作为未知单播向所有端口转发,流量就被送到所有的服务器。单播模式的的缺点在于如果VLAN内有无关端口,也会收到业务流量。
2) 组播模式
当使用组播模式的时候,NLB使用一个组播地址,例如0300.5e11.1111来作为Server的虚MAC,ARP报文的源MAC和二层源MAC均为组播MAC 0300.5e11.1111,这个时候报文中的IP字段都是单播IP地址。
3) 组播+IGMP模式
这种模式和组播模式的区别在于两点,这种模式会发送239.255.X.X的IGMP V1的Report报文,这种模式也是使用组播MAC作为ARP和二层的源MAC地址,但是该MAC是以01005e开头的组播MAC,相比之下,组播模式使用的是03开头的组播MAC地址。
根据NLB集群的工作原理,所有NLB集群的成员服务器都需要收到终端发来的请求报文,然后通过集群内部协商判断由哪台服务器回应报文。
正常访问时数据流如下:
1、当VLAN 196的VRRP Master在C4500设备上时,Client发起的请求报文在C4500上做三层转发,流量通过PBR重定向到FW,FW会将报文再通过相同的接口送回C4500的VLAN 1194
2、流量回到思科设备再做三层转发,思科设备在做三层转发时做的两次查看,首先查找ARP表,确认二层头封装的目的MAC,然后查找MAC地址表,确认出接口,流量通过设备间Trunk送到S7506E
3、流量到达S7506E后做二层转发,由于NLB集群虚拟出的是组播MAC,S7506E的MAC表不学习该地址,请求报文被在VLAN 192内广播,所有的NLB集群成员服务器都收到了请求报文。
异常访问时数据流如下:
1、当VLAN 196的VRRP Master在S7506E上时,Client发起的请求报文在C4500上做二层转发,流量通过设备间Trunk送到S7506E,在S7506E上做三层转发,
2、流量到达S7506E后做三层转发,流量通过PBR重定向到FW,FW会将报文再通过相同的接口送回S7506E的VLAN 1194
3、流量回到S7506E后继续做三层转发,由于NLB集群虚拟出的是单播IP和组播MAC,默认情况下S7506E不学习MAC为组播的ARP,报文被丢弃。
根据NLB集群的要求,所有成员服务器必须收到Client请求报文;为此S7506E上需要配置组播ARP功能,内容包括:关闭ARP表项的检查功能、手工添加静态ARP表项(可选)和配置静态组播MAC地址表项。
实际场景中配置如下:
undo arp check enable
arp static 10.45.192.136 03bf-0a2d-c088
mac-address multicast 03bf-0a2d-c088 intreface GigabitEthernet2/0/16 vlan 192
mac-address multicast 03bf-0a2d-c088 intreface GigabitEthernet2/0/17 vlan 192
mac-address multicast 03bf-0a2d-c088 intreface GigabitEthernet2/0/20 vlan 192
配置该功能后,Client的请求报文被会复制到配置中的接口。
但是由于组播ARP功能与PBR/MQC重定向功能冲突,两者不能同时使能;实际网络中在S7506E上使用了PBR,将特定流量重定向到FW,且该PBR不能删除。
为此利用交换机广播未知单播报文的特性,实现NLB集群所有成员服务器收到Client请求报文的目的,调整解决方案如下:
1、在S7506E上增加两个环回接口,将服务器划入另一个VLAN(例如VLAN 300),不要配置interface vlan 300,将VLAN 300与VLAN 192通过环回口互联,环回口配置为access接口。
2、S7506E上配置如下:
undo arp check enable
arp static 10.45.192.136 03bf-0a2d-c088
此方案中服务器的网络设置不用调整,网关仍为interface vlan 192,Vlan 300为纯二层使用,不作在三层转发。
此时访问数据流如下:
1、当VLAN 196的VRRP Master在S7506E上时,Client发起的请求报文在C4500上做二层转发,流量通过设备间Trunk送到S7506E,在S7506E上做三层转发,
2、流量到达S7506E后做三层转发,流量通过PBR重定向到FW,FW会将报文再通过相同的接口送回S7506E的VLAN 1194
3、流量回到S7506E后继续做三层转发,S7506E查找ARP表,一次性确认二层报文封装目的MAC和出接口,通过环回口将流量送到vlan 300
4、流量到达vlan 300后,由于NLB集群虚拟出的是组播MAC,S7505E不学习该MAC地址,请求报文在vlan 300被广播,所有的NLB集群成员服务器都收到了请求报文。
与此同时,还有如下两种解决方案:
1:把NLB的网关放到FW上
3:在S7506E和NLB服务器之间增加一个二层交换机
在处理与第三方厂商技术配合使用的问题进,应该充分了解第三方厂商对于网络转发的要求,只有明确需求,才能有的放矢。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作