首页 / 专利库 / 电脑零配件 / 固件 / 基本输入输出系统 / 一种云计算环境下的虚拟集群自动伸缩方法

一种计算环境下的虚拟集群自动伸缩方法

阅读:278发布:2020-05-08

专利汇可以提供一种计算环境下的虚拟集群自动伸缩方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种 云 计算环境下的虚拟集群自动伸缩方法,自动伸缩的集群包括控制中心单元、监控中心单元、集群 节点 单元以及外部存储单元,方法包括:用户对集群配置进行初始化、创建并启动集群;集群动态增加节点(核心节点、计算节点以及外部存储);集群动态移除节点(核心节点、计算节点以及外部存储);监控中心收集集群节点系统性能指标数据,并进行简单分析及量化展示;以及用户手动调度集群。本发明能够灵活、简单且经济地自动调整集群弹性计算资源服务,构建基于集群负载的具备一定伸缩能 力 的云端 服务器 集群。另外,本发明的集群伸缩操作方法完全可以配置为自动执行,不需要人为干涉,这就使得集群在作业处理上更加高效、智能。,下面是一种计算环境下的虚拟集群自动伸缩方法专利的具体信息内容。

1.一种计算环境下的虚拟机集群自动伸缩的方法,其特征在于,自动伸缩的集群包括控制中心单元、监控中心单元、集群节点单元以及外部存储单元;
所述控制中心单元,用于负责分析监控中心色汇报的集群负载信息以及任务信息,并借助其内嵌的伸缩算法来制定具体的伸缩策略;
所述监控中心单元,用于负责对集群节点的系统性能指标数据进行定期收集、简单分析及量化展示;
所述集群节点单元,用于负责作业的任务的调度执行;
所述外部存储单元,用于负责存储输入输出数据集以及日志信息;
该方法描述了集群初始化启动、动态增加集群节点、动态移除集群节点、收集集群节点系统性能指标数据以及人为调试集群这五个方面的流程,具体包括下述步骤:
集群初始化启动:用户在启动虚拟机集群之前,对集群配置进行初始化,一方面,根据业务需求选择并设置不同种类、不同规格的虚拟机数量比例,另一方面,在监控中心单元配置各项系统性能指标的值,并设定好虚拟机集群可自动伸缩的范围,然后,依次启动监控中心单元、控制中心单元以及集群节点单元,并且保证各个组件能正常运行,也能互相进行通信;
在初始化配置集群时,针对不同的业务需求,不仅提供不同类型、不同规格的虚拟机节点,且可设置集群伸缩操作的边界,以确保即使是借助内嵌于系统的伸缩算法模块来实施伸缩集群的操作,其伸缩效果也是在可控的范围内;
所述集群节点单元中的各节点会在加入或移出集群时都需要在监控中心单元进行节点元信息的注册和删除,以便集群主节点定期从监控中心单元获取集群节点分布信息来调整任务调度;
动态增加集群节点:当集群正常调度作业时,集群节点单元中节点的各项性能指标处于正常范围,节点会收集系统各项性能指标信息、任务信息,并定期将这些信息汇报给监控中心单元,监控中心单元会将这些信息进行简单分析及量化展示;所述简单分析及量化展示从三个层面阐述:一、以用户预先设定的系统性能指标阈值数据为负载依据,来对比分析实际收集到的数据,并实时量化节点负载情况;二、以监控中心存储的历史系统性能指标数据为依据,来评估此时系统的负载;三、将信息量化展示,即展示实时收集的系统性能指标数据,简单对比分析的结果,这可以借助于手动开发的Web展示模块或利用开源组件;当监控中心检测到此时集群处于负载过重的状况时,便会将这些信息进一步转发给控制中心单元,控制中心单元会借助伸缩算法模块来制定出具体的伸缩策略,这包括添加核心节点、计算节点或外部存储,新添加的节点必须在监控中心单元进行注册,以便集群主节点能够实时掌握集群节点分布,所有的扩展集群操作都会记录到数据库;所述具体的伸缩算法模块在预测需要启动的节点类型和数量时应该将节点启动时间考虑在内并假设相同节点规格的计算能相同,更进一步的,应该充分归纳并挖掘出业务模块运行的潜在规律,以预测最佳的伸缩方案,包括将已有的Q-Learning算法,一种无模型、无监督的在线强化学习算法,应用到分析预测模块;
动态移除集群节点:同动态增加集群节点操作类似,当集群的负载处于正常范围内时,集群中节点会将系统各项性能指标信息、任务信息汇报给监控中心单元,以便监控中心单元能做出简单分析、量化展示的操作,当监控中心单元检测到此时集群存在闲置的节点时,会将这些信息转发给控制中心单元,控制中心单元会借助其伸缩算法模块来制定出具体的伸缩策略,这包括移除核心节点、计算节点或外部存储,其中核心节点与外部存储不能直接被移除,系统默认会转储其所存储的数据,并且被移除的节点在移除之前需在监控中心删除其注册的信息,以便集群主节点能够重新进行集群任务的调度,所有的缩减集群操作都会记录到数据库;
收集集群节点系统性能指标数据:为了保证集群能够有条不紊的持续运行,集群中节点一方面会通过心跳与监控中心单元保持联系,另一方面,会将本节点的系统各项性能指标数据、任务信息汇报给监控中心单元,监控中心单元先会通过简单地分析判断此时集群是否处于异常状态,并且会提供实时的分析显示报告,那些处于异常的集群节点负载信息都会作日志,保存到数据库;
人为调试集群:除了支持由系统自动进行伸缩操作外,也允许用户根据监控中心提供的实时集群负载情况的可视化分析报告,以作针对性的节点伸缩、资源调整的操作,这些操作的接口由控制中心单元提供,操作的步骤与自动伸缩集群操作基本一致,但人为调试操作可以不受集群初始化配置的伸缩临界点的限制,同样,人为调试集群所作的伸缩操作也会作日志记录。
2.根据权利要求1所述云计算环境下的虚拟机集群自动伸缩的方法,其特征在于,根据业务需求的变化调整云端集群所提供的存储及计算能力,并由此构建基于集群负载的具备一定伸缩能力的集群,且集群的动态伸缩过程不会影响集群原有的业务处理过程。
3.根据权利要求1所述云计算环境下的虚拟机集群自动伸缩的方法,其特征在于,集群节点单元处理任务的不确定性,业务计算需求也具有多样性,这使得集群节点单元的各项性能指标不断变化,资源的消耗没有规律,因此需根据集群实际负载来动态地调整集群资源。
4.根据权利要求1所述云计算环境下的虚拟机集群自动伸缩的方法,其特征在于,完成伸缩操作的系统功能模块与原有的业务计算模块相互独立,即控制中心单元、监控中心单元、集群节点单元以及外部存储单元允许单独部署及管理,不将与项目业务功能模块耦合,因此构建具备虚拟集群自动伸缩功能的系统时,只需在原有的集群上扩展额外的功能模块。
5.根据权利要求1所述云计算环境下的虚拟机集群自动伸缩的方法,其特征在于,在向集群添加虚拟机节点时,虚拟机节点能够平滑且可靠地加入现有运行中的集群,并且,同其它正常工作的节点一样,可以被用于作业任务的调度。
6.根据权利要求1所述云计算环境下的虚拟机集群自动伸缩的方法,其特征在于,利用伸缩算法模块来制定伸缩策略时,其会将节点的启动时间、组件初始化的时间以及任务的计算时间因素考虑在内。
7.根据权利要求1所述云计算环境下的虚拟机集群自动伸缩的方法,其特征在于,在缩减集群节点单元的节点时,转储节点存储的中间计算结果,以保证伸缩操作前后集群数据的一致性。
8.根据权利要求1所述云计算环境下的虚拟机集群自动伸缩的方法,其特征在于,所述监控中心单元会保存集群的配置信息,保证主节点能够通过与监控中心单元进行通信以掌握集群节点单元中各节点的最新分布。

