本帖最后由 Windroid 于 2018-8-2 18:34 编辑
项目背景 客户项目前期采购了WOC单臂模式部署用来与分支构建Sangfor VPN隧道并为内网视频会议加速以及传输分支大量视频流备份,之后因项目分支数急剧增加以及扩容,再次购买了相同型号的WOC准备采用双机部署实现高可用。 现有拓扑 电信移动双ISP进线,出口使用AD网关部署,下接NGAF透明部署,WOC单独一个VLAN,单臂部署。 问题 WOC双机目前只支持“主备”模式,对于大量分支接入的场景,最终还是只有一台能实现用户接入显然并不能有效解决问题,且备机的计算资源又浪费掉了 对于这个问题,提出了两种解决方案: 【方案一】将大量用户均分成两部分,然后两台WOC使用不同的WebAgent端口来实现将分支人为地分担到两台设备上接入 优点:初步解决了单台负载过高,并利用了所有计算资源(相对于主备模式双机),分担了WOC负载。 缺点:并没有实现真正地负载均衡以及高可用,如果接入用户恰好集中在一台,还是会造成资源浪费,当其中一台设备宕机时或不可用时,依然需要人工干预;已有地大量分支设备配置需要调整,工作量大,需要借助SC等其他设备。 【方案二】使用出口AD的应用负载功能,将两台WOC作为资源池中的两个节点,利用AD的智能调度功能,实现对WOC的负载均衡 优点:实现了多台WOC的“集群”功能,并有效分担接入负载,当其中一台WOC出现故障或离线时,隧道能够重新建立,保证业务的高可用;实现了WOC节点的简易横向扩展,当分支数继续增加时,理论上可以再增加同样的WOC进入“WOC池”,使WOC或其他VPN设备更容易应对大量分支或高并发场景。 缺点:由于WOC并非真正意义上的了解到自己在“集群”当中,因此关于类似抢占性等高可用特性均不能实现,在发生切换后,除非且换后设备也发生故障,否则隧道将一直在切换后设备上保持;由于WOC目前不支持OSPF等高级动态路由特性(仅有限支持RIPv2),因此VPN路由的问题将成为一大挑战。
方案二拓扑
方案二实现步骤 先按WOC单臂部署流程正常配置WOC 1、确认硬件型号,固件版本等基本信息,一致后从一台设备中导出配置并在另一台设备上导入,保证两个WOC“节点”配置一致。 2、分别修改LAN口地址(注意:LAN口地址必须为标准的有类地址,RIP无法在采用了VLSM或CIDR的子网内运行,如:172.16.5.0/24这样的子网,但172.16.5.0/16则可以),以及设备名称,以方便辨认。 3、配置VPN服务端;填写需要宣告给分支的本地子网列表。
4、添加接入用户,接入ACL策略等(略)
现在开始配置AD 先按AD标准网关部署流程,正常配置AD,确保多链路接入均正常,内网正常访问Internet 5、在【应用负载】内分别新建类型为TCP和UDP的服务Sangfor VPN,端口号即WebAgent端口,原因是VPN接入时既可以使用TCP也可以使用UDP,在不清楚分支接入方式时,可以在WOC VPN状态里查看
6、配置地址组,这部根据需要配,没啥好说的 7、配置会话保持,这里选择SoureIP(或单独一个针对接下来虚拟服务的其他会话保持策略),考虑到隧道不应当轻易改变,因此时间调到最大了,也可根据需要调整其他合适的值 8、新建一个针对WebAgent的节点监视器,让其监视WebAgent端口就行了,其他保持默认 9、新建结点池,并将两个WOC作为节点加入结点池,关联上监视器。其中:节点选择策略选择哈希,哈希字段为源IP地址(SRC_IP),会话保持选择源IP地址(sourceip)
10、新建前置调度策略,将对应的服务与结点池关联
11、最后新建要发布的虚拟服务,考虑到VPN隧道建立只是单纯的下四层应用,因此我选择了“四层服务”,其他两种可行性没有尝试。注意,不要使用自动SNAT,否则由于AD的代理特性,WOC上的VPN状态所获得的对端公网IP将全部为AD内网口地址。此外,这里实际测试发现即使不勾选前置调度策略也不影响。
以上配置全部完成后,隧道将会建立。此时可以通过在AD上查看对应的节点会话数或WOC上的VPN接入状态检查调度情况和接入情况。但是,问题并没有就此结束,由于WOC设备和其他要访问的业务服务器跨越了三层环境,因此隧道的建立并不能保证业务可以正常访问。分析如下: 由于隧道建立的WOC不确定,因此每个WOC从各个分支学习到的VPN路由均不相同,对于核心交换来说,其并不知道具体的VPN路由信息,因此无法使用静态路由将到VPN分支的路由指向某个具体的WOC,在中心端访问分支时,会出现问题。即使VPN分支的网段已规划并容易汇总,但是哪怕使用汇总后的路由,核心交换也不能确定指向,若使用优先级相同的“浮动路由”——即将到汇总后的VPN路由分别指向两台WOC的LAN口地址,则会导致所有接入分支间歇性丢包。 因此这种集群部署的场景,静态路由将无能为力,而WOC支持RIPv2动态路由协议,下面就用该协议解决路由问题。
实现思路: 由于VPN路由所在设备的不确定性,使用静态路由已不能满足需求,而WOC唯一支持的动态路由协议仅有RIPv2,因此考虑在两台WOC开启RIP功能,并周期性将各自的VPN路由重分发到核心网络内,同时,RIPv2支持触发更新机制,当建立分支隧道的WOC发生变动或分支离线时,新的路由信息将被自动通告,此后,核心交换将会通过周期性发送的RIP通告,自动学习到去往VPN网段的下一跳接口(WOC 1或WOC 2)如图: 12、分别登录WOC,在【系统】-【路由设置】-【动态路由】内,勾选“启用路由信息协议(RIP)”。注意这里的IP地址应填写LAN口对端设备的地址,也就是RIP邻居的地址(如果填写0.0.0.0,RIP Repose报文将以广播报文发送,但RIPv2规定使用组播地址224.0.0.9,因此广播是不合理的) 勾选“触发定时更新”,这里默认的时间是20s,但RIPv2通常的更新周期是30s,因此这里最好使用30s。 到这里,需要400或者原厂工程师们协助一下,进入后台修改WOC RIP配置文件,将其中关于开销的值设置为其他值,因为WOC默认构造的RIP报文,Metric=0,对于RIP来说,使用跳数来作为Metric值,Metric应在1~15范围内,0显然是不合理的,并不会被对端设备采纳。配置完成后,单击【保存并生效】,重启设备路由。
13、接下来需要在核心交换上连WOC的vlan接口上也启动RIP,以华为三层交换机为例,配置命令如下
[Huawei-Vlanif] interface Vlanif xxx #进入对应的VLAN接口配置视图 [Huawei-Vlanif100] rip 1 #启动RIP进程 [Huawei-rip-1] version 2 #配置RIP版本为RIPv2 [Huawei-rip-1] undo summary #关闭路由自动汇总,这步骤很关键,防止WOC通告过来的分支路由被核心交换机自动汇总 [Huawei-rip-1]network xxx.xxx.xxx.xxx #在对应的接口上启动RIP,这里填写对应的VLAN接口地址(与WOC同网段的vlan子网)
14、全部配置完成后,使用display ip routing-table protocol rip命令即可查看到交换机从WOC上学习到的RIP路由,如下图: 观察NextHop,发现这些路由都集中在两台WOC上,说明成功学习到了路由信息。以后分支与总部的访问,数据包到核心后,将会根据该路由表,决定具体应交由哪个WOC处理 至此,采用AD实现WOC集群部署就全部完成,现在可以登录AD查看节点状态,并检查中心与分支的通信情况了 AD:
WOC:
其他说明与建议 1、RIP是很古老的动态路由协议,在目前的组网方案中已几乎不再使用。且周期性地交换整张路由表,对设备性能和网络带宽的占用本身也不能被忽视。 2、基于1,希望未来的WOC或其他VPN产品也加入对现代动态路由协议(OSPF、BGP、IS-IS等)的支持,以便产品更好地适应中大型组网或高并发多分支组网的需要。 3、WOC的RIP配置文件关于开销的默认配置有误,导致在WebUI下即使全部正常配置,RIP也不能正常启动,需要借助原厂技术支持才能解决。 4、采用这种方案,WOC的加速功能可能会失效(并未做相关测试),因为对端需要配置中心的WOC内网地址,但由于集群的存在,该地址不确定,需要使用WOC加速功能的场景谨慎使用。 |