一种高性能且高可用的容器负载均衡实现方法技术

技术编号:16975051 阅读:50 留言:0更新日期:2018-01-07 09:50
本发明专利技术提供一种高性能且高可用的容器负载均衡实现方法,包括应用层、Tengine负载层、LVS负载层和注册中心,其中Tengine负载层和LVS负载层设置成双层分流架构,极大提高整个集群系统的吞吐量的同时支持丰富的负载均衡策略;通过虚拟IP为客户端提供唯一且稳定的入口,并保证了负载入口的高可用。应用层允许部署多个应用,每个应用均配套一个应用代理程序;Tengine负载层允许部署多个Tengine,每个Tengine均配套一个Tengine代理程序;LVS负载层允许部署多个LVS,每个LVS均配套一个LVS代理程序。每层的代理程序配合注册中心实现服务注册和发现的能力,使整个架构具有横向扩展的能力。

【技术实现步骤摘要】
一种高性能且高可用的容器负载均衡实现方法
本专利技术涉及一种双层分流架构的容器负载均衡实现方法。
技术介绍
随着Docker容器技术的火热,不论是电信行业还是互联网行业都使用Docker技术将其应用容器化运行。对于大规模容器在线上系统如何管理,业内的解决方案主要有三种,分别是DockerSwarm,GoogleKubernetes和ApacheMesos。其中最热门的方案是Google的Kubernetes,本专利技术将针对Kubernetes在实现容器的负载均衡方面进行改进,提出一种更高性能且高可用的容器负载均衡实现方法。Kubernetes提供Service为后端的多个应用容器提供反向代理和负载均衡能力,但是Kubernetes提供的这种方式存在一些不足点:对外部应用提供的入口不唯一且不稳定。Kubernetes的Service方案以宿主机IP和宿主机Port方式对外提供服务,如果提供IP的宿主机宕机了,需要客户端再选择另外可用的宿主机IP。有限的负载均衡策略导致应用场景少。Kubernetes的Service方案只支持轮询和IP_HASH(源地址散列调度),无法基于URL/HEADER/COOKIE等转发策略。负载转发效率低,不适合大规模应用集群。Kubernetes的Service通过Iptables的NAT转换实现请求转发,对于大规模应用的请求负载情况下,该转发模式将成为性能瓶颈。针对以上缺点,本专利技术对外部应用提供唯一且稳定的入口,适用于大部分应用场景的负载均衡策略,适用于大规模应用集群的高性能负载转发能力。
技术实现思路
本专利技术要解决的技术问题,在于提供一种高性能且高可用的容器负载均衡实现方法,通过虚拟IP为客户端提供唯一且稳定的入口,并通过LVS负载均衡器和Tengine负载均衡器实现双层负载分流请求。本专利技术是这样实现的:一种高性能且高可用的容器负载均衡实现方法,包括应用层、Tengine负载层、LVS负载层和注册中心,其中Tengine负载层和LVS负载层设置成双层分流架构;所述应用层允许部署多个应用,每个应用均配套一个应用代理程序;所述Tengine负载层允许部署多个Tengine,每个Tengine均配套一个Tengine代理程序;所述LVS负载层允许部署多个LVS,其中只有一个LVS是Active激活状态,其余的LVS都是Standby备用状态,每个LVS均配套一个LVS代理程序;每层的代理程序配合注册中心实现服务注册和发现的能力,使整个架构具有横向扩展的能力。所述应用代理程序对相应的应用进行健康监测并实时将自身健康状态更新到注册中心;所述Tengine代理程序对相应的Tengine进行健康监测并实时将自身健康状态更新到注册中心,同时实时获取注册中心的应用状态变化,以更新Tengine的负载配置文件,以保证新增的应用能及时加入Tengine的负载列表,不可用的应用及时从Tengine负载列表中移除;所述LVS代理程序对相应的LVS进行健康监测并及时切换LVS的Active角色,允许健康的LVS抢占虚拟IP以此对外提供服务,所述虚拟IP则作为系统的唯一入口;所述LVS代理程序同时实时获取注册中心的Tengine状态变化,以更新LVS负载配置文件,以保证新增的Tengine能及时加入LVS的负载列表,不可用的Tengine及时从LVS负载列表中移除。所述应用代理程序包括健康监测模块和服务注册模块:所述健康监测模块在应用启动或运行过程中以轮询的方式请求应用开放的服务端口,如果请求应答成功则认为应用服务可用,否则认为应用服务不可用,并将监测结果通知所述服务注册模块;所述服务注册模块收到监测结果后,获取该应用的相关信息,将状态信息写入所述注册中心。所述Tengine代理程序包括健康监测模块、服务注册模块、服务发现模块以及配置更新模块:所述健康监测模块在Tengine启动或运行过程中以轮询的方式请求Tengine开放的服务端口,如果请求应答成功则认为Tengine服务可用,否则认为Tengine服务不可用,并将监测结果通知所述服务注册模块;所述服务注册模块收到监测结果后,获取该Tengine的相关信息,将状态信息写入所述注册中心;所述服务发现模块以长连接方式连接所述注册中心,实时监听所述注册中心推送的应用状态更新事件,在收到应用状态更新事件通知后将应用状态信息传递给所述配置更新模块;所述配置更新模块收到应用状态信息后更新该Tengine的负载配置文件,并调用该Tengine的加载配置命令以触发该Tengine的配置热加载,当配置热加载被重新加载后,该Tengine的后端应用列表也被更新,新增的应用加入Tengine的负载列表,不可用的应用及时从Tengine的负载列表移除。所述LVS代理程序包括健康监测模块、服务切换模块、服务发现模块以及配置更新模块:所述健康监测模块在LVS启动或运行过程中以轮询的方式请求LVS开放的服务端口,如果请求应答成功则认为LVS服务可用,否则认为LVS服务不可用,并将监测结果通知所述服务切换模块;所述服务切换模块收到监测结果后,如果LVSActive变为不可用,则会触发LVSStandby抢占虚拟IP并成为LVSActive对外提供服务;所述服务发现模块以长连接的方式连接注册中心,实时监听注册中心推送的Tengine状态更新事件,在收到Tengine状态更新通知后将Tengine状态信息传递给配置更新模块;所述配置更新模块收到Tengine状态信息后更新该LVS的负载配置文件,并调用该LVS的加载配置命令以触发该LVS的配置热加载,当配置热加载被重新加载后,该LVS的后端Tengine实例列表也被更新,新增的Tengine加入LVS的负载列表,不可用的Tengine及时从LVS的负载列表中移除。所述Tengine是工作在网络七层协议中的应用层的负载均衡器,所述LVS是工作在网络七层协议的传输层的负载均衡器,所述注册中心是用于存储数据的软件,提供分布式的读写能力,并支持主动推送状态给客户端。本专利技术具有如下优点:1、对外部应用提供唯一且稳定的入口。本专利技术基于LVS使用虚拟IP作为整个系统唯一入口。LVS代理程序的服务发现模块和配置更新模块使LVS具备及时更新后端可用Tengine实例的能力,健康检测模块和服务切换模块保证了LVS入口的稳定性。2、丰富的负载均衡策略适用于大部分应用场景。本专利技术基于Tengine提供的丰富负载均衡策略,可以根据网络协议层七层的URL/HEADER/COOKIE/浏览器类别、语言来决定是否要进行负载均衡以及负载均衡的策略,使得整个网络更加智能化。Tengine代理程序的服务发现模块和服务配置更新模块使Tengine具备及时更新后端可用应用实例的能力,健康监测和服务注册模块使Tengine具备横向扩展能力。3、高性能的负载转发能力适用于大规模应用集群。本专利技术基于LVS的DR转发模式利用Internet服务的非对称特点,可以支持几百万个并发连接。附图说明下面参照附图对本专利技术作进一步的说明。图1为本专利技术方法的双层分流架构图。图2为本专利技术方法中Tengine负载层的工作原理流程框图。图3为本专利技术方法中LVS负载层的工作原理流程框图。具体实施方式如本文档来自技高网...
一种高性能且高可用的容器负载均衡实现方法

