一种多云场景下的集群编排系统转让专利

申请号 : CN202110192828.1

文献号 : CN113067850B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吕冬兵李英俊李志伟杜晋秀张业达符敦威张兴峻阿尔曼阳万里肖志华

申请人 : 麒麟软件有限公司

摘要 :

本发明涉及一种多云场景下的集群编排系统,包括编排入口、编排引擎模块、告警模块及云代理模块,编排入口用于接收用户请求,并将用户请求发送给编排引擎模块;告警模块,接收消息队列上的用户请求,管理集群告警,并根据告警策略,定期获取各个云上的所有的集群节点的监控信息,通知编排引擎模块执行相应的操作;编排引擎模块,接收编排入口和告警模块的请求,执行具体的集群操作;云代理模块,接收告警模块或者编排引擎模块的请求,调用各个云的接口,获取各集群节点的监控数据及健康状态。本发明实现了应用集群的跨云管理,比如集群的编排、生命周期管理、高可用、自动伸缩、负载均衡等功能。

权利要求 :

1.一种多云场景下的集群编排系统,其特征在于:根据集群编排的需求,通过模块化技术,制定出多种用于集群编排的模块,利用各模块之间的相互关联,实现集群的编排、生命周期管理、高可用、自动伸缩以及负载均衡的功能;

包括编排入口、告警模块、编排引擎模块及云代理模块,其中:

编排入口,用于接收用户请求,并将用户请求通过消息队列发送给编排引擎模块;

告警模块,负责设置集群的告警策略,包括告警条件以及告警后需要执行的集群操作,告警模块监听消息队列,接收消息队列上的用户请求,管理集群告警,周期性地通过云代理模块获取各个云上所有集群节点的监控信息,结合集群的告警策略,评估是否告警或通知编排引擎模块执行相应的操作;

编排引擎模块,用于监听消息队列,接收编排入口和告警模块的请求,执行具体的集群操作,集群操作包括集群的创建、扩容、缩容、恢复、重建;

云代理模块,用于接收告警模块或者编排引擎模块的请求,调用各个云的接口,操作各个云上的集群节点,同时获取各集群节点的监控数据及健康状态;

该集群编排系统的集群编排过程为:

S1、云代理模块与各个云之间采用插件形式管理,利用云代理模块获取各个云的详细信息;

S2、注册镜像、网络,以及他们在各个云中的映射关系;

S3、通过语法定义yaml格式的集群模版,保证集群中的节点拥有相同的配置;

S4、通过集群模版创建集群、设置集群的容量,以及多云调度策略;

S5、按需为集群设置告警策略,并绑定告警策略所需的具体执行策略,具体执行策略包括健康策略、负载均衡策略、伸缩策略,用以分别实现集群的HA、负载均衡、自动伸缩。

2.根据权利要求1所述的一种多云场景下的集群编排系统,其特征在于:告警模块中的告警策略是指,当集群的综合负载高于或低于制定的阀值且持续一定的时间时,通知编排引擎模块执行扩容/缩容操作;当集群中有节点宕机且持续一定的时间时,通知编排引擎模块执行相应的恢复/重建操作。

3.根据权利要求1所述的一种多云场景下的集群编排系统,其特征在于:还包括定时器模块,用于管理系统中的定时任务,当用户通过编排入口创建定时任务后,定时器模块维护一个任务队列,并将到期的任务通过消息队列发送给编排引擎模块执行具体的集群操作。

4.根据权利要求1所述的一种多云场景下的集群编排系统,其特征在于:

步骤S4中,多云调度策略需要设置各个云的权重W以及容量N,多云调度策略包括贪婪策略或机会策略,其中:贪婪策略每次增加节点时选择权重W高的云,直到达到该云的容量N,而删除时选择权重W低的云;

机会策略则基于各个云的权重W加权求和后计算得到的概率F来调度,调度公式如下:

