CN111355606A - 面向web应用的容器集群自适应扩缩容***和方法 - Google Patents
面向web应用的容器集群自适应扩缩容***和方法 Download PDFInfo
- Publication number
- CN111355606A CN111355606A CN202010084441.XA CN202010084441A CN111355606A CN 111355606 A CN111355606 A CN 111355606A CN 202010084441 A CN202010084441 A CN 202010084441A CN 111355606 A CN111355606 A CN 111355606A
- Authority
- CN
- China
- Prior art keywords
- cqps
- container
- expansion
- cfs
- cmemory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000008602 contraction Effects 0.000 title claims description 22
- 238000000034 method Methods 0.000 title claims description 18
- 238000012417 linear regression Methods 0.000 claims abstract description 19
- 230000001419 dependent effect Effects 0.000 claims abstract description 17
- 230000008859 change Effects 0.000 claims abstract description 16
- 238000012544 monitoring process Methods 0.000 claims description 29
- 230000009467 reduction Effects 0.000 claims description 23
- 230000006870 function Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 6
- 230000003044 adaptive effect Effects 0.000 claims description 5
- 230000009471 action Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 208000025174 PANDAS Diseases 0.000 description 1
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 1
- 240000000220 Panda oleosa Species 0.000 description 1
- 235000016496 Panda oleosa Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/0816—Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Environmental & Geological Engineering (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属web应用部署、资源调度技术领域,为综合考量不同资源的使用状况来进行扩缩容保证应用工作效率,本发明,面向web应用的容器集群自适应扩缩容***,包括资源监控模块、回归建模模块及容器伸缩模块,资源监控模块用于获取容器资源使用状况;回归建模模块用于提取容器负载数据,以CPU利用率,内存利用率,网络吞吐率和文件***吞吐率为特征值,每秒处理的请求数为标签,进行多元线性回归建模,以便得出自变量Ccpu,Cmemory,Cnetwork_io,Cfs_io对于因变量Cqps的影响大小,从而用已知的自变量预测因变量的变化。本发明主要应用于web应用场合。
Description
技术领域
本发明涉及容器化资源调度领域,特别是基于容器集群的web应用部署领域。具体涉及面向web应用的容器集群自适应扩缩容方法。
背景技术
近年来云计算飞速发展,越来越多收到公有云影响的技术厂商开始思考如何在IaaS(Infrastructure as a Service,基础设施即服务)之上构建新的技术与商业价值。在这样的背景之下,一批以开源和开放为主要特点的平台级项目应运而生,将“PaaS”(Platform as a Service,平台即服务)这个原本虚无缥缈的概念第一次实现和落地。这些PaaS项目的定位是应用托管服务,而不同于GAE等公有云托管服务,这些开放PaaS项目希望构建的则是完全独立于IaaS层的一套应用管理生态,目标是借助PaaS离开发者足够近的优势锁定云乃至所有数据中心的更上层入口。这样的定位,实际上就意味着PaaS项目必须能够不依赖IaaS层虚拟机技术,就能够将用户提交的应用进行封装,然后快速的部署到下层基础设施上。而这其中,开源、中立,同时又轻量、敏捷的Linux(一种操作***)容器技术,自然就成为了PaaS进行托管和部署应用的最佳选择。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker镜像是直接由一个完整操作***的所有文件和目录组成——即包含这个应用运行所需要的所有依赖,所以镜像压缩包中的内容与用户本地开发和测试环境用的操作***是完全一致的——这是Docker提供的最重要的能力。
Kubernetes是一个全新的基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。Pod是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。Kubernetes提供了pod的伸缩方案,但现有的伸缩方案通过集群内置的指标采集服务只支持对CPU和内存使用量的监测,基于检测到的数据与扩缩容阈值的对比来进行容器的动态伸缩。这种方案对于对于文件***读写型(如mysql等数据库应用)和网络吞吐型(如tomcat等web应用服务器)场景则难以满足需求。
Prometheus(普罗米修斯)是一个开源***监控和警报工具,Prometheus服务,可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中,PromQL(Prometheus Query Language,是Prometheus自己开发的数据查询语言)和其他接口可视化地展示收集的数据。prometheus获取监控端点的方式有很多,其中就包括Kurbernetes,prometheu会通过调用集群主节点的接口服务获取到节点信息,然后去调取每个节点的数据。
发明内容
现有技术对于容器的负载模型多为设置单一资源阈值,难以应对日益复杂的web应用,为了克服现有技术的不足,本发明旨在根据web应用的资源使用特性,考虑到负载的提升不能只通过单一资源的使用情况来体现,综合考量不同资源的使用状况来进行扩缩容保证应用工作效率。为此,本发明采取的技术方案是,面向web应用的容器集群自适应扩缩容***,包括资源监控模块、回归建模模块及容器伸缩模块,资源监控模块用于获取容器资源使用状况;回归建模模块用于提取容器负载数据,以CPU利用率Ccpu,内存利用率Cmemory,网络吞吐率Cnetwork和文件***吞吐率Cfs_io为特征值,每秒处理的请求数Cqps为标签,进行多元线性回归建模,以便得出自变量Ccpu,Cmemory,Cnetwork_io,Cfs_io对于因变量Cqps的影响大小,从而用已知的自变量预测因变量的变化,并在自变量变化范围确定的情况下得出因变量的变化范围;容器伸缩模块根据所得的Cqps函数取Cqps的最大值记为Cqps_max,根据Cqps_max设置容器伸缩阈值,计算Cqps与伸缩阈值的比值获得目标实例个数,若不等于当前实例个数则进行扩容或缩容。
面向web应用的容器集群自适应扩缩容方法,包括资源监控步骤、回归建模步骤及容器伸缩步骤,通过资源监控步骤获取容器资源使用状况;而回归建模步骤进行容器负载数据提取,以CPU利用率Ccpu,内存利用率Cmemory,网络吞吐率Cnetwork和文件***吞吐率Cfs_io为特征值,每秒处理的请求数Cqps为标签,进行多元线性回归建模,以便得出自变量Ccpu,Cmemory,Cnetwork_io,Cfs_io对于因变量Cqps的影响大小,从而用已知的自变量预测因变量的变化,并在自变量变化范围确定的情况下得出因变量的变化范围;容器伸缩步骤是,根据所得的Cqps函数取Cqps的最大值记为Cqps_max,根据Cqps_max设置容器伸缩阈值,计算Cqps与伸缩阈值的比值获得目标实例个数,若不等于当前实例个数则进行扩容或缩容。
资源监控具体步骤如下:
1)在多台服务器上部署Docker以及kubernetes集群,并保证集群节点之间网络互通;
2)在集群上部署prometheus以保证对集群内的资源监控,并将暴露其网络接口以便python-k8sclient(一种跨平台的计算机程序设计语言的客户端)获取监控信息;
3)配置kubernetes的第三方客户端python-k8sclient,通过导出kube-config(容器集群配置)文件以获取对于集群的操作权限;
4)根据kubernetes接口获取pod的基本设定,CPU请求量cpu_request以及内存请求量memory_request;
5)根据prometheus的接口周期性获取容器的资源使用状况,结合从kubernetes接口获取的数据,得到CPU利用率Ccpu,内存利用率Cmemory,网络吞吐率Cnetwork_io,文件***吞吐率Cfs_io,容器副本个数Creplicas,每秒处理的请求数Cqps。
回归建模具体步骤是,
1)利用python的数据处理工具pandas和numpy以时间顺序对收集到的Ccpu,Cmemory,Cnetwork_io,Cfs_io,Cqps进行描述性统计,如果容器实例数大于一则计算其平均值,其中Cnetwork_io,Cfs_io由当前值与历史最大值的比值得到,一旦当前值大于历史最大值则刷新最大值;
2)设不同Ccpu,Cmemory,Cnetwork_io,Cfs_io权重比a1,a2,a3,代入
Cqps=n+a1*Ccpu+a2*Cmemory+a3*Cnetwork_io+a4*Cfs_io+e
其中,n为常数项,a1,a2,a3,a4为回归系数,a1为Cmemory,Cnetwork_io,Cfs_io固定时,Ccpu每增加一个单位对Cqps的效应,即对Cqps的偏回归系数;同理a2为Cmemory对Cqps的偏回归系数;
以Ccpu,Cmemory,Cnetwork,Cfs_io作为特征值,Cqps作为标签值放入线性回归模型中进行训练多元性回归模型的参数估计,同一元线性回归方程一样,也是在要求误差平方和∑e2为最小的前提下,用最小二乘法求解参数;
3)获取模型中所得最佳拟合线的截距和回归系数,确定多元线性回归模型的函数Cqps;
4)随着收集到的数据量增多,对函数进行修正。
容器伸缩具体步骤如下:
1)每次生成Cqps函数后取Cqps的最大值记为Cqps_max,取Cqps_max的80%作为容器伸缩阈值;
2)根据Cqps函数计算当前的Cqps值记作Cqps_pre,计算当前性能指标与容器伸缩阈值的比值,获得目标实例个数:
Creplicas=(Creplicas_current*Cqps_pre)/(Cqps_max*80%),Creplicas向上取整;
3)分别设置扩容计数器num_up与缩容计数器num_down并读取容器实例个数的上下限,当Creplicas大于Creplicas_current时对扩容计数器进行加一操作,当Creplicas小于Creplicas_current时对缩容计数器进行减一操作,若num_up大于扩容阈值时进行扩容操作,最大不能大于实例个数上限,num_down大于缩容阈值时进行缩容操作,最小不能小于实例个数下限,在完成一次扩缩容动作后清空计数器。
本发明的特点及有益效果是:
通过外部负载和容器性能的关系来构建新的负载模型,为描述复杂应用的负载瓶颈提供了依据并实现了容器自适应伸缩,保证了资源的合理利用以及容器的工作效率。
附图说明:
图1为本发明kubernetes副本扩缩容***的模块原理图;
图2为本发明kubernetes副本扩缩容***实施例的模块图;
图3为多元线性回归建模的流程图。
具体实施方式
本发明提出了基于多目标资源监控的容器自适应伸缩方法,根据prometheus获取资源使用状况,使用线性回归方法结合应用的CPU利用率,内存利用率,文件***吞吐率和网络吞吐率来确定应用的实例个数。
现有技术对于容器的负载模型多为设置单一资源阈值,难以应对日益复杂的web应用,为克服现有技术的不足,本发明提供一种容器的自适应扩缩容的方法,利用第三方监控服务prometheus获取资源使用状况,设计了多目标混合的自适应扩缩容方法,实现数据中心的节能与负载平衡。本发明的自适应扩缩容方法主要由资源监控模块、回归建模模块及容器伸缩模块三个部分组成。
1、资源监控模块
资源监控模块需要通过在kubernetes集群下部署第三方的监控组件prometheus以及相应的接口,以及python-k8sclient,python-k8sclient是调用kubernetes接口的python语言包,可以用来开发kubernetes的管理服务,监控服务,配合前端显示,就可以开发出一款定制化的、可视化的管理或监控工具,我们可以用其通过prometheus暴露的接口来获取容器的资源使用状况,之后通过kubernetes接口对pod副本数进行操作。具体步骤如下:
1)在多台服务器上部署Docker以及kubernetes集群,并保证集群节点之间网络互通。
2)在集群上部署prometheus以保证对集群内的资源监控,并将暴露其网络接口以便python client获取监控信息。
3)配置kubernetes的第三方python-k8sclient,通过导出kube-config文件以获取对于集群的操作权限。
4)根据kubernetes接口获取pod的基本设定(包括名称(pod_name),CPU请求量(cpu_request)以及内存请求量(memory_request))。
5)根据prometheus的接口周期性获取容器的资源使用状况,结合从kubernetes接口获取的数据,得到CPU利用率(Ccpu),内存利用率(Cmemory),网络吞吐率(Cnetwork_io),文件***吞吐率(Cfs_io),容器副本个数(Creplicas),每秒处理的请求数(Cqps)。
2、回归建模模块
回归建模模块需要提取容器负载数据,以CPU利用率(Ccpu),内存利用率(Cmemory),网络吞吐率(Cnetwork)和文件***吞吐率(Cfs_io)为特征值,每秒处理的请求数(Cqps)为标签,进行多元线性回归建模(多元线性回归流程可参考图3),以便得出自变量Ccpu,Cmemory,Cnetwork_io,Cfs_io对于因变量Cqps的影响大小,使得我们可以用已知的自变量预测因变量的变化,并在自变量变化范围确定的情况下得出因变量的变化范围。
5)利用python的数据处理工具pandas和numpy以时间顺序对收集到的Ccpu,Cmemory,Cnetwork_io,Cfs_io,Cqps进行描述性统计,如果容器实例数大于一则计算其平均值,其中Cnetwork_io,Cfs_io由当前值与历史最大值的比值得到,一旦当前值大于历史最大值则刷新最大值。
6)设不同Ccpu,Cmemory,Cnetwork_io,Cfs_io权重比a1,a2,a3,代入
Cqps=n+a1*Ccpu+a2*Cmemory+a3*Cnetwork_io+a4*Cfs_io+e
其中,n为常数项,a1,a2,a3,a4为回归系数,a1为Cmemory,Cnetwork_io,Cfs_io固定时,Ccpu每增加一个单位对Cqps的效应,即对Cqps的偏回归系数;同理a2为Cmemory对Cqps的偏回归系数,等等。
以Ccpu,Cmemory,Cnetwork,Cfs_io作为特征值,Cqps作为标签值放入线性回归模型中进行训练多元性回归模型的参数估计,同一元线性回归方程一样,也是在要求误差平方和∑e2为最小的前提下,用最小二乘法求解参数。
7)获取模型中所得最佳拟合线的截距和回归系数,确定多元线性回归模型的函数Cqps。
8)随着收集到的数据量增多,对函数进行修正。
3、容器伸缩模块
根据所得的Cqps函数取Cqps的最大值记为Cqps_max,根据Cqps_max设置容器伸缩阈值,计算Cqps与伸缩阈值的比值获得目标实例个数,若不等于当前实例个数则进行扩容或缩容,具体步骤如下。
1)每次生成Cqps函数后取Cqps的最大值记为Cqps_max,取Cqps_max的80%作为容器伸缩阈值。
2)根据Cqps函数计算当前的Cqps值记作Cqps_pre,计算当前性能指标与容器伸缩阈值的比值,获得目标实例个数:
Creplicas=(Creplicas_current*Cqps_pre)/(Cqps_max*80%)(Creplicas向上取整)
3)分别设置扩容计数器(num_up)与缩容计数器(num_down)并读取容器实例个数的上下限,当Creplicas大于Creplicas_current时对扩容计数器进行加一操作,当Creplicas小于Creplicas_current时对缩容计数器进行减一操作,若num_up大于扩容阈值时进行扩容操作(进行扩容操作后新增容器并不能及时地获取到性能指标,获取失败时可以跳过这次计算),最大不能大于实例个数上限,num_down大于缩容阈值时进行缩容操作,最小不能小于实例个数下限,在完成一次扩缩容动作后清空计数器。
以下结合附图及较佳实施例,对依据本发明提供的具体实施方式、结构、特征及其功效,详细说明如下。
1、自适应扩缩容***的架构设计
本发明提出了一种多目标混合的自适应容器扩缩容***,分为容器应用层、资源监控层和容器调度层三个部分。容器应用层包括kubernetes集群和部署在容器上的web应用如tomcat服务器。资源监控层通过prometheus提供的接口将容器的资源使用状况(CPU利用率,内存利用率,网络吞吐率,文件***吞吐率)提供给用户,用户可通过python-k8sclient收集资源使用状况。容器调度层包括回归建模模块和容器伸缩模块,回归建模模块通过周期性地收集资源使用状况来对性能指标建模并更新,容器伸缩模块根据回归建模模块得到性能指标的阈值,根据当前性能指标与阈值的比值得到目标实例数进行容器扩缩容。保证容器在面对负载爆发时能够及时进行准确的扩缩容,在保证服务质量的同时防止资源浪费。
2、具体步骤如下:
[110]在kubernetes集群中部署web应用tomcat。
[120]使用一次压力测试获取到当前配置的容器的网络吞吐率及文件***吞吐率的最大值。
[130]设置扩缩容计数器num_up=0和num_down=0,最大实例数replicas_max=10和最小实例数replicas_min=1。
[140]通过prometheus监控pod信息,周期性获取资源使用状况,间隔时间为10s包括当前实例数(replicas_current),申请的资源总量,当前CPU使用量(container_cpu_usage),申请的CPU总量(resource_requests_cpu_cores),当前内存使用量(container_memory_usage_bytes),申请的内存总量(requests_memory_bytes),网络吞吐率(network_receive_bytes),文件***吞吐率(fs_receive_bytes),每秒处理请求数(http_requests_total),如果出现network_receive_bytes或fs_receive_bytes超过预设的最大值则更新最大值。
[150]计算每组CPU和内存的利用率,网络吞吐率和文件***吞吐率与最大值的比值,与每秒处理请求数一起存储为一个集合resource={Ccpu,Cmemory,Cnetwork_io,Cfs_io,Cqps},每经过一小时,将所有收集到的资源使用情况集合进行多元线性回归建模,以{Ccpu,Cmemory,Cnetwork_io,Cfs_io}为特征值,Cqps为标签,代入y=b0+b1x1+b2x2+b3x3+b4x4得到预测Cqps的线性方程:
Cqps=n+a1*Ccpu+a2*Cmemory+a3*Cnetwork_io+a4*Cfs_io
[160]根据得到的线性方程计算出Cqps最大值,以最大值的80%作为伸缩阈值,每得到一组{Ccpu,Cmemory,Cnetwork_io,Cfs_io}带入Cqps计算,计算当前状态下的目标实例数(replicas_target),并与当前实例数(replicas_current)比较。
[161]若replicas_target>replicas_current,则num_up+=1且num_down=0,当num_up>3时,python-k8sclient通过修改容器模板文件中的replicas字段来对pod的实例个数进行改变,使得pod扩容到当前的目标实例数,最大为replicas_max,同时num_up=num_down=0,新生成的容器并不能及时地获取到所有的资源使用状况,则当resource数据不完全时,放弃这组数据。
[162]若小于当前实例数,则num_down+=1且num_up=0,当num_down>5时(缩容敏感度可降低),python-k8sclient通过修改容器模板文件中的replicas字段来对pod的实例个数进行改变,使得pod缩容到目标实例数,最小为replicas_min,同时num_up=num_down=0。
[170]每完成一次扩缩容动作后将收集到的数据加入集合resource进行重新建模,以确保在各种情况下模型的拟合度都足够高。
Claims (5)
1.一种面向web应用的容器集群自适应扩缩容***,其特征是,包括资源监控模块、回归建模模块及容器伸缩模块,资源监控模块用于获取容器资源使用状况;回归建模模块用于提取容器负载数据,以CPU利用率Ccpu,内存利用率Cmemory,网络吞吐率Cnetwork和文件***吞吐率Cfs_io为特征值,每秒处理的请求数Cqps为标签,进行多元线性回归建模,以便得出自变量Ccpu,Cmemory,Cnetwork_io,Cfs_io对于因变量Cqps的影响大小,从而用已知的自变量预测因变量的变化,并在自变量变化范围确定的情况下得出因变量的变化范围;容器伸缩模块根据所得的Cqps函数取Cqps的最大值记为Cqps_max,根据Cqps_max设置容器伸缩阈值,计算Cqps与伸缩阈值的比值获得目标实例个数,若不等于当前实例个数则进行扩容或缩容。
2.一种面向web应用的容器集群自适应扩缩容方法,其特征是,包括资源监控步骤、回归建模步骤及容器伸缩步骤,通过资源监控步骤获取容器资源使用状况;而回归建模步骤进行容器负载数据提取,以CPU利用率Ccpu,内存利用率Cmemory,网络吞吐率Cnetwork和文件***吞吐率Cfs_io为特征值,每秒处理的请求数Cqps为标签,进行多元线性回归建模,以便得出自变量Ccpu,Cmemory,Cnetwork_io,Cfs_io对于因变量Cqps的影响大小,从而用已知的自变量预测因变量的变化,并在自变量变化范围确定的情况下得出因变量的变化范围;容器伸缩步骤是,根据所得的Cqps函数取Cqps的最大值记为Cqps_max,根据Cqps_max设置容器伸缩阈值,计算Cqps与伸缩阈值的比值获得目标实例个数,若不等于当前实例个数则进行扩容或缩容。
3.如权利要求2所述的面向web应用的容器集群自适应扩缩容方法,其特征是,资源监控具体步骤如下:
1)在多台服务器上部署Docker以及kubernetes集群,并保证集群节点之间网络互通;
2)在集群上部署prometheus以保证对集群内的资源监控,并将暴露其网络接口以便python-k8sclient(一种跨平台的计算机程序设计语言的客户端)获取监控信息;
3)配置kubernetes的第三方客户端python-k8sclient,通过导出kube-config(容器集群配置)文件以获取对于集群的操作权限;
4)根据kubernetes接口获取pod的基本设定,CPU请求量cpu_request以及内存请求量memory_request;
5)根据prometheus的接口周期性获取容器的资源使用状况,结合从kubernetes接口获取的数据,得到CPU利用率Ccpu,内存利用率Cmemory,网络吞吐率Cnetwork_io,文件***吞吐率Cfs_io,容器副本个数Creplicas,每秒处理的请求数Cqps。
4.如权利要求2所述的面向web应用的容器集群自适应扩缩容方法,其特征是,回归建模具体步骤是:
1)利用python的数据处理工具pandas和numpy以时间顺序对收集到的Ccpu,Cmemory,Cnetwork_io,Cfs_io,Cqps进行描述性统计,如果容器实例数大于一则计算其平均值,其中Cnetwork_io,Cfs_io由当前值与历史最大值的比值得到,一旦当前值大于历史最大值则刷新最大值;
2)设不同Ccpu,Cmemory,Cnetwork_io,Cfs_io权重比a1,a2,a3,代入
Cqps=n+a1*Ccpu+a2*Cmemory+a3*Cnetwork_io+a4*Cfs_io+e
其中,n为常数项,a1,a2,a3,a4为回归系数,a1为Cmemory,Cnetwork_io,Cfs_io固定时,Ccpu每增加一个单位对Cqps的效应,即对Cqps的偏回归系数;同理a2为Cmemory对Cqps的偏回归系数;
以Ccpu,Cmemory,Cnetwork,Cfs_io作为特征值,Cqps作为标签值放入线性回归模型中进行训练多元性回归模型的参数估计,同一元线性回归方程一样,也是在要求误差平方和∑e2为最小的前提下,用最小二乘法求解参数;
3)获取模型中所得最佳拟合线的截距和回归系数,确定多元线性回归模型的函数Cqps;
4)随着收集到的数据量增多,对函数进行修正。
5.如权利要求2所述的面向web应用的容器集群自适应扩缩容方法,其特征是,容器伸缩具体步骤如下:
1)每次生成Cqps函数后取Cqps的最大值记为Cqps_max,取Cqps_max的80%作为容器伸缩阈值;
2)根据Cqps函数计算当前的Cqps值记作Cqps_pre,计算当前性能指标与容器伸缩阈值的比值,获得目标实例个数:
Creplicas=(Creplicas_current*Cqps_pre)/(Cqps_max*80%),Creplicas向上取整;
3)分别设置扩容计数器num_up与缩容计数器num_down并读取容器实例个数的上下限,当Creplicas大于Creplicas_current时对扩容计数器进行加一操作,当Creplicas小于Creplicas_current时对缩容计数器进行减一操作,若num_up大于扩容阈值时进行扩容操作,最大不能大于实例个数上限,num_down大于缩容阈值时进行缩容操作,最小不能小于实例个数下限,在完成一次扩缩容动作后清空计数器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010084441.XA CN111355606B (zh) | 2020-02-10 | 2020-02-10 | 面向web应用的容器集群自适应扩缩容***和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010084441.XA CN111355606B (zh) | 2020-02-10 | 2020-02-10 | 面向web应用的容器集群自适应扩缩容***和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111355606A true CN111355606A (zh) | 2020-06-30 |
CN111355606B CN111355606B (zh) | 2021-12-28 |
Family
ID=71194243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010084441.XA Expired - Fee Related CN111355606B (zh) | 2020-02-10 | 2020-02-10 | 面向web应用的容器集群自适应扩缩容***和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111355606B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831447A (zh) * | 2020-07-16 | 2020-10-27 | 中国民航信息网络股份有限公司 | 一种基于性能监控的应用弹性扩容方法及装置 |
CN112162817A (zh) * | 2020-09-09 | 2021-01-01 | 新浪网技术(中国)有限公司 | 容器集群的部署服务资源的处理方法及装置、存储介质 |
CN112187894A (zh) * | 2020-09-17 | 2021-01-05 | 杭州谐云科技有限公司 | 一种基于负载相关性预测的容器动态调度方法 |
CN112350872A (zh) * | 2020-11-23 | 2021-02-09 | 网易(杭州)网络有限公司 | 网络架构配置信息生成方法、装置、存储介质及电子设备 |
CN112565399A (zh) * | 2020-12-02 | 2021-03-26 | 天翼电子商务有限公司 | 一种在线学习的自适应流量负载均衡方法 |
CN113507618A (zh) * | 2021-06-30 | 2021-10-15 | 微梦创科网络科技(中国)有限公司 | 一种直播***自动扩缩容方法及*** |
WO2022068392A1 (zh) * | 2020-09-29 | 2022-04-07 | 中兴通讯股份有限公司 | 数据库集群扩缩容方法、服务***、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109446032A (zh) * | 2018-12-19 | 2019-03-08 | 福建新大陆软件工程有限公司 | Kubernetes副本扩缩容的方法及*** |
CN109542603A (zh) * | 2018-11-22 | 2019-03-29 | 北京航空航天大学 | 一种提高不同优先级任务间隔离性的多维资源隔离*** |
CN110149396A (zh) * | 2019-05-20 | 2019-08-20 | 华南理工大学 | 一种基于微服务架构的物联网平台构建方法 |
US10447806B1 (en) * | 2017-06-09 | 2019-10-15 | Nutanix, Inc. | Workload scheduling across heterogeneous resource environments |
CN110647392A (zh) * | 2018-06-26 | 2020-01-03 | 山东北邮信息技术产业研究院有限公司 | 一种基于容器集群的智能弹性伸缩方法 |
-
2020
- 2020-02-10 CN CN202010084441.XA patent/CN111355606B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10447806B1 (en) * | 2017-06-09 | 2019-10-15 | Nutanix, Inc. | Workload scheduling across heterogeneous resource environments |
CN110647392A (zh) * | 2018-06-26 | 2020-01-03 | 山东北邮信息技术产业研究院有限公司 | 一种基于容器集群的智能弹性伸缩方法 |
CN109542603A (zh) * | 2018-11-22 | 2019-03-29 | 北京航空航天大学 | 一种提高不同优先级任务间隔离性的多维资源隔离*** |
CN109446032A (zh) * | 2018-12-19 | 2019-03-08 | 福建新大陆软件工程有限公司 | Kubernetes副本扩缩容的方法及*** |
CN110149396A (zh) * | 2019-05-20 | 2019-08-20 | 华南理工大学 | 一种基于微服务架构的物联网平台构建方法 |
Non-Patent Citations (1)
Title |
---|
苗立尧: "基于Docker容器的混合式集群伸缩方法研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831447A (zh) * | 2020-07-16 | 2020-10-27 | 中国民航信息网络股份有限公司 | 一种基于性能监控的应用弹性扩容方法及装置 |
CN111831447B (zh) * | 2020-07-16 | 2024-04-30 | 中国民航信息网络股份有限公司 | 一种基于性能监控的应用弹性扩容方法及装置 |
CN112162817A (zh) * | 2020-09-09 | 2021-01-01 | 新浪网技术(中国)有限公司 | 容器集群的部署服务资源的处理方法及装置、存储介质 |
CN112162817B (zh) * | 2020-09-09 | 2023-09-26 | 新浪技术(中国)有限公司 | 容器集群的部署服务资源的处理方法及装置、存储介质 |
CN112187894A (zh) * | 2020-09-17 | 2021-01-05 | 杭州谐云科技有限公司 | 一种基于负载相关性预测的容器动态调度方法 |
CN112187894B (zh) * | 2020-09-17 | 2022-06-10 | 杭州谐云科技有限公司 | 一种基于负载相关性预测的容器动态调度方法 |
WO2022068392A1 (zh) * | 2020-09-29 | 2022-04-07 | 中兴通讯股份有限公司 | 数据库集群扩缩容方法、服务***、存储介质 |
CN112350872A (zh) * | 2020-11-23 | 2021-02-09 | 网易(杭州)网络有限公司 | 网络架构配置信息生成方法、装置、存储介质及电子设备 |
CN112350872B (zh) * | 2020-11-23 | 2022-07-22 | 网易(杭州)网络有限公司 | 网络架构配置信息生成方法、装置、存储介质及电子设备 |
CN112565399A (zh) * | 2020-12-02 | 2021-03-26 | 天翼电子商务有限公司 | 一种在线学习的自适应流量负载均衡方法 |
CN112565399B (zh) * | 2020-12-02 | 2022-12-09 | 天翼电子商务有限公司 | 一种在线学习的自适应流量负载均衡方法 |
CN113507618A (zh) * | 2021-06-30 | 2021-10-15 | 微梦创科网络科技(中国)有限公司 | 一种直播***自动扩缩容方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN111355606B (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111355606B (zh) | 面向web应用的容器集群自适应扩缩容***和方法 | |
JP7490038B2 (ja) | ヒープをため込んでいるスタックトレースを特定するための、スレッド強度とヒープ使用量との相関 | |
Amiri et al. | Survey on prediction models of applications for resources provisioning in cloud | |
Bhattacharjee et al. | Barista: Efficient and scalable serverless serving system for deep learning prediction services | |
CN108920153B (zh) | 一种基于负载预测的Docker容器动态调度方法 | |
US9288158B2 (en) | Dynamically expanding computing resources in a networked computing environment | |
CN111414233A (zh) | 一种在线模型推理*** | |
US11579933B2 (en) | Method for establishing system resource prediction and resource management model through multi-layer correlations | |
US11080093B2 (en) | Methods and systems to reclaim capacity of unused resources of a distributed computing system | |
CN111381928B (zh) | 一种虚拟机迁移方法、云计算管理平台和存储介质 | |
US11055568B2 (en) | Method and system that measure application response time | |
CN111580934A (zh) | 云计算环境下多租户虚拟机性能一致的资源分配方法 | |
CN114138501B (zh) | 用于现场安全监控的边缘智能服务的处理方法和装置 | |
Yadav et al. | Maintaining container sustainability through machine learning | |
CN114911615A (zh) | 微服务运行时智能预测调度的方法及应用 | |
WO2020206699A1 (en) | Predicting virtual machine allocation failures on server node clusters | |
CN113946491A (zh) | 微服务数据处理方法、装置、计算机设备及存储介质 | |
US20230409710A1 (en) | Allow list of container images based on deployment configuration at a container orchestration service | |
US20230169168A1 (en) | Detect anomalous container deployment at a container orchestration service | |
CN113703394A (zh) | 一种基于边缘计算的刀具监测管理方法及*** | |
CN115757002A (zh) | 一种能耗确定方法、装置、设备及计算机可读存储介质 | |
CN111708677A (zh) | 一种云计算环境下的云硬盘使用量采集方法 | |
US20230136564A1 (en) | Agent assisted model development | |
CN113377521B (zh) | 通过多层次相关性建立***资源预测及管理模型的方法 | |
CN116028158A (zh) | 基于容器网络监测的应用调度***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20211228 |