说明书全文

一种计算环境下的虚拟集群自动伸缩方法

技术领域

[0001] 本发明涉及虚拟集群自动伸缩技术,更具体地说,涉及一种云计算环境下的虚拟集群自动伸缩方法。

背景技术

[0002] 云计算与大数据的迅速发展孵化了一批云服务商。根据他们提供的服务类型,可以将云服务分为三个层面,IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)以及SaaS(Software as a Service)。针对IaaS(基础设施即服务),业内的云服务商提供了种类丰富、功能强大的服务,这些服务涉及到存储、网络等基础资源。国内外的云服务商所提供的传统云服务器是一种简单高效,处理能有限的服务器集群。它允许用户按需灵活初始化云端集群,并且能够快速构建稳定、安全的应用。将业务集群托管到云端,集群将提高其易用性和安全性,并降低它的成本,以使得用户更加专注于核心业务。但这存在的问题是,企业业务规模周期性变动以及成本资金周转失衡要求业务集群能够灵活扩张与收缩。具体而言,云服务器集群能够根据用户业务需求及策略,灵活、简单且经济地自动调整集群弹性计算资源服务,以应对各种流量突增,增加服务的可用性,同时也大幅度降低了成本。因此,构建基于集群负载的具备一定伸缩能力的集群能够更好地适用于企业业务需求。

发明内容