5.根据权利要求1所述的一种多云场景下的集群编排系统,其特征在于:步骤S5中,健康策略是指,告警模块周期性地通过云代理模块获取集群节点在各个云中的健康状态,一旦检测到节点宕机并持续一段时间,则通知集群引擎执行相应的恢复策略;

相应的,恢复策略是指,利用指定的任务流进行节点的恢复,指定的任务流包括重启、迁移、重建、切换云平台,即节点恢复时首先尝试重启节点,重启不能恢复则迁移节点到其它物理节点,迁移不能恢复则删除并重建节点,如果在一个云上始终不能恢复,则将此云标记为不可用,并调度到其它的云重建节点。

6.根据权利要求1所述的一种多云场景下的集群编排系统,其特征在于:步骤S5中,伸缩策略是指,告警模块周期性地通过云代理模块获取集群中的节点在各个云中的近期监控数据,包括平均CPU利用率C,平均内存利用率M,平均磁盘IO负载D,平均网络负载N,然后结合多云调度策略中为各个监控项设置的权重W,计算集群的综合负载Z,计算公式如下:如果综合负载Z高于事先设置的阀值并且持续一定的时间,则执行相应的集群扩容策略,反之执行相应的集群收缩策略。

7.根据权利要求1所述的一种多云场景下的集群编排系统,其特征在于:步骤S5中,负载均衡策略是指通过联合专门的负载均衡组件,指定所需的绑定配置,待绑定完成后,负载均衡组件自动创建相应的负载均衡器,同时集群中的节点也加入到负载均衡器中,自动伸缩时也会相应的更新负载均衡器。

8.根据权利要求1所述的一种多云场景下的集群编排系统,其特征在于:还包括步骤S6,S6、按需为集群绑定定时任务,计划内执行集群的定时操作,并设置定时策略,定时策略可以创建一个或多个定时任务绑定到集群上,定时执行集群的操作。

说明书 :

一种多云场景下的集群编排系统

技术领域

[0001] 本专利申请属于多云集群编排技术领域,更具体地说,是涉及一种多云场景下的集群编排系统。

背景技术

[0002] 近年来,随着云计算技术的不断发展,国内外云计算服务提供商的不断崛起,逐渐形成了一个多云的格局。
[0003] 随着云计算市场的发展,不少企业都开始选择业务上云,并且企业并不只是采用一种云,而是采用多种云相互结合的方式,例如,公有云、私有云、混合云等等。企业采用多云方式已发展为主流趋势。
[0004] 出于各种考虑(成本、合规性、避免厂商锁定等因素),如今企业单独使用公用云/私有云的场景已经越来越少,绝大部分的企业更倾向于使用多云。根据 Flexera公司2020年云计算调查报告显示,绝大多数的企业(93%)使用多种云,这个数字较2019年增长9%,企业平均会使用超过4种不同的云用于生产环境,其中2.2种公有云,2.2种私有云,同时还会试验性地使用其他4种云。
[0005] 在多云(IAAS场景)的使用模式下,应用集群如何能够像在传统模式下一样方便地管理,同时又能利用多云的特性做到跨云平台的集群编排,包括集群的负载均衡、高可用、自动伸缩等,这是现阶段用户关心的问题,也是多云环境下的难题。
[0006] 生产环境中,应用往往以集群的形式存在,集群少则几个节点,多则成千上万个节点。现有的集群编排系统/技术,大多是针对容器云场景(本发明主要针对IAAS场景,二者场景不同),其余的往往只考虑了单独的数据中心或者云平台,但如今绝大部分企业面对的都是多云的场景,没法做到跨云平台的集群编排、管理。
[0007] 中国发明专利“一种集群管理方法及管理系统”(申请号CN201911243130.7),该发明提供一种集群管理方法及管理系统,通过容器网关,采用唯一入口地址来实现对多个集群的访问,因此,无需维护多个集群的相关信息。但是此发明专利主要针对的是K8S(K8S是kubernetes的简称, kubernetes是一个开源的、用于管理平台中多个主机上的容器化的分布式系统平台,可以实现对集群的管理)容器云平台,且不支持多云。

