XX 电信原采用单台负载均衡,对2VPDN的路由器做负载均衡,其拓扑结构如下:

电信VPDN负载均衡双机解决方案_负载均衡

负载均衡设备上划分了2个网段,以串接方式部署,上联27610路由器,下联两台LNS VPDN路由器。其中,上联的27610运行VRRP协议,负载均衡将外向的默认路由指向其VRRP的浮动IP27610也将需要的路由指向负载均衡设备上联网络的接口IP。下联网段的2LNS路由器的默认路由,均指向负载均衡设备下联网段的接口IP

现在的环境下,从公网来的请求,经过27610以后,访问到负载均衡设备上联网段上的配置的虚拟服务器的虚IP地址,负载均衡设备把命中虚IP的请求,将目标地址从虚IP更改为2VPDN路由器的接口IP,然后分发到下联的2VPDN服务器接口IP上。


现在电信新增一台负载均衡设备,计划和原有的一台形成双机部署方式,拓扑图如下:

电信VPDN负载均衡双机解决方案_负载均衡_02

但是,现在问题却出来了,下联的两台VPDN路由器需要采用双线方式分别连接2台负载均衡设备,这2VPDN设备本身不支持Vlan,所以每台VPDN路由器必须在原有的一个上联3层接口的基础上,多添加一个上联的3层接口,分别用2个不同网段的接口来连接不同的负载均衡设备。按照拓扑结构需求,2台负载均衡设备的下联网段为不同的2个网段,原有的负载均衡设备下联接口网段不变,新增的负载设备设备下联网段为新增的3层网段。


这种结构有如下2个问题:

1、2台负载均衡设备下联网段不是一个网段,且poolmember的配置也不一样(分别是2个网段的VPDN路由器接口IP),这种结构做传统的HA是有问题的。(传统的HA要求2台设备网段要一样,所有serverpoolvirtaulserver配置都要完全一样)


2、2VPDN路由器必须同时独立工作。由于2台负载均衡设备下联网段不是同一个网段,所以没法采用双机的浮动IP工作方式,这样2VPDN路由器的默认路由的指定就是个问题了,只能采用2条等价路由的方式指向2台负载均衡设备的下联接口IP。这样设置的后果就是,很可能从一台负载均衡(主机)发送过来的请求,VPDN路由器回包的时候会将应答发回另一台负载均衡设备上(备机),而同时伴随着的,应答包的源IP地址也会改变(从VPDN路由器哪个接口出去,源IP就会是哪个接口的地址),这样应用会出现问题。


这次碰到的问题实际上是纯网络的问题,如何在各种环境下部署也是ADN经常面临的问题之一。


经过详细的考虑后,通过2步解决该问题:


1、2台负载均衡设备上分别添加另一台设备的下联IP网段,而2台设备互联的链路上启用802.1Q封装,将2个网段打通,这样一来就解决了双机环境下2台设备网段不一样的问题,同时因为和2个下联网段都相连(除了自身直连的网段,还通过802.1q通过2台设备互联的链路连接另一个网段),所以每台设备上可以配置相同的member了。这样一来,就完全解决了下联网段不一样,member不一样的问题,从而可以直接以传统双机模式部署了。


2、考虑到VPDN路由器应答包从2条等价默认路由随机返回导致应答包源IP可能会改变的问题,用户在2VPDN路由器上启用loopback地址,该loopback需要配置成和负载均衡设备上应用的虚拟IP一样,而同时在负载均衡设备需要启用DSR功能(禁用目标IP地址转换),这样VPDN路由器回包的时候,会以loopback地址为源IP进行应答,这样就不存在因为返回路由不一样而引起的源IP地址改变从而引起的session问题。