[0003] 本发明的主要目的在于克服现有技术的缺点与不足,提供一种云计算环境下的虚拟集群自动伸缩方法,在不需要人为干预的情况下,集群在基于自身的负载以及用户设定的资源阈值的情况下,借助系统收集的集群实时的负载信息,并通过具体的伸缩策略或用户量化制定的伸缩方案来自动添加或移除集群中的节点,以达到提高集群效率和节约集群资源的目的。
[0004] 为了达到上述目的,本发明采用以下技术方案:
[0005] 本发明提供了一种云计算环境下的虚拟机集群自动伸缩的方法,自动伸缩的集群包括控制中心单元、监控中心单元、集群节点单元以及外部存储单元;
[0006] 所述控制中心单元,用于负责分析监控中心色汇报的集群负载信息以及任务信息,并借助其内嵌的预测算法来制定具体的伸缩策略;
[0007] 所述监控中心单元,用于负责对集群节点的系统性能指标数据进行定期收集、简单分析及量化展示;
[0008] 所述集群节点单元,用于负责作业的任务的调度执行;
[0009] 所述外部存储单元,用于负责存储输入输出数据集以及日志信息;
[0010] 该方法描述了集群初始化启动、动态增加集群节点、动态移除集群节点、收集集群节点系统性能指标数据以及人为调试集群这五个方面的流程,具体包括下述步骤:
[0011] 集群初始化启动:用户在启动虚拟机集群之前,对集群配置进行初始化,一方面,根据业务需求选择并设置不同种类、不同规格的虚拟机数量比例,另一方面,在监控中心单元配置系统各项系统性能指标的阈值,并设定好虚拟机集群可自动伸缩的范围,然后,依次启动监控中心单元、控制中心单元以及集群节点单元,并且保证各个组件能正常运行,也能互相进行通信;
[0012] 动态增加集群节点:当集群正常调度作业时,集群节点单元中节点系统的各项性能指标处于正常范围,节点会收集系统各项性能指标信息、任务信息,并定期将这些信息汇报给监控中心单元,监控中心单元会将这些信息进行简单分析及量化展示;所述简单分析及量化展示从三个层面阐述:一、以用户预先设定的系统性能指标阈值数据为负载依据,来对比分析实际收集到的数据,并实时量化节点负载情况;二、以监控中心存储的历史系统性能指标数据为依据,来评估此时系统的负载;三、将信息量化展示,即展示实时收集的系统性能指标数据,简单对比分析的结果,这可以借助于手动开发的Web展示模块或利用开源组件;当监控中心检测到此时集群处于负载过重的状况时,便会将这些信息进一步转发给控制中心单元,控制中心单元会借助伸缩算法模块来制定出具体的伸缩策略,这包括添加核心节点、计算节点或外部存储,新添加的节点必须在监控中心单元进行注册,以便集群主节点能够实时掌握集群节点分布,所有的扩展集群操作都会记录到数据库;所述具体的伸缩算法模块在预测需要启动的节点类型和数量时应该将节点启动时间考虑在内并假设相同节点规格的计算能力相同,更进一步的,应该充分归纳并挖掘出业务模块运行的潜在规律,以预测最佳的伸缩方案,包括但不限于将已有的Q-Learning算法,一种无模型、无监督的在线强化学习算法,应用到分析预测模块;
[0013] 动态移除集群节点:同动态增加集群节点操作类似,当集群的负载处于正常范围内时,集群中节点会将系统各项性能指标信息、任务信息汇报给监控中心单元,以便监控中心单元能做出简单分析、量化展示的操作,当监控中心单元检测到此时集群存在闲置的节点时,会将这些信息转发给控制中心单元,控制中心单元会借助其伸缩算法模块来制定出具体的伸缩策略,这包括移除核心节点、计算节点或外部存储,其中核心节点与外部存储不能直接被移除,系统默认会转储其所存储的数据,并且被移除的节点在移除之前需在监控中心删除其注册的信息,以便集群主节点能够重新进行集群任务的调度,所有的缩减集群操作都会记录到数据库;
[0014] 收集集群节点系统性能指标数据:为了保证集群能够有条不紊的持续运行,集群中节点一方面会通过心跳与监控中心单元保持联系,另一方面,会将本节点的系统各项性能指标数据、任务信息汇报给监控中心单元,监控中心单元会先通过简单地分析判断此时集群是否处于异常状态,并且会提供实时的分析显示报告,那些处于异常的集群节点负载信息都会作日志,保存到数据库;
[0015] 人为调试集群:除了支持由系统自动进行伸缩操作外,也允许用户根据监控中心提供的实时集群负载情况的可视化分析报告,以作针对性的节点伸缩、资源调整的操作,这些操作的接口由控制中心单元提供,操作的步骤与自动伸缩操作基本一致,但人为调试操作可以不受集群初始化配置的伸缩临界点的限制,同样,人为调试集群所作的伸缩操作也会作日志记录。
[0016] 作为优选的技术方案,根据业务需求的变化调整云端集群所提供的存储及计算能力,并由此构建基于集群负载的具备一定伸缩能力的集群,且集群的动态伸缩过程不会影响集群原有的业务处理过程。
[0017] 作为优选的技术方案,在初始化配置集群时,针对不同的业务需求,不仅提供不同类型、不同规格的虚拟机节点,且可设置集群伸缩操作的边界,以保证即使是借助内嵌于系统的伸缩算法模块来实施伸缩集群的操作,其伸缩效果也是在可控的范围内。
[0018] 作为优选的技术方案,所述集群节点单元中的各节点会在加入或移出集群时都需要在监控中心单元进行节点元信息的注册和删除,集群主节点定期从监控中心单元获取集群节点分布信息来调整任务调度。
[0019] 作为优选的技术方案,集群节点单元处理任务具有不确定性,业务计算需求也具备多样性,这使得集群节点单元的各项性能指标不断变化,资源的消耗没有规律,因此需根据集群实际负载来动态地调整集群资源。
[0020] 作为优选的技术方案,完成伸缩操作的系统功能模块与原有的业务计算模块相互独立,即控制中心单元、监控中心单元、集群节点单元以及外部存储单元允许单独部署及管理,不将与项目业务功能模块耦合,因此构建具备虚拟集群自动伸缩功能的系统时,只需在原有的集群上扩展额外的功能模块。
[0021] 作为优选的技术方案,在向集群添加虚拟机节点时,虚拟机节点能够平滑且可靠地加入现有运行中的集群,并且,同其它正常工作的节点一样,可以被用于作业任务的调度。
[0022] 作为优选的技术方案,利用预测算法模块来制定伸缩策略时,其会将节点的启动时间、组件初始化的时间以及任务的计算时间因素考虑在内。
[0023] 作为优选的技术方案,在缩减集群节点单元的节点时,其默认会转储节点存储的中间计算结果,以保证伸缩操作前后集群数据的一致性。
[0024] 作为优选的技术方案,所述监控中心单元会保存集群的配置信息,保证主节点能够通过与监控中心单元进行通信以掌握集群节点单元中各节点的最新分布。
[0025] 本发明与现有技术相比,具有如下优点和有益效果:
[0026] 1、本发明实现了一种基于集群负载的集群自动伸缩的技术,自动伸缩的集群由以下几个部分组成:控制中心单元,它负责集群的自动伸缩操作,并提供人为调试集群的接口(管理界面、管理命令行以及管理接口),它包含了集群具体的伸缩策略;监控中心单元,它负责集群的实时监控,包含了对集群中实例节点的各项指标信息的定期收集、量化展示以及健康评估;集群节点单元,它负责集群数据的存储和处理,它包含了三种节点,主节点负责管理集群的元数据信息和文件系统的命名空间。核心节点负责集群的计算任务和数据存储。计算节点是可选的,专作为任务计算;外部存储单元,它负责集群数据的存储,也是可选的,它包括HDFS、Amazon S3以及数据库(关系型数据库MySQL等及非关系型数据库HBase等)。在本方法中,集群中各节点之间通信所遵循的协议同Hadoop集群一致,不同的是由于集群是动态变化的,所以节点必须通过监控中心定期获取集群的实时节点分布状况和任务情况。由于集群是动态伸缩的,所以当集群中待处理的任务数增加而导致集群计算资源遭遇瓶颈时,控制中心会推测出集群当前处理任务的执行时间,并给集群动态地增加计算节点,从而提高集群的计算能力,最终达到缩短作业处理时间的目的。同初始化集群静态冗余节点的集群配置策略相比,其在保证作业处理效率的同时,还保证了集群资源更为高效地被利用。最为关键的是,上述的集群伸缩操作完全可以配置为自动执行,不需要人为干涉,这就使得集群在作业处理上更加高效、智能。
[0027] 2、本方法允许服务器集群能够根据业务需求及策略,灵活、简单且经济地自动调整集群弹性计算资源服务,构建基于集群负载的具备一定伸缩能力的云端服务器集群。首先,它允许用户根据业务需求灵活的选择并设置不同类型不同规格的虚拟机的比例,并且配置集群自动伸缩的临界值。其次,它提供实时获取集群节点系统性能指标信息及负载信息的接口以及管理监控界面。再者,它能够在集群负载异常的情况,根据实时的负载信息并结合节点任务信息来制定出具体的伸缩策略,这包括添加/移除核心节点、计算结点以及外部存储,并且会保证动态伸缩操作前后集群数据的一致性。最后,本系统也提供人为调试集群的接口,以尽可能灵活、高效、可靠的完成作业的调度执行。总之,相比于传统的云服务器集群,本系统在作业的调度执行效率以及集群资源利用率上更为高效。附图说明
[0028] 图1为本发明方法的主要组成图。
[0029] 图2为集群初始化启动的流程图
[0030] 图3为动态增加集群节点的流程图。
[0031] 图4为动态移除集群节点的流程图。
[0032] 图5为收集集群节点系统性能指标数据的流程图。
[0033] 图6为人为调试集群的流程图。

