引言
目前,云计算服务很盛行。云计算平台能够为用户进行动态资源调度和分配,具有高度虚拟化和高可用性的特点,但是,也缺乏层次一致标准的应用生态,在资源管理上缺乏智能,这又限制了持续迭代创新和行业整体的创新能力。
现有的资源管理方式粒度单一,难以通过软件方式实现高效资源的整合和调度;随着云计算节点的规模化和异构化,现有的资源管理系统在多任务混合负载支持、调度效率与效果、可用性保障、资源适配等方面还需要进一步提升。现有的数据中心缺乏智能的管理方式,难以应对具有依赖关系的软件自动部署,难以在管理灵活性、能耗和性能损耗之间取得合理平衡。现场可编程门阵列(FPGA)、图形处理器(GPU)等新型硬件的虚拟化技术与日俱进,但大规模跨节点虚拟资源的直通与共享之间的矛盾,以及应用需求与硬件资源的调度隔离,导致现有的虚拟化系统难以有效支撑大规模数据处理、内存计算、图计算、科学计算等应用模式。
应用数据挖掘技术对资源进行动态分配,对于超大规模虚拟化系统的有效构建和智能化管理就显得额外重要。
超大规模虚拟系统智能化运维技术全景
云应用/云环境编程开发与支撑运行环境,是通过定义配置语言来描述依赖关系,通过提供动态调整应用配置的应用程序编程接口(API)来避免硬编程配置,二者都是计算机领域中常用的方法。笔者团队在这些简单方法的基础上进行优化,将依赖关系管理有效地加入主流的云管理系统中,在逻辑上是正确的,也不存在实施方面的技术障碍。在故障感知方面,任务的不同状态对应于不同的日志信息和资源使用情况,建立任务的状态与其运行时信息数据间的关联性是可行的,从而就能通过任务运行时的信息获取任务的运行状态。
在应用生态建设方面,将建设面向源码、API 和实施方案等不同层次的开源社区门户,通过代码的实时更新、在线沟通、在线评价等机制,形成技术、资源、用户、厂商等不同社区的良性互动,加速技术成果的更新、应用和产业化转化。图1展示了当下集群运维的基本运行模式。
图1 集群运维全景图
超大规模虚拟化系统的新概念新特征
多粒度资源池化
针对不同类型、资源多层次的特征,研究异构资源多粒度特征表示方法、池化方法,以及动态、可配置的资源隔离技术,可以使计算节点在不同资源层面上呈现出异构性和动态性特征。同时,不同类型的应用负载对资源的访问呈现出多样性需求,原来单一粒度的资源抽象难以适应。因此,需要研究异构资源的多粒度抽象表示与池化方法,通过节点能力的动态池化和隔离等技术手段,实现节点层面的高效资源整合与调度,为上层的调度框架和调度策略提供支撑。
支持超大规模资源调度的分布式调度系统,随着数据中心资源池规模的扩大,集中式调度系统的处理能力与可用性成为资源管理的瓶颈;此外,计算任务的种类和规模呈现爆炸式增长,基于单任务静态隔离的资源分配方法成为提升资源利用率的障碍。因此,需要研究支持超大规模资源调度的分布式调度系统,一方面,通过设计分布式并行调度技术,在保证多类型负载服务质量的基础上,提升请求处理的并行化程度,降低资源匹配的复杂度与开销;另一方面,通过构建元级和任务级分布式调度系统,实现在线离线等多类型负载的混合调度,提高集群资源共享效率与请求处理能力,提高资源利用率。
智能化数据中心管理
面向异构负载的混合调度场景,基于上述提出的多粒度资源池化与管理方法,通过多任务混合调度与优化,能够实现全局大规模智能化资源管理调度,提升管理的灵活性、任务处理和资源聚合的效率,降低数据中心总体能耗,具有较高的技术先进性。根据应用特征导致的节点资源动态配置、组织和管理需求,研究计算、存储、网络等资源的软硬件功能划分方法与池化管理方法;研究异构节点资源的一体化动态可配置隔离方法;研究不同层面调度控制的应用编程接口;实现资源的高效、灵活的组织,为上层应用提供可配置的个性化的节点能力支撑。
当下的云计算环境,具有负载规模大、负载异构等典型特征。如何实现大规模、多类型负载的资源按需分配,并满足不同负载的服务质量要求,实现大规模智能化资源管理和混合调度并有效提升资源利用率,成为云操作系统的核心问题。
超大规模虚拟化系统体系结构及其API构成
云系统自动运维中的几个关键问题包括:应用配置和应用依赖关系的管理;基于虚拟机外监控的反窃密云计算平台安全监控技术;面向云图计算的不确定性行为的故障感知、定位及传播分析;计算能耗与制冷能耗协同的部署策略,降低数据中心的总能耗;在运行状态下动态无缝透明地修改云操作系统的参数运行状态;从应用角度评价系统的效能;基于国内自主云操作系统实现,制定云操作系统内核 API 规范,抽象多层次云应用开发API,给出内核开源参考实现,持续运营开放社区,支持进一步商业开发和应用等。图2红色边框中给出了云计算集群核心层定义。
图2 API总体框架
智能化数据中心管理中数据挖掘的相关理论方法与技术
在云应用/云环境编程开发与支撑运行环境方面,针对云系统中故障感知、定位及传播分析,拟根据数据传感器采集的日志和各类资源的使用状态等信息,通过大数据智能分析等技术感知故障、定位导致故障发生的原因,并分析故障对系统性能的影响,为上层负载调度及部署等决策提供更丰富准确的数据中心状态信息。
系统的关键技术包括众包数据的收集,解耦群智感知和多尺度异常检测,以及智能运维下的数据挖掘方法。最后给出基于虚拟化的云测试挖掘服务。
图3 数据挖掘框架
众包数据的收集
随着越来越多的云计算服务集群被部署,由此也产生了大量的日志监控数据。这些服务器及其产生的日志是数据众包(crowdsourcing)的优质资源。无论这些数据来自固定设备还是移动设备,通过云存储,分析人员可以轻松地访问从集群的各个应用上传的众包数据,并从中提取有价值的信息。图4展示了基于多日志流众包的日志分析系统架构。
在很长一段历史阶段内,人们总是采用按经验分析的传统方法进行日志分析,即通过模式匹配的方式,找到用户针对日志的感兴趣部分。但随着云应用的不断拓展,日志数据量也与日俱增,实时性要求也提上日程。一种解决方法是设计非监督式贝叶斯检测器,用于检测日志流的生成过程。这种模型基于低级别特征的概率聚类,不需要大量的计算;另一种方法是使用粒子覆盖的流动场方法对日志流做事件抽象建模。当日志流不断地生成和汇聚时就会产生日志湍流,日志流上的梯度转换为拉格朗日相干结构,这种结构通过一系列的步骤揭示了潜在的日志流相关性。具体的做法是,首先在框架上展开粒子事件网络,当粒子移动的时候,粒子间会产生相互作用力,然后通过笔者团队提出的机器学习模型对这些作用力进行评估,从而检测出日志流模式。
图4 多日志流融合的日志分析系统架构
解耦群智感知平台和多尺度异常监测
由于群智感知涉及大范围的用户参与,为了平台的可量化特性,诸多获取并维持用户活动的去中心化对策应运而生。群智感知平台可以解耦其发现恶意攻击者的能力,将注意力放在信息收集和分析上,将群智感知信息可视化并传输到终端服务器上。
随着检测技术的进步,云计算集群大数据已不仅仅具有海量性这一传统认知特征,声音、图像等非结构化数据的引入,使数据内涵更加丰富。而超大规模虚拟化系统中日志数据的多尺度特性日益受到重视,对日志数据进行多尺度分析能够更好地提取数据关联规则、寻找变量间联系、克服传统数据处理无法兼顾整体趋势分析及局部波动相似性分析的不足。由于现代智能化数据中心具有结构复杂、数据异构等众多特点,采用传统方法难以达到复杂系统状态监测的要求,许多学者将多种方法结合,提出了使用与状态参数随时间的流式变化、主导尺度上具有单调递增特性的复杂多尺度系统的状态监测方法。针对大数据的海量性,引入日志信息粒子化,将残差的串行处理转化为日志粒子的并行处理,极大提高了计算效率,降低了计算时间。
智能运维下的数据挖掘
利用数据挖掘技术对大规模集群中的监控信息和日志信息进行分析和建模,可指导数据中心达到自动化运维的目的。如何有效利用这些系统运行下的监控信息和日志数据,是实现实时智能运维面临的最大挑战。
系统运行监控信息解析与预处理主要包括信息抽取技术、分词技术和文本形式化技术。让这些技术进行协作,是将监控数据转化为易于理解的信息数据的重要一步,也是决定系统状态信息监测效果的关键。
信息抽取技术主要包含有两类。基于模板的抽取方法的思路是经过分析,同一集群或类似集群的系统运行日志格式基本固定,系统运行日志内容可能随时更新,但使用的模板却稳定不变,这样就可方便地进行自动化处理。基于系统运行日志结构信息的抽取方法使用系统运行日志结构分析技术,能够对目标信息的抽取实现自动化。多数监控信息数据为半结构化,不能直接处理,针对这一特点可采用第二种方式。
分词技术用于将监控信息拆分成单词,便于理解。现在的检索系统中常用的分词算法可分为三类:基于统计的分词方法(basic on statistics)、基于理解的分词方法(basic on standing)和基于字符串匹配的分词方法(basic on character matching)。
文本形式化的目的是使用一定的、可衡量的因素来代表文本,从而方便掌握监控信息文本的各种特点,是高级检索的基础工作。常用的文本形式算法采用以下模型:布尔模型(Boolean model)、概率模型(probabilistic model)、聚类模型(cluster model)和向量空间模型(Vector Space Model, VSM)等。
经过一系列的系统状态信息搜集与处理,得到了大量数据集,而这些系统状态数据的关键信息并不十分明显,这里就需要用到数据挖掘中的分类和聚类方法来分析所得信息,预测系统状态信息的发展态势,为实时自动化运维的决策提供参考。文本分类算法通过数据集中的数据表现出来的特性(即通过文本形式化生成的文本特征)来对数据进行分类,从而得到与监测主题相关的系统状态信息,结果直观。文本聚类算法的中心思想是把数据元素分成簇,使簇内元素相关性更大,不同簇间元素相关性小,从而达到相互区分的目标,利用这点可以将网络智能运维的热点进行归纳,很容易在一个簇中发现实时运维的突出表现和倾向,这为智能运维决策者的决策工作指明了方向。
可视化分析技术的设计思想是将系统状态信息的数据项映射成图元素,将各个数据项特征表示成图形,并且使用高维度的方式来代表数据元素的各个属性值大小。使用线状图、柱状图等统计学图形,能够对相关数据更直观更方便的了解和分析。对于决策倾向分析有很多种方式,例如,获取云系统下的相关系统运行日志,利用聚类算法分析处理,对得到的聚集使用分词技术,然后通过对比事先建立的知识库中的异常或失效模式进行计算,得到下一步的运维决策。
基于虚拟化的云测试挖掘服务
传统软件往往无法提供理想的安全服务和安全保障。目前,公认的、合理的方案是利用严格的形式化方法进行设计实现和验证。模型检测作为一种典型的形式化方法,通过状态搜索来验证软件系统模型的有穷状态空间,从而检验系统的行为是否具备预期性质[1]。模型检测的基本思想是用状态迁移系统S表示系统的行为,用模态/时序逻辑公式F描述系统的性质。这样“系统是否具有所期望的性质”就转化为数学问题“状态迁移系统S是否是公式F的一个模型”。在模型检测中,系统用有穷状态模型建模,通过搜索来检验有穷状态模型是否满足规约,给出满足性质公式的系统行为轨迹。
对于云操作系统这类超大规模软件系统,可采用上述方法进行分析验证。由于存在状态空间膨胀等问题,模型检测的方法并不适用,这给新型云操作系统软件的测试和验证带来了新的挑战,必须要探索一种新型的方法。业界对软件的云测试模式与架构技术进行了较为深入的研究[2],形成了有效的解决方案,在复杂系统级测试领域得到了初步应用和发展。笔者团队研发了一个基于云计算的资源虚拟化测试服务平台(Virtual Testing as a Service),并参考甲骨文测试即服务(Oracle TaaS),在云端部署了包含被测对象和测试工具的测试实验室,实现了端到端的自动化测试过程,并支持负载测试、基于脚本的功能测试,还提供了丰富的测试监控和诊断数据的功能,可以在不影响测试质量的前提下,极大减少测试时间和成本,其组成见图5。
图5 测试即服务系统架构
结语
本文基于数据挖掘技术的云应用/云环境编程开发与支撑运行环境方面,在单元设备中不仅仅具备计算、网络、存储和服务器虚拟化等资源和技术,而且还通过网络聚合起来,实现模块化的无缝横向扩展(scale-out),形成统一的资源池。基于数据传感器等技术,提出了面向云系统不确定性行为的故障感知、定位及传播分析的新模型、新方法和新机制;分析了云系统、算法、应用输入不确定性行为及特征,设计了新型高效数据传感器部署、采集日志和各类资源使用状态收集机制与方法;设计了新型高效大数据智能分析方法来感知/定位故障和分析成因,分析了故障和瓶颈对云操作系统类“巨型系统”在性能、可靠性和稳定性等方面的影响,为上层负载调度及部署提供了更丰富准确的集群状态信息。在推动大规模虚拟化系统构建过程中,提出了构建一个以数据的开放共享和融合利用为核心,利用云计算、大数据、物联网、数据融合、网络安全等技术,将应用共性能力集成到一起,形成现代数据中心的典型应用范式和新的软件开发新范式通用能力平台。软件定义的分布式存储层和虚拟化计算是超融合架构(Hyper-Converged Infrastructure, HCI)的最小集。软件定义存储、软件定义网络的研究蒸蒸日上,但基于计算智能的研究仍然是因为针对特定的应用而千差万别,对于超大规模的虚拟化系统的数据挖掘框架的建立也有待进一步发展和完善。 ■
参考文献
[1] Clarke E M, Emerson E A, Sistla A P. Automatic Verification of Finite-State Concurrent Systems using Temporal Logic[D]. US, 1983.
[2] Cheng L, Chang J, Yang Z, et al. GUICat: GUI testing as a service[C]// Proceedings of the IEEE/ACM International Conference. New York: ACM Press, 2016:858-863.
其他作者:柯文俊 刘鹏鹤
所有评论仅代表网友意见