发明内容

[0008] 本发明需要解决的技术问题是提供一种多云场景下的集群编排系统,以实现应用集群的跨云管理。
[0009] 为了解决上述问题,本发明所采用的技术方案是:
[0010] 一种多云场景下的集群编排系统,根据集群编排的需求,通过模块化技术,制定出多种用于集群编排的模块,利用各模块之间的相互关联,实现集群的编排、生命周期管理、高可用、自动伸缩以及负载均衡的功能。
[0011] 本发明技术方案的进一步改进在于,该集群编排系统包括编排入口、告警模块、编排引擎模块及云代理模块,其中:
[0012] 编排入口,用于接收用户请求,并将用户请求通过消息队列发送给编排引擎模块;
[0013] 告警模块,负责设置集群的告警策略,包括告警条件以及告警后需要执行的集群操作,告警模块监听消息队列,接收消息队列上的用户请求,管理集群告警,并根据告警策略,周期性地通过云代理模块获取各个云上所有集群节点的监控信息,包括近期监控数据或者健康状态,结合集群的告警策略,评估是否告警或通知编排引擎模块执行相应的操作;
[0014] 编排引擎模块,用于监听消息队列,接收编排入口和告警模块的请求,执行具体的集群操作,集群操作包括集群的创建、扩容、缩容、恢复、重建;
[0015] 云代理模块,用于接收告警模块或者编排引擎模块的请求,调用各个云的接口,操作各个云上的集群节点(比如虚拟机或者裸金属),同时获取各集群节点的监控数据及健康状态。
[0016] 本发明技术方案的进一步改进在于,告警模块中的告警策略是指,当集群的综合负载高于或低于制定的阀值且持续一定的时间时,通知编排引擎模块执行扩容/缩容操作;当集群中有节点宕机且持续一定的时间时,通知编排引擎模块执行相应的恢复/重建操作,恢复/重建均属于恢复策略的范畴。
[0017] 本发明技术方案的进一步改进在于,云代理模块与各个云之间采用插件形式管理,也就是云后端以插件形式管理,可以很方便的扩展。
[0018] 本发明技术方案的进一步改进在于,还包括定时器模块,用于管理系统中的定时任务,当用户通过编排入口创建定时任务后,定时器模块维护一个任务队列,并将到期的任务通过消息队列发送给编排引擎模块执行具体的集群操作。
[0019] 本发明技术方案的进一步改进在于,该集群编排系统的集群编排过程为:
[0020] S1、以插件形式支持各种云后端,利用云代理模块获取各个云的详细信息;
[0021] 获取云信息,注册各个云的连接以及认证信息,启动相应的云代理服务,并通过云代理模块进一步获取各个云的详细信息,包括当前CPU、内存、磁盘的容量;
[0022] S2、在集群编排系统中注册镜像、网络,以及他们在各个云中的映射关系;
[0023] 注册镜像,制作集群需要的镜像,将镜像转换成各个云要求的格式分发到各个云(如果有现成镜像,可以直接使用),并在集群编排系统上注册镜像,注册镜像时需要设置该镜像在各个云上的唯一标识;
[0024] 注册网络,在各个云平台上创建要使用的网络,并在集群编排系统上注册网络,同镜像一样,需要设置该网络在各个云上的唯一标标识;
[0025] S3、创建集群定义模版,通过特定的语法定义yaml格式的集群模版,保证集群中的节点拥有相同的配置;
[0026] 创建集群定义模版,集群定义模版的模版文件采用yaml格式,集群定义模版中指定集群节点类型及配置信息,用以保证集群中节点的配置一致;(模版中指定集群节点类型以及镜像、CPU、内存、磁盘、网络等配置);
[0027] S4、通过集群模版创建集群,设置集群的容量,以及多云调度策略。
[0028] 通过创建的集群定义模版启动集群,指定集群的最小和最大节点数,同时设置多云调度策略用于选择云创建节点以及后期增加/删除的节点,完成集群的创建;这样,集群创建成功以后,能够通过编排入口管理集群的生命周期,或者增加/删除集群中的节点,以及管理集群中节点的电源、生命周期。
[0029] 步骤S4中的多云调度策略需要设置各个云的权重W以及容量N,多云调度策略可以包括贪婪策略或机会策略,其中:
[0030] 贪婪策略每次增加节点时选择权重W高的云,直到达到该云的容量N,而删除时选择权重W低的云;
[0031] 机会策略则基于各个云的权重W加权求和后计算得到的概率F来调度,调度公式如下:
[0032]
[0033] S5、按需为集群设置告警策略,并绑定告警策略所需的具体执行策略,具体执行策略包括健康策略、负载均衡策略、伸缩策略,用以分别实现集群的HA、负载均衡、自动伸缩。
[0034] 健康策略是指,告警模块周期性地通过云代理模块获取集群节点在各个云中的健康状态,一旦检测到节点宕机并持续一段时间,则通知集群引擎执行相应的恢复策略;
[0035] 相应的,恢复策略是指,利用指定的任务流进行节点的恢复,指定的任务流包括重启、迁移、重建、切换云平台(图2),即节点恢复时首先尝试重启节点,重启不能恢复则迁移节点到其它物理节点,迁移不能恢复则删除并重建节点,如果在一个云上始终不能恢复,则将此云标记为不可用,并调度到其它的云重建节点。
[0036] 伸缩策略是指,告警模块周期性地通过云代理模块获取集群中的节点在各个云中的近期监控数据,包括平均CPU利用率C,平均内存利用率M,平均磁盘IO负载D,平均网络负载N,然后结合多云调度策略中为各个监控项设置的权重W,计算集群的综合负载Z,计算公式如下:
[0037]
[0038] 如果综合负载Z高于事先设置的阀值并且持续一定的时间,则执行相应的集群扩容策略,反之执行相应的集群收缩策略。
[0039] 负载均衡策略是指通过联合专门的负载均衡组件,指定所需的绑定配置,待绑定完成后,负载均衡组件自动创建相应的负载均衡器,同时集群中的节点也加入到负载均衡器中,自动伸缩时也会相应的更新负载均衡器。
[0040] 还包括步骤S6:
[0041] S6、按需为集群绑定定时任务,计划内执行集群的定时操作,并设置定时策略,定时策略可以创建一个或多个定时任务绑定到集群上,定时执行集群的操作。
[0042] 由于采用了上述技术方案,本发明取得的有益效果是:
[0043] (1)支持多云环境的集群编排。
[0044] (2)模版式编排,灵活定义、扩展。
[0045] (3)灵活的策略机制,按需给集群绑定相应的策略。
[0046] (4)同时支持集群的自动伸缩、负载均衡、HA。
[0047] (5)多云架构,未支持的云平台可以以插件形式扩展。

