奇云VPC网络负载均衡服务的实现浅析

Posted 360奇云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇云VPC网络负载均衡服务的实现浅析相关的知识,希望对你有一定的参考价值。



奇云VPC网络负载均衡服务

实现浅析





进入正题之前,我们先介绍一下负载均衡及VPC网络:



1.负载均衡


  负载均衡是对多台服务器进行流量分发的服务,用以扩展应用系统对外服务能力,通过消除单点故障提升应用系统的可用性。



2.VPC网络及360奇云的实现


  传统的经典网络,所有租户共享公共网络资源池,租户之间未做任何逻辑隔离。租户的内网IP由系统统一分配,租户IP无法重叠。






在之前的文章中,已经介绍了360奇云VPC架构的演进,

今天我们讨论的方案实现也是基于阶段二的VPC架构来进行的。



01



360奇云目前的VPC架构是基于硬件EVPN+VxLAN,主要改变如下:


1. VxLAN的VTEP从软件的OVS移交到接入交换机,减少OVS encap/decap VxLAN包带来的计算节点CPU消耗;


2. 接入交换机充当虚拟化网络的分布式网关,使用VRF隔离不同租户;



  结合以上两点,我们在设计适用VPC的负载均衡服务时,引入l3-vni来唯一标识一个VPC vip,并为VPC RS增加l2-vni, hypervisor-ip, mac 等属性来唯一标识一个VPC RS。

 

  另外,在计算节点引入一个vgw.ko内核模块,用于设置VPC VIP ARP 代理以及对负载均衡流量进行VxLAN encap/decap;



  其总体架构如下图所示:


奇云VPC网络负载均衡服务的实现浅析





02



以创建一个VIP和RS均为VPC IP为例,其创建流程及数据流如下所示:


  通过openstack API 创建一个VPC VIP,并为其关联后端服务器后。openstack会通知所有相关的计算节点加载该VIP的ARP代理。


奇云VPC网络负载均衡服务的实现浅析



  LB-Agent通过监听配置的改变,生成keepalived.conf并下发到所有的负载均衡服务器生效。

 

  负载均衡服务器通过gobgp,向VIP对应的VRF通过TYPE-5路由(IP prefixes route),将目的为VPC VIP的流量引到负载均衡服务器。

 

  负载均衡器收到到VIP的流量后,调度选择后端服务器,做DNAT,并根据keepalived中RS配置的l2-vni, hypervisor, mac信息,封装VxLAN包,发送到对应VPC RS所在的计算节点,计算节点上的vgw.ko模块解封装VxLAN包,将流量发送给相应的虚机,并记录tunnel封装信息。

 

  当RS回包时,首先查找tunnel sesion,如果不存在,则说明不是负载均衡服务器分发过来的流量,走正常的虚拟化网络路径出去;如果存在,则按照tunnel session,封装VxLAN包,发送到对应的负载均衡服务器,由负载均衡服务器解封装,做SNAT,并回给client。





END







扫描二维码

掌握产品动态和技术好文

极速稳定的云服务

就在360奇云!


以上是关于奇云VPC网络负载均衡服务的实现浅析的主要内容,如果未能解决你的问题,请参考以下文章

im即时通讯开发:浅析分布式架构下的负载均衡技术

AWS ELB - 多 VPC 负载均衡

网络负载均衡的实现过程

如何配置 AWS 网络负载均衡器以使用 Terraform 路由 HTTPS 流量?

在实例安全组的入站部分使用 VPC 的 CIDR 会阻止负载均衡器到达它

nginx浅析3-负载均衡