云原生应用创新实践联盟通过课题方向专家组在“容器云自动化运维方向”的课题研究,重点围绕构建容器云自动化运维体系、容器云监控体系的分层以及实现方式、容器云运维与企业运维流程对接融合三方面为企业提供决策参考。帮助企业运维人员提升对容器云的理解、升级运维思维,为运维人员提供容器云自动化运维建设的方法建议。
本期介绍容器云自动化运维方向课题组阶段性研究成果“容器云资源数据关联和数据联动的难点和解决思路”。
导读
本文探讨了基于容器云场景下资源数据的管理,指出了传统架构与云原生架构下数据管理的区别。文中定义了数据资源的范围,并展开论述了对数据进行管理后的运维获益场景。企业在云原生改造过程中,往往会面临动态资源感知问题,作者也给出了一些切实而有效的解决方向。
前言
在云原生的背景下,运维体系的构建和能力面临了很大的挑战,在传统的运维场景中,有固定的资源管理方式和流程支撑,同样,运维对于业务的支撑也无法进行大面积的覆盖。在云原生或DevOps的场景中,运维工程师或云原生工程师需要对运维场景的能力进行升级,比较典型的有,需要具备服务全链路质量监控覆盖,涵盖数据域与业务域;需要具备智能化的、集约化的资源动态调度和伸缩机制;需要具备面向终态的监控体系,解决故障预警和问题定位的能力;需要在“价值”交付过程中的各个阶段,具备能够防御不可靠因素的能力;需要具备资源高效交付的流程机制与快速上线的能力;需要在IT组织内部推进业务快速上云的能力。
我们可以发现,在以上的所有能力中,有一个核心的要素,数据需要在云原生的各场景或各能力中,处于中枢地位,需要对资源进行统筹和管理,实现数据之间的关联和联动。
一、资源数据的管理方式
1、传统的资源管理方式
容器云资源数据的管理和传统的CMDB有本质的区别,在很多人的理解中,传统的CMDB仅仅是一个管理IT设备配置的数据库,其功能局限于采集设备配置和存储设备配置,进行配置数据的粗加工,如配置报表和成本报表,如下图所示。
2、面向自动化运维的资源管理方式
随着自动化运维理念的普及,以及运维技术的发展,资源管理的方式或方法也悄然“升级”,主要有两个方面,分别是数据中心的资源管理和应用的资源管理,前者在IT资产管理的功能进行扩充,后者为了更好的为应用数据进行支撑,这两个方面的核心功能在本质上而言,都是自动化运维推进或落地的重要步骤,如下图所示,通过问题诊断、资源批量管理、自动巡检、SLA保障和资源利用率管理的方式提升运维的效率,通过数据自动采集、开放API、可视化视图、资源标准化、服务管理的方式为运维自动化提供支撑。
在面向自动化运维的场景中,资源管理是底层的管理能力,通过API能力为上层的应用提供支撑,比较典型的有标准的一致性数据支撑和固化的无障碍流程支撑。
3、面向DevOps的资源管理方式
面向DevOps的资源管理,其实是DevOps和CMDB二者的集成,作者的《DevOps权威指南》中有详细的描述,在此进行提炼。
CMDB和DevOps的集成场景主要包括业务场景、架构场景、部署场景、数据输出场景和传统的基础架构场景。在业务场景方面,基于业务访问流的方式,对服务进行可视化呈现;在架构场景方面,基于架构视图,对应用的颗粒度进行整合,形成完整的业务和业务的全景视图;在部署场景方面,包含应用对应的节点和组件,形成应用的部署视图;在数据输出场景方面,包括CMDB提供的数据所有的对外输出场景,该场景主要与其他集成场景进行单向和双向的数据交互;传统的基础架构场景是指对底层的基础设施进行视图输出,并提供采集、查询、存储和展示功能。
在应用方面,CMDB辅助业务场景,通过DevOps驱动业务流程。在价值交付流水线中,CMDB为各业务流程提供准确的配置数据。业务系统在架构设计、容量管理、持续交付和业务域保障过程中,通过数据赋能,进行业务流程的落地。同时,CMDB提供的数据的高阶使用方式主要是多场景的数据关联和通过端到端的视图辅助DevOps在监控领域进行根因分析、故障定位和快速“自愈”。在DevOps的度量和反馈环节,对CMDB提供的数据进行服务化运营,实现业务的运营分析和成本复盘,以及资源的容量规划和管理。
二、容器云资源的管理方式
无论是私有云、公有云,还是容器云的场景中,都将面临云原生的资源管理方式,也叫云原生资产管理,包括了应用、数据、组件。云原生的资源管理方式和传统的资源方式存在很大的不同,在云原生的环境中,所有的资源都是不停的在变化,因此支撑的应用和场景也是复杂多变的,同时云原生的应用大都采用微服务的方式,因此管理的配置项数量也呈现几何级的增加。
在这种情况下,容器云资源的管理方式需要通过资源数据管理和资源场景管理相结合的方式,通过资源数据定义资源管理的模型、属性、组合关系,通过资源场景的方式对资源进行描述并对数据类型进行标准化。常见的容器云资源管理场景如下图所示。
应用资源管理,包括应用的拓扑信息,应用的基本信息如程序包目录、启停脚本等,应用的部署信息如集群、环境、主机、进程等,以及应用与应用之间、应用与基础资源之间的调用信息等。
基础资源管理,应用是由各种基础资源构成的,需要支持各种基础资源的配置信息管理。
应用制品管理,一般而言,资源管理中不会纳管制品,但需要支持与外部制品库对接,对制品与应用之间的关系进行管理。
作者举一个典型的例子,便于读者理解。在容器云资源管理过程中,需要定义一个资源管理模型,这个模型代表着一类云资源,如计算资源、存储资源、网络资源,也包括了集群模型和制品类型。模型需要以属性的方式从各个方面云资源,模型的属性可以根据场景自由定义和扩展。如集群模型的属性中,包括集群名、集群方式等,主机模型的属性包括ip、类型、区域等。和传统资源管理方式最大的不同,随着业务不断发展变化,集群和主机的信息也需要进行不断的扩展。
三、容器云资源数据的关联
资源数据的关联,涉及了三个核心问题,分别是如何对资源进行抽象和定义,如何确定资源数据之间的关系,如何在容器云场景中对资源进行链路追踪。
容器云资源数据中,包括了容器云平台自身的数据,数据中心数据,还包括了面向可靠性保障的事件数据和变更数据,同时也包括面向业务连续性的监控数据、应用配置数据和业务集群数据。作者在此重点分析聚焦在运维领域的数据,如下图所示,我们可以清晰的看到,机房、机柜、服务器设备、网络设备、存储设备之间的关联关系,也可以看到应用、实体、数据库、系统之间的关联,这是一种典型的以IP地址为基础的数据关联方式。
在上述的容器云资源数据关联的场景中,我们可以明显的看到,应用、数据库、负载均衡,这三个模型的关联是双向的,而物理设备、网络设备和存储设备的数据关联是单向的,这是容器的特性所造成。如果将任何一个实例进行模型化展示,PaaS层模型之上会关联另一个模型,每个模型都有一个属性数据供其他模型进行使用,从而衍生出一个庞大的数据关联图。因此只要任何一个属性数据发生了变化,相关的数据关联都会发生变化,甚至会引发数据联动的情况。
作者同样举一个简单的例子来描述容器云资源的数据关联,当运维团队对某个对象进行监控时,收到一个监控指标的预警信息,运维负责人首先关注是否影响业务连续性或可持续提供服务的能力是否受到影响,具体负责这个对象的工程师需要在短时间内对这个对象的上下游关系进行故障排查,如这个对象的故障是否因下游组件造成,是否对上游系统造成问题,这个对象在应用服务中处在什么环境,是否具备高可用能力,所承载的应用属于那个团队,近期是否有变更,是否和其他组件存在依赖关系,是否因为容器云平台自身的原因造成。在这个时候,就需要一套完整的容器云资源数据关联的拓扑图谱,如应用拓扑、集群拓扑、模块拓扑、容器云资源拓扑、数据关联关系。
资源数据的关联,不仅仅需要容器云平台自身具备数据关联的能力,还需要和第三方系统进行对接,如接口系统、应用监控系统、配置中心系统、组织架构系统、运维流程系统,双边系统在对接过程中,任意两个模型都需要通过数据关联的方式,形成单向或多向的关系。
四、容器云资源数据的联动
当容器云资源数据具备了数据关联的能力,便需要和具体的场景进行适配,进行数据联动。通常,在容器云环境下,运维团队面临了各类环境和资源的操作,虽然容器云平台具备自身资源数据的联动,和应用的联动依然不友好。因此,需要在容器云平台内部的资源编排能力之上,通过开发、封装可编排的组件和插件的方式,将资源数据以数据联动的方式提供灵活、可定制、可管理的模板化运维能力,覆盖面向业务连续性管理过程中的运维管理、运维审批、运维决策和运维执行的场景,最终实现运维自动化和运维智能化。
可以将容器云资源数据联动分为三层,分别为基础设施层、容器服务层、应用层,其中基础设施层对应了云资源联动,容器服务层对应了kubernetes联动,应用层对应了运维联动,还可以对应IT组织内部的其他能力子域的联动,如下图所示。
云资源联动,联动对象是各类云资源,包括计算资源、网络资源和存储资源,主要通过容器云平台内部的编排功能,达到基础资源弹性伸缩的能力。kubernetes联动,联动对象是kubernetes集群资源数据,主要通过Helm或YAML进行编排。运维联动,主要面向运维保障、运维监控和运维流程场景,达到自动化运维或智能化运维的能力。
通常,资源数据联动在运维场景内主要有四种方式,分别是运维事件的管理、应用调用管理、服务部署管理和变更影响管理。事件管理方面,可以通过容器云平台和事件系统进行对接,可以对告警进行分析,达到事件数据和发布数据之间的联动。应用调用管理方面,可以通过容器云平台和应用链路系统进行对接,对故障应用的上下游调用链路进行分析,匹配服务异常原因和应用链路调用之间的影响关系。服务部署管理方面,可以通过容器云平台自身的数据进行关联分析,及时的辨识变更和告警之间关系。变更影响管理方面,可以通过容器云平台和变更系统进行对接,打通业务连续性各项指标之间的关联,通过数据联动的方式明确变更可能发生影响的范围。