具体实施方式

[0034] 下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
[0035] 实施例
[0036] 如图1所示,描述的是本发明自动伸缩的集群系统的主要组成部分,自动伸缩的集群由以下几个部分组成:控制中心单元,它负责集群的自动伸缩,并提供人为调试集群的接口(管理界面、管理命令行以及管理接口),它包含了集群具体的伸缩策略;监控中心单元,它负责集群的实时监控,包含了对集群中实例节点的各项指标信息的定期收集、量化展示以及健康评估;集群节点单元,它负责集群数据的存储和处理,它包含了三种节点,主节点负责管理集群的元数据信息和文件系统的命名空间。核心节点负责集群的计算任务以及数据存储。计算节点是可选的,专门作为任务计算;外部存储单元,它负责集群数据的存储,也是可选的,它包括HDFS、Amazon S3以及数据库(关系型数据库MySQL等及非关系型数据库HBase等)。该方法主要描述集群初始化启动、动态增加集群节点、动态移除集群节点、收集集群节点系统性能指标数据以及人为调试集群这五个方面的流程步骤。图1描述了集群中各个组件的位置以及由它们之间的相互通信而构成的集群初始化启动、动态增加集群节点、动态移除集群节点、收集集群节点系统性能指标数据以及人为调试集群这五个集群的操作。
[0037] 本发明的目的有两点,针对构建的云服务器集群来运行作业(Apache Hadoop作业、Apache Spark作业等)的实际情况,一是提高集群的作业处理效率,即在资源(CPU、内存以及磁盘)消耗确定的情况下,作业运行时间最短,二是节约集群的资源消耗,即在作业的任务数确定的情况下,集群投入消耗的资源最少,这两点本质是相同的。自动伸缩的集群由以下几个部分组成:控制中心,它负责集群的自动伸缩,并提供人为调试集群的接口(管理界面、管理命令行以及管理接口),它包含了集群具体的伸缩策略;监控中心,它负责集群的实时监控,包含了对集群中实例节点的各项指标信息的定期收集、量化展示以及健康评估;集群节点,它负责集群数据的存储以及处理,它包含了三种节点,主节点负责管理集群的元数据信息、配置信息以及文件系统的命名空间。核心节点负责集群的计算任务以及数据存储。计算节点是可选的,专门作为任务计算;外部存储,它负责集群数据的存储,也是可选的,它包括HDFS、Amazon S3以及数据库(关系型数据库MySQL等及非关系型数据库HBase等)。
[0038] 具体而言,集群节点分布与Hadoop MapReduce或Apache Spark等集群节点分布类似,它们都是主从架构。我们可以初始化一定量的核心节点并选定出主节点,此时集群就具备作业存储及计算能力,但允许通过增加或移除计算节点来动态地调整集群的计算资源,也可以通过增加外部存储以容纳额外的作业数据。除此之外,如果业务场景需要,我们还可以通过增加核心节点来达到等比例扩张集群的存储以及计算能力。这些都是由控制中心来实施操作。而在节点动态地加入、移出集群或正常运行时,都必须主动向监控中心发送心跳信息以注册或删除节点信息以及报告节点的各项系统指标数据和任务信息;而监控中心会保存节点的注册信息,并传递给集群主节点。它还会定期收集节点系统性能指标数据和任务信息,并量化显示,以对整个集群作性能健康评估。如果集群某一指标达到了用户设定的阈值,就会通知控制中心进行及时调控。监控中心所收集到的日志信息会保存到数据库。控制中心是整个集群框架的核心,它负责及时且安全地实施集群伸缩操作,比如添加或移出计算节点。另外当评估某一集群负载为异常时,如果用户没有将伸缩操作进行统一量化,它就必须负责制定出具体的伸缩策略。除此之外,它还提供手动调试集群负载的接口,以便用户针对不同情况都能进行最佳的节点调配操作。它需要考虑节点的启动时间与集群负载动态变化相互制约等因素。控制中心针对集群实际情况具体做出的伸缩操作也会以日志的形式保存至数据库。
[0039] 因此,本发明的出发点是在不需要人为干预的情况下,集群在基于自身的负载以及用户设定的资源额度的情况下,借助系统收集的集群实时的负载信息,并通过具体的伸缩策略或用户量化制定的伸缩方案来自动添加或移除集群中的节点,以达到提高集群效率和节约集群资源的目的。
[0040] 本发明的目的是通过下述技术方案实现:一种基于集群负载的集群自动伸缩的技术,具体包括如下步骤:
[0041] 1、集群初始化启动:
[0042] 我们需要手动初始化并启动集群,其中初始化操作包括集群主节点和必要的核心节点甚至计算节点。同时启动集群的监控中心与控制中心,并且必须保证它们是持续正常运行的。具体而言,监控中心与控制中心要优先于集群节点启动,而集群的主节点要优先其它节点启动,以保证核心节点以及计算节点能够从监控中心获得主节点的地址等信息,并将其配置到节点本地文件,且不同类型的集群节点需以不同的策略来配置资源(存储及计算资源),以达到针对具体负载情况而做出更加细粒度的集群伸缩操作的目的。一般而言,这与集群虚拟机的规格相关,而选择的虚拟机规格需要根据作业的类型来确定,主要包括CPU密集型、内存密集型以及普通型等。在集群各节点启动时,包括主节点在内都需要向监控中心注册它们的元信息,比如节点IP地址。另外还要将节点各项系统性能指标数据和任务信息定期汇报给监控中心。其次,如果有需要,我们可以设定集群各类节点以及外部存储的在数量上的临界值,以保证集群自动伸缩也是在可控范围内。最后,值得注意的是,我们需要按作业的任务数与节点的计算及存储能力来初始化集群的虚拟机配置,以避免后期频繁的集群伸缩操作而造成不必要的资源与时间的消耗。
[0043] 2、动态增加集群节点:
[0044] 集群各运行中的节点会向监控中心周期性汇报本节点的系统性能指标数据以及任务信息。当用户向集群提交的作业的任务量显著增加(这里假设单个作业的任务可以近似等同,即它们需要的资源是相同的)而导致集群的核心节点的负载达到用户设定的阈值时,监控中心能够从集群节点定期收集的节点负载信息获知,因此会标记集群负载此时处于异常情况。继而会分析集群中节点的任务分布情况,这包括正在处理的任务数,成功的任务数、失败的任务数以及待处理的任务数等项,并将这些分析数据递交给控制中心。控制中心会进一步分析出集群资源瓶颈的详细情况,这个过程必须将新加节点的启动过程考虑在内,因为集群的负载是动态变化的,任务也在持续调度执行,这就需要控制中心内嵌伸缩策略模块,即预测分析出若干时间后集群的任务分布、系统性能指标信息及负载情况的算法模块。关于分析的结果,根据节点的类型则可以分为三种:一、如果作业属于CPU密集型,则需要计算出需要额外增加的计算节点的数量,并且要考虑节点所处的数据中心以及网络等因素,因为此时可能并不能实现数据本地性。最后才由控制中心调用那些由公有云或者私有云(如AmazonEC2、OpenStack、Nimbus等)提供的向已有集群动态地增加虚拟机的接口,我们需要保证新加入的虚拟机节点必须通过向监控中心注册本节点的元信息以及从监控中心获取集群其它节点(关键是主节点)的信息以达到自动平滑加入到现有集群的目的,由此才能被集群主节点用作任务调度;二、如果作业需要大量存储空间,这包括HDFS、对象存储以及数据库。控制中心同样会通过HTTP请求额外的外部存储空间,并对那些需要存储空间的节点(可能是核心节点或计算节点)进行响应,同时将此存储节点与申请使用这块存储的核心节点或者计算节点间的关联关系保存到数据库。使用外部存储不仅可以加速节点启动并加入集群的过程,以高效地完成集群的扩展,因为它不需要在节点启动时对节点的存储空间进行元信息管理,而且它也可以保证存储与计算分离,同时外部存储在可靠性、安全性以及扩展性方面也更高。但它的缺点也非常明显,在作业执行的时候,需要移动数据而消耗集群带宽;三、如果经控制中心的分析,若要保证作业的成功执行,其需要的计算资源量与存储资源量成一定比例,并且适合采用增加核心节点的方式来扩展集群,则控制中心同样会调用动态增加虚拟机(不同于选项一中虚拟机的配置)接口。此时新加入的核心节点也需要保证向监控中心注册本节点的元信息以及从监控中心获取集群其它节点的信息,并需要定期向监控中心汇报任务信息、系统性能指标数据。集群动态的添加节点的操作会被控制中心记录到数据库。
[0045] 3、动态移除集群节点:
[0046] 集群各运行中的节点会向监控中心周期性汇报本节点的系统性能指标数据以及任务信息。而当集群调度较少的作业而使得集群部分节点空闲时,监控中心同样能够根据集群节点汇报的负载信息而分析出集群此时的负载是处于“异常”情况,且处于各种执行状态的任务同样会作为分析的参考依据。监控中心会将这些信息转发给控制中心,控制中心借助伸缩模块提供的伸缩算法来指示此时具体的集群伸缩策略。并且为了避免资源(计算和存储资源)不必要的消耗,控制中心会尽量将那些不会使用到的节点进行回收,这可以从下面三种情形来阐述:一、如果检测到集群中存在闲置的外部存储,并且通过算法预测到在接下来的一定时间内也不会被使用到,控制中心就会调用那些由公有云或者私有云提供的向已有集群动态地移除虚拟机的接口。但需要注意的是,存储节点可能存储着作业处理的结果数据,因此尽管集群有副本机制(默认的副本数为3),但此时存储有同一副本的节点不能一次性被移除,必须逐个移除,否则就会造成数据丢失或者数据不一致的情况。在节点被移除前,节点数据默认会被转储。即控制中心会与监控中心进行通信,以让监控中心通知集群主节点将那些即将被移除的节点所存储的数据进行迁移。最后,被移除的节点在移除之前会通知监控中心,以便监控中心及时将节点元信息从配置文件中删除,这样当主节点与监控中心通信时,就可以得到最新的集群节点分布,而被移除的节点就不会被安排任务调度。此时的集群可能会处于一种无外部存储节点的状态;二、如果控制中心检测到集群中有闲置的计算节点,并且在后续一段时间内也不会被安排任务调度,控制中心同样会调用由公有云或者私有云提供的向已有集群动态移除虚拟机的接口,同存储节点一样,它也必须在被移除前通知监控中心,以将其元信息从配置文件中删除,最终让集群其它节点感知到集群节点分布的变化。但计算节点的移除不需要迁移数据,因此允许批量移除。此时集群可能处于一种只有主节点和核心节点的状态;三、如果控制中心检测到集群中有闲置的核心节点,会执行同移除计算节点类似的操作,但监控中心仍然需要通知主节点,以将核心节点存储的数据进行备份。另外,也要将节点的元信息从监控中心删除,以更新集群的节点分布。最终集群可能只保留了主节点,如果集群处于此种状态,则此时整个集群默认会自动终止,因为它不处理作业。同扩展集群操作类似,移除节点的操作也会被控制中心记录到数据库中。
[0047] 4、收集集群节点系统性能指标数据:
[0048] 集群在调度作业的过程中,其各种类型节点的系统性能指标信息及任务信息是动态变化的,为了保证集群能够有条不紊的持续、正常且高效地运行,必须由监控中心实时监控集群的健康状况。集群各节点会定期发送心跳至监控中心(如每隔1分钟),也会定期(如每隔3分钟)向监控中心汇报本节点的任务信息及负载情况,我们可以在各节点部署脚本以收集节点的系统各项性能指标数据。同时我们希望能够将收集系统性能指标数据(如节点的CPU使用率、上下文切换频率、内存的换出率等)的操作与心跳通信的操作进行分离,以保证二者的独立运行,互不影响。当监控中心收集到这些节点性能数据后,会进行初步的分析。如果检测到集群很有可能处于异常状况,便会与控制中心通信,并将收集到的负载信息发送给控制中心,为控制中心做出具体的集群伸缩策略提供依据。同时,监控中心必须将这些数据保存到数据库,并作日志记录,这样便能够将节点的负载同历史某一时刻的负载进行实时对比分析,并为后续集群的伸缩调试提供指导工作。除此之外,用户也可以通过轻量级的Apache Ganglia来增加自定义的系统性能指标类型,并且可以通过Web界面来展示生成的实时报告。
[0049] 5、人为调试集群:
[0050] 在集群正常运行过程中,监控中心会持续收集各节点汇报的系统性能指标数据,并将它进行量化展示,并做出性能评估。此时管理人员可以通过监控中心提供的数据面板来分析集群健康状况,并通过控制中心提供的集群调试接口对集群进行调试,以让集群能够按照管理员的管理策略进行变化伸缩。此操作同集群自动伸缩的操作基本一致,包括对集群的外部存储、计算节点以及核心节点进行增加或移除,也可以终止集群运行。另外,针对一部分作业,它还提供动态的根据集群节点的负载来细粒度的设定节点资源(比如节点的处理器核心数量,工作进程数量等)的功能,以便能根据集群各节点实际性能指标情况来手动平衡各节点的负载。同样,人为调试集群的记录也会被控制中心保存到数据库。
[0051] 下面结合具体的实施方法,对本发明的方法做进一步的阐述:
[0052] 如图2所示,描述的是集群初始化启动的过程,即用户初始化集群各组件的配置,然后依次启动集群中各组件的流程。
[0053] ①用户初始化集群中各组件的配置信息,并启动集群。
[0054] ②集群主节点往监控中心注册信息。
[0055] ③集群中非主节点往监控中心注册信息。
[0056] ④集群中非主节点从监控中心获取主节点信息。
[0057] ⑤集群主节点从监控中心获取集群从节点的分布信息。
[0058] ⑥监控中心将集群配置信息保存到数据库。
[0059] ⑦集群中各节点的脚本收集节点状态信息。
[0060] ⑧集群中各节点定期向监控中心发送心跳,并汇报节点的任务信息及负载情况。
[0061] 如图3所示,描述的是动态增加集群节点的流程。
[0062] ①集群各运行中的节点向监控中心周期性汇报本节点的系统性能指标信息以及任务信息。
[0063] ②监控中心对集群中节点周期性发送来的数据进行量化显示、简单分析以及性能评估。
[0064] ③监控中心感知到集群节点负载异常,将集群负载数据发送给控制中心。
[0065] ④监控中心将此次集群节点性能指标信息保存到数据库。
[0066] ⑤控制中心结合当前集群的负载并借助集群伸缩策略模块来制定集群具体的伸缩方案。
[0067] ⑥针对计算密集性作业,控制中心调用云服务商提供的动态增加虚拟机的接口来增加计算节点。
[0068] ⑦针对需要大量存储的作业,控制中心调用云服务商提供的动态增加虚拟机的接口来增加外部存储。
[0069] ⑧针对作业的存储资源与计算资源成一定比例的作业,控制中心调用云服务商提供的动态增加虚拟机的接口来增加核心节点。
[0070] ⑨控制中心将此次集群伸缩操作记录保存到数据库中。
[0071] ⑩新添加的节点在启动后向监控中心注册信息,获取集群主节点信息,并自动加入集群。
[0072] 集群主节点从监控中心获取最新的集群节点分布情况。
[0073] 如图4所示,描述的是动态移除集群节点的流程。
[0074] ①集群各运行中的节点向监控中心周期性汇报本节点的系统性能指标信息以及任务信息。
[0075] ②监控中心对集群中节点周期性发送来的数据进行量化显示,简单分析并做出性能评估。
[0076] ③监控中心感知到集群中闲置节点的数量达到用户设定的值,因此将集群当前负载信息发送给控制中心。
[0077] ④监控中心将此次集群节点系统性能指标信息保存到数据库。
[0078] ⑤控制中心结合当前集群的负载并借助集群伸缩策略模块来制定集群具体的伸缩方案。
[0079] ⑥如果分析出集群中存在闲置的计算节点,并推测出在一定时间内,这些计算节点也不会被使用到,则调用云服务商提供的移除虚拟机的接口将节点从集群中直接移除。
[0080] ⑦如果分析出集群中存在闲置的外部存储,并推测出在一定时间内,这些存储资源不会被利用,则会先通知集群主节点将此节点的数据进行备份,然后才调用云服务商提供的移除虚拟机的接口动态地将节点从集群中移除。
[0081] ⑧如果分析出集群中存在闲置的核心节点,并推测出在一定时间内,这些核心节点不会被使用,同样需先通知集群主节点以将此节点的数据进行备份,然后才调用云服务商提供的移除虚拟机的接口动态地将节点从集群中移除。
[0082] ⑨控制中心将此次集群伸缩操作记录保存到数据库中。
[0083] ⑩移除的节点在从集群中退出前需向监控中心删除其注册信息,以便能够让集群主节点得到最新的集群节点分布状况。
[0084] 集群主节点从监控中心获取最新的集群节点分布情况。
[0085] 如图5所示,描述的是收集集群节点系统性能指标数据的流程图。
[0086] 由于集群在运行过程中,集群节点是动态变化的,集群的负载也是实时变化的,所以为了保证集群能够有条不紊的运行,必须由监控中心对集群实时监控。
[0087] ①集群中节点中的脚本会定期收集本节点系统性能指标数据及任务信息。
[0088] ②集群中运行中的节点向监控中心发送心跳。
[0089] ③集群中运行节点周期性汇报本节点的系统性能指标数据以及任务信息[0090] ④监控中心对收集到的系统性能指标信息进行量化显示、简单分析并做出性能评估。
[0091] ⑤监控中心将系统性能指标信息保存到数据库。
[0092] 如图6所示,描述的是人为调试集群的流程图。
[0093] 为了能够应对集群的特殊情况,集群额外提供了手动调试集群的接口。虽然通常情况下集群能够通过自动伸缩来解决集群负载异常的问题,但不排除会遇到某些集群自身不能妥善处理的情况,或者需要集群采用偏离正常伸缩策略的伸缩方案,这些情况都需要人为对集群进行调试。
[0094] ①集群中各节点周期性汇报本节点的系统性能指标信息以及任务信息。
[0095] ②监控中心对收集到的系统性能指标信息进行量化显示、简单分析,并做出性能评估。
[0096] ③用户调整集群节点的资源分布。
[0097] ④用户通过控制中心提供的接口来调试集群。
[0098] ⑤用户通过控制中心提供的接口手动添加节点。
[0099] ⑥用户通过控制中心提供的接口手动移除节点。
[0100] ⑦被添加或者移除的节点向监控中心进行信息注册或者删除。
[0101] ⑧控制中心将此次人为调试集群的记录保存到数据库。
[0102] 上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