附图说明

[0048] 图1为系统的架构示意图。
[0049] 图2为健康策略的节点恢复流程。

具体实施方式

[0050] 下面结合实施例对本发明做进一步详细说明。
[0051] 本发明公开了一种多云场景下的集群编排系统,针对上述问题,本发明提出一种多云场景下的集群编排系统,实现应用集群的跨云管理,包括集群的编排、生命周期管理、高可用、自动伸缩以及负载均衡等功能。
[0052] 在介绍本发明之前,先对一些缩略语和关键术语进行定义。
[0053] IAAS:Infrastructure(基础设施)‑as‑a‑Service的简称,基础设施即服务的意思,是云计算的三种服务模式之一(另外两种是PaaS和SaaS),主要实现计算虚拟化、存储虚拟化以及网络虚拟化,以云主机(虚拟机、裸金属)的形式提供给用户。
[0054] 关于云计算的其他模式,也一并介绍下。
[0055] PaaS:Platform(平台)‑as‑a‑Service。
[0056] SaaS:Software(软件)‑as‑a‑Service。
[0057] 基础设施(比如虚拟机、服务器、存储空间、网络带宽、安全防护等)在最下端,平台(比如数据库、开发工具、Web服务器、软件运行环境等)在中间,软件(比如CRM、电子邮件、虚拟桌面、统一通信、在线游戏等)在顶端。
[0058] IaaS:Infrastructure‑as‑a‑Service(基础设施即服务)是第一层。
[0059] PaaS:Platform‑as‑a‑Service(平台即服务)第二层就是所谓的PaaS,某些时候也叫做中间件。
[0060] SaaS:Software‑as‑a‑Service(软件即服务)是第三层。
[0061] yaml格式:YAML是“另一种标记语言”的英文意思。它是一种直观的能够被计算机识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。目前YAML可以被如下编程语言解析:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript。
[0062] HA:高可用(High Availability),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断地提供服务,把因为软件,硬件,人为造成的故障对业务的影响降低到最小程度。
[0063] 本发明的系统架构如图1所示,包含编排入口、编排引擎模块、告警模块及云代理模块。
[0064] 编排入口用于接收用户请求,请求主要涉及集群模版的管理、集群的生命周期管理以及集群告警管理,并将请求通过消息队列发送给编排引擎模块。
[0065] 告警模块,负责设置集群的告警策略,包括告警条件以及告警后需要执行的集群操作。告警模块监听消息队列,接收消息队列上用户的请求,管理集群告警,并根据告警策略,周期性地通过云代理模块获取各个云上集群的所有节点的监控信息,结合集群的告警策略,评估是否告警或通知编排引擎模块执行相应的操作。当集群的综合负载高于或低于制定的阀值且持续一定的时间时,通知管理引擎执行扩/缩容操作;当集群中有节点宕机且持续一定的时间时,通知管理引擎执行恢复/重建操作。
[0066] 编排引擎模块也监听消息队列,接收编排入口/告警模块的请求,执行具体的集群操作,如集群的创建、扩缩容、恢复、重建。
[0067] 云代理接收告警模块或者编排引擎的请求,调用各个云的接口,操作各个云上的集群节点(比如虚拟机或者裸金属),同时获取各集群节点的监控数据及健康状态。在具体执行时,云代理模块与各个云之间采用插件形式管理,云后端以插件形式管理,可以很方便的扩展。
[0068] 还设有定时器模块,定时器模块管理系统中的定时任务,当用户通过编排入口创建定时任务,定时器模块维护一个任务队列,并将到期的任务通过消息队列发送给编排引擎执行具体的集群操作。
[0069] 本发明的具体实施例的实施过程如下所示。
[0070] (1)在集群管理系统上注册各个云的连接以及认证信息,启动相应的云代理服务,云代理模块与各个云之间采用插件形式管理,并通过云代理模块进一步获取各个云的详细信息,包括当前CPU、内存、磁盘的容量;
[0071] (2)注册镜像,制作集群需要的镜像,将镜像转换成各个云要求的格式分发到各个云(如果有现成镜像,可以直接使用),并在集群编排系统上注册镜像,注册镜像时需要设置该镜像在各个云上的唯一标识;
[0072] (3)注册网络,在各个云平台上创建要使用的网络(如果有现成网络,可以直接使用。多个云之间的节点可以使用公网、专线或者大二层打通),并在集群编排系统上注册网络,同镜像一样,需要设置该网络在各个云上的唯一标标识;
[0073] (4)创建集群定义模版,模版文件采用yaml格式,模版中指定集群节点类型以及镜像、CPU、内存、磁盘、网络等配置,模版能够保证集群中节点的配置一致。集群定义模版示例如下:
[0074]
[0075] (5)通过(4)中创建的集群定义模版启动集群,指定集群的最小和最大节点数,同时需要设置多云调度策略用于选择云创建节点以及后期增加/删除节点。调度策略需要设置各个云的权重W以及容量N。调度策略支持贪婪策略和机会策略,贪婪策略每次增加节点时选择权重高的云,直到达到该云的容量N,而删除时选择权重较低的云;机会策略则基于各云权重计算得到的概率F来调度,公式如下:
[0076]
[0077] 集群创建成功以后,能够通过系统入口管理集群的生命周期,或者增加/ 删除集群中的节点,以及管理集群中节点的电源、生命周期。
[0078] (6)告警模块负责设置集群的告警策略,包括告警条件以及告警后需要执行的集群操作。告警模块本身不负责监控,而是周期性地通过云代理模块获取集群中的节点在各个云中的近期监控数据或者健康状态,并通过监控数据或者健康状态及告警策略评估是否告警。用户可以为集群绑定多个告警策略,告警策略支持健康策略和伸缩策略,健康策略用来实现集群的HA(高可用),伸缩策略用来实现集群的自动伸缩。
[0079] (7)针对健康策略,告警模块周期性地通过云代理模块获取集群中的节点在各个云中的健康状态,一旦检测到节点宕机并持续一段时间,则通知集群引擎执行相应的恢复策略。恢复策略包含指定的任务流,用于节点的恢复,默认的任务流包括重启、迁移、重建、切换云平台(图2),即恢复时首先尝试重启节点,重启没能恢复则迁移节点到其它物理节点,迁移没能恢复则删除重建节点,如果在一个云上始终没能恢复,则将此云标记为不可用,并调度到其它的云重建节点。用户也可以自定义恢复的任务流,或者定义暂时不处理节点宕机的状况,而当集群存活的节点数在低于某一阀值时,再执行恢复或增加节点操作,增加节点时遵循(5)中指定的调度策略。
[0080] (8)针对伸缩策略,告警模块周期性地通过云代理模块获取集群中的节点在各个云中的近期监控数据,包括平均CPU利用率C,平均内存利用率M,平均磁盘IO负载D,平均网络负载N,然后结合策略中为各个监控项设置的权重 W,计算集群的综合负载Z,计算公式如下:
[0081]
[0082] 如果综合负载高于事先设置的阀值并且持续一定的时间,则执行相应的集群扩容策略,反之执行相应的集群收缩策略,伸缩策略除指定阀值及相应的操作外,还包括每次扩容或收缩的节点数以及操作的冷却时间。需要指出的是,扩容或者收缩时,集群的节点数不会低于集群定义的最小值或高于最大值,同时调度云时遵循(5)中的调度策略。
[0083] (9)另外还可以为集群绑定负载均衡策略,本系统不具体实现负载均衡功能,而是联合专门的负载均衡组件(如OpenStack中的Octavia)。负载均衡策略中指定虚拟机IP、连接限制、应用的协议、端口、负载均衡算法、健康检查等配置,策略绑定完成后,会自动创建相应的负载均衡器,同时将集群中的节点加入到负载均衡器中,自动伸缩时也会相应的更新负载均衡器。另外,对于 (7)中的健康策略,健康检查可以直接使用负载均衡器自带的健康检查方式。
[0084] (10)可以创建一个或多个定时任务绑定到集群上,定时执行一些集群的操作(如扩容/缩容)。定时任务是类cron任务,可以像cron一样很灵活的配置任务。定时任务通常用于执行计划内的集群扩容或收缩(也可以是节点的开机关机)来提前应对已知的集群负载规律,如白天访问量大,需要保持较多的节点,而晚上访问量小,只需要较少的节点数即可,甚至可以精确到各个时间段,来节省成本。
[0085] 本发明拥有模版式的集群配置、集群策略机制、健康策略的执行流程、系统的设计框架、多云调度策略,完美的实现了多云环境下的集群编排,模版式编排,灵活定义、扩展,并且是灵活的策略机制,按需给集群绑定相应的策略,具有极高的应用价值。