背景:随着云计算和网络技术的不断发展,越来越多的业务有着上云的需求。上云后,业务能够使用云上已有的服务提升开发效率,也可以利用云平台的弹性伸缩特性,及时应对业务的负载变化。实际生产环境中,用户的服务一部分部署在云平台上,另一部分部署在自己的IDC机房。用户有从VPC访问IDC中服务的需求,且IDC内的服务需要支持负载均衡。为了实现IDC的平滑上云,必须打通VPC网络到IDC机房经典网络间的互联互通,其中最核心的设备是VXLAN网关,用来完成VXLAN网络和VLAN网络间的映射。虽然可以通过交换机完成VXLAN到VLAN的转换,但是业务的负载均衡需求无法满足。因此,360虚拟化团队根据业务需求,决定自研CLOUD-DPVS设备支持负载均衡、VXLAN隧道、BFD探活等功能,来实现VPC网络到IDC网络的互联互通。
CLOUD-DPVS网关整体架构
CLOUD-DPVS工作在VXLAN网络和VLAN网络的中间层,来自VPC网络的用户请求被引流到CLOUD-DPVS网关,进行VXLAN解封装和SNAT/DNAT处理后,请求被发送至IDC内服务所在的机器上。回包同样会经过CLOUD-DPVS进行SNAT/DNAT后,进行VXLAN封装发送至VPC,如下图1所示:
图1
CLOUD-DPVS网关整体架构选型
为了满足高性能,多主部署和负载均衡等需求,360虚拟化团队在经过调研后决定在DPVS的基础上进行开发。
DPVS是一个基于DPDK软件库加速LVS的高性能负载均衡器,通过使用网卡用户态驱动、零拷贝、大页内存和队列绑定等技术解决了LVS的性能瓶颈,同时保留LVS的负载均衡逻辑。基于DPVS,我们只需要在现有逻辑的基础上增加VPC属性,支持VXLAN封装解封装等功能,就可以为每个VPC业务提供虚拟IP来访问IDC内的服务。选型完成后随即启动了cloud-dpvs的项目,其核心架构如下图2所示:
图2
CLOUD-DPVS网关方案概述
1.高可用方案的改进
传统的高可用方案大都采用 BGP+ECMP 的模式构建集群,用 ECMP 将数据包散列到集群中各个节点上,通过 BGP 协议保证单台机器故障后将这台机器的路由动态剔除出去,由此做到了动态 failover,组网结构如下图3所示:
图3
服务器通过 BGP 将 VIP 发布到网络中,交换机学习到 VIP,形成 BGP 等价多路径路由(ecmp),然后根据哈希因子计算得到 hash lb