【技术保护点】
一种高性能且高可用的容器负载均衡实现方法,其特征在于:包括应用层、Tengine负载层、LVS负载层和注册中心,其中Tengine负载层和LVS负载层设置成双层分流架构;所述应用层允许部署多个应用,每个应用均配套一个应用代理程序;所述Tengine负载层允许部署多个Tengine,每个Tengine均配套一个Tengine代理程序;所述LVS负载层允许部署多个LVS,其中只有一个LVS是Active激活状态,其余的LVS都是Standby备用状态,每个LVS均配套一个LVS代理程序;每层的代理程序配合注册中心实现服务注册和发现的能力,使整个架构具有横向扩展的能力。所述应用代理程序对相应的应用进行健康监测并实时将自身健康状态更新到注册中心;所述Tengine代理程序对相应的Tengine进行健康监测并实时将自身健康状态更新到注册中心,同时实时获取注册中心的应用状态变化,以更新Tengine的负载配置文件,以保证新增的应用能及时加入Tengine的负载列表,不可用的应用及时从Tengine负载列表中移除;所述LVS代理程序对相应的LVS进行健康监测并及时切换LVS的Active角色,允许健康的LVS抢占虚拟IP以此对外提供服务,所述虚拟IP则作为系统的唯一入口;所述LVS代理程序同时实时获取注册中心的Tengine状态变化,以更新LVS负载配置文件,以保证新增的Tengine能及时加入LVS的负载列表,不可用的Tengine及时从LVS负载列表中移除。...

