赞
踩
之前介绍的很多互联网企业分布式负载均衡器,主流的方案都是两面三层架构:
1)两面
2)三层
本文介绍的Azure的Ananta公有云LB通过深入分析公有云数据流的特点,同样是基于上述三层架构,但是将部分第二层Multiplexer的能力后移到第三层在服务端点进行重点处理,形成了高可用、可扩展的公有云负载均衡器。详细的内容可以在微软Azure团队发表的Paper《Ananta: Cloud Scale Load Balancing》上看到
转载自https://blog.csdn.net/cloudvtech
可以看到,公有云供应商的数据中心的流量的几个基本特点:
转载自https://blog.csdn.net/cloudvtech
从架构图可以看到Ananta也是采用分布式负载均衡器典型的2面三层设计,在控制面,由AM(Ananta Manager)进行路由管理、转发选择和安全监控,在数据面由Mux和HA(Host Agent)组成,Mux进行目的地选择和IP-over-IP封装,HA进行IP解封以及NAT操作。AM和Mux都是集群化部署,而HA是分布在每个宿主机Hypervisor上的一个模块。
转载自https://blog.csdn.net/cloudvtech
外部发起的连接请求进入到路由器,经过ECMP协议被转发到Mux Pool里面的某一个Mux;之后由该Mux从对应后端服务列表里面选择一个VM IP,然后进行原始包的封装(IP-in-IP)并发送给该VM对应的IP,这种封装模式跨越了L2流通域,只要具有L3的连通性就可以;HA接收到数据包之后会先进行解包,发送给VM,处理之后再返回给HA;HA进行SNAT,将VIP和端口作为源数据包地址rewrite返回数据包,并且进行DSR,不经过Mux直接返回给客户端。
内部发起的外连请求在向外走的过程中,需要先将该数据包放入HA的处理队列,然后HA会向控制面AM申请VIP和Port,待AM返回之后进行SNAT操作,用申请到的VIP和Port rewrite初始数据包,直接发送给目的server,目的server的回包会走4.1类似的流程。这里的问题在于初始建立连接会经历控制面的VIP申请流程,存在一定的建立时延,Ananta采用了包括VIP+Port复用、一次申请返回多个Port等方式进行了优化。
Ananta基本上不处理DC内部流量, 这部分流量主要由Mux进行简单处理之后,后续由HA直接进行直接沟通;初始连接的建立需要依赖Mux,后续当HA感知对方服务DIP的细节之后,会进行直接数据连接;这种方式使得DC内部流量基本上不需要消耗Ananta的资源。当然,这种负载均衡放弃管理流量的管理方式,也会存在一些风险,需要进行适当权衡。
每个Ananta实例包含一系列的Muxes Pool,这个Pool里面的Mux具有同等的配置和能力,响应同一批VIP的服务请求。Mux要处理的工作包括:
Azure号称它的HA设计是Ananta架构的最大特色,可以从这段原话略窥一二:
A differentiating component of the Ananta architecture is an agent, called Host Agent, which is present on the host partition of every physical machine that is served by Ananta. The Host Agent is the key to achieving DSR and SNAT across layer-2 domains. Furthermore, the Host Agent enables data plane scale by implementing Fastpath and NAT; and control plane scale by implementing VM health monitoring.
HA主要的工作包括:
AM是Ananta的控制面,通过Paxos实现高可用,primary AM进行所有的管理操作,包括VIP+Port分配和管理,主要的服务对象是Mux和HA。
转载自https://blog.csdn.net/cloudvtech
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。