【技术特征摘要】
1.一种高性能且高可用的容器负载均衡实现方法,其特征在于:包括应用层、Tengine负载层、LVS负载层和注册中心,其中Tengine负载层和LVS负载层设置成双层分流架构;所述应用层允许部署多个应用,每个应用均配套一个应用代理程序;所述Tengine负载层允许部署多个Tengine,每个Tengine均配套一个Tengine代理程序;所述LVS负载层允许部署多个LVS,其中只有一个LVS是Active激活状态,其余的LVS都是Standby备用状态,每个LVS均配套一个LVS代理程序;每层的代理程序配合注册中心实现服务注册和发现的能力,使整个架构具有横向扩展的能力。所述应用代理程序对相应的应用进行健康监测并实时将自身健康状态更新到注册中心;所述Tengine代理程序对相应的Tengine进行健康监测并实时将自身健康状态更新到注册中心,同时实时获取注册中心的应用状态变化,以更新Tengine的负载配置文件,以保证新增的应用能及时加入Tengine的负载列表,不可用的应用及时从Tengine负载列表中移除;所述LVS代理程序对相应的LVS进行健康监测并及时切换LVS的Active角色,允许健康的LVS抢占虚拟IP以此对外提供服务,所述虚拟IP则作为系统的唯一入口;所述LVS代理程序同时实时获取注册中心的Tengine状态变化,以更新LVS负载配置文件,以保证新增的Tengine能及时加入LVS的负载列表,不可用的Tengine及时从LVS负载列表中移除。2.如权利要求1所述的一种高性能且高可用的容器负载均衡实现方法,其特征在于:所述应用代理程序包括健康监测模块和服务注册模块:所述健康监测模块在应用启动或运行过程中以轮询的方式请求应用开放的服务端口,如果请求应答成功则认为应用服务可用,否则认为应用服务不可用,并将监测结果通知所述服务注册模块;所述服务注册模块收到监测结果后,获取该应用的相关信息,将状态信息写入所述注册中心。3.如权利要求1所述的一种高性能且高可用的容器负载均衡实现方法,其特征在于:所述Tengine代理程序包括健康监测模块、服务注册模块、服务发现模块以及配置更新模块:所述健康监测模块在Tengine启动或运行过程中以轮询的方式请求Tengine...

【专利技术属性】
技术研发人员:魏存涛许志军卓佐铃
申请(专利权)人:福建富士通信息软件有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1