配置管理数据库(Configuration Management Database,以下简称CMDB)是一个老生常谈的话题,不同的人有不同的见解,实际应用时,因为企业成熟度以及软硬件规模不同,别人的成功经验很难直接复制,因此用好了会成为整个应用系统的基石,用不好就成了鸡肋。特来电云平台在规划伊始,便意识到了CMDB的重要性,在实践中不断丰富完善其内容,探索出了一条行之有效的轻量级CMDB建设之路,下面笔者具体谈一下应用实践思路,希望能给感兴趣的同行带来一些共鸣。

一、整体架构

特来电云平台是互联网架构的分布式应用平台,但CMDB的设计初衷却是中心化的,这样便于为上面的应用层提供统一的数据变更处理,保证各应用系统共享一致性的配置数据,整体架构如下所示:

1.应用层

特来电云平台是CMDB支撑的上层分布式高并发高可用系统,作为一个支持“全生命周期管理”的技术服务平台,主要由三大子平台构成:开发交付平台、公共技术平台、运维管理平台,分别对应一个应用系统全生命周期中的开发时、运行时以及运维时,整体架构图如下所示:

2.管理层

硬件资产管理主要管理物理的数据中心、应用主机,以及逻辑上划分出的服务单元、应用集群、应用节点等;软件资产管理主要管理关键应用以及应用程序定义、应用程序实例(进程);应用配置管理主要管理应用运行时需要用到的各种静态或动态参数;软硬件资产申请主要管理各产品研发团队发布应用时,需要用到的硬件资产,以及需要注册的软件资产基础数据,通过与自动运维系统打通,申请通过后,可以进行应用主机的部署以及应用程序的初始化;数据准确性校验一是通过初期对软硬件资产的正确盘点,二是通过与监控系统打通,定时将收集上来的数据与CMDB存储的基础数据进行自动校对,必要时根据校验的异常信息进行人工校对,从而保证CMDB基础数据的绝对准确;数据统计分析报表主要从运营的角度对软硬件资产及应用配置进行如数家珍的图形化展示,以及统计应用主机利用率、分析使用成本等,为机器升降配置、扩缩容量提供有力的数据支撑。

3.存储层

作为轻量级的CMDB系统,考虑到集中存储以及数据一致性,通过关系型数据库即可满足应用配置以及访问查询需求。

二、核心模型

传统应用中,CMDB作为ITIL(Information Technology Infrastructure Library,信息技术基础设施库)关键模块中的基础,主要面向硬件资产,涉及的内容及流程模型比较重,而一些创新型的中小型互联网公司,大部分采用的是公有云,不需要管理自建机房,更多关注软件资产,因此如果直接使用标准的CMDB系统,往往会感到水土不服,失败案例比较多。通过研究业界主流做法以及结合自身实践,特来电云平台经过不断探索,认为构建一个轻量级的CMDB系统,应该以关键应用为抓手,将云上轻量的硬件资产以及软件资产进行统一协调管理,核心模型如下:

1.硬件资产模型

在强调高可用的互联网领域,建设多个数据中心(一主多从),构建多地多活应用,越来越成为主流趋势,并且同一个数据中心的鸡蛋也不是放在一个篮子里,而是通过服务单元进行Set化管理,每个篮子(Set)作为一个更细粒度的封闭部署单元,都可以对外提供同样服务,这种多Set化方式,更加灵活的提高了应用的可用性;同时一个Set又继续细分为多个应用集群,为了能最大化复用应用主机,每个物理的应用主机上抽象出了多个逻辑的应用节点,就像在一个机器上,部署了多个虚拟的应用容器,因此每个应用集群不是由应用主机直接构成,而是由应用节点构成。

2.软件资产模型

一个复杂的业务应用平台,必定是由很多应用构成的,识别出这些具有技术及业务功能属性的关键应用,就是抓住了整个应用平台的牛鼻子。关键应用可以按业务线进行划分,既包括可视化的系统,也包括非可视化的系统,每个系统都由一定数量的应用程序构成,每个应用程序都会有对应的实例,也就是最终运行在每个应用节点上的应用进程,每个应用进程可以通过应用主机、进程名以及部署路径进行唯一确定。通过这种从上到下的模型抽象,为准确监控应用系统运行状态并且及时定位应用系统运行故障,提供了深入到进程级别的有力支撑。

三、应用实践

特来电云平台基于CMDB在应用层面做了大量实践,积累了很多典型应用场景,以下概要谈一下在运维方面的应用场景。

1.监控预警

整个监控预警系统完全架构在CMDB之上,一方面监控预警的对象来自于CMDB中的基础数据,另一方面监控收集上来的基础数据,要定时与CMDB中的基础数据进行校对,如果有异常时,会通过预警通知运维人员,以保证CMDB数据的绝对准确。

2.应用拓扑大屏

应用拓扑大屏是对CMDB系统的实时展现,可以全方位查看整个系统的运行状态,同时与预警系统打通,当有预警发生时,会将对应应用节点标红,点击该节点,可以查看预警信息,并进一步联查全链路信息,直至钻取到存储在大数据系统中的异常信息,实现了多个系统数据联动。

3. 智能运维

智能运维是目前运维界的主流发展趋势,目的是通过机器学习的方式来进一步解决自动化运维所未能解决的问题,提高系统的预判能力、稳定性、降低IT成本,并提高企业的产品竞争力。特来电云平台在系统智能运维方面进行了探索性尝试,目前已经初见成效。当有预警发生时,通过计算预警携带的CMDB信息,一方面通过自动运维进行场景化处理,比如回收Web站点应用程序池、重启应用程序、转储应用日志等,通过这种点杀方式,防止预警事件进一步恶化为系统故障,另一方面利用机器学习算法,对预警发生时的数据进行决策分析,尝试找到预警发生的根因,以期后面从源头上切断预警发生的条件。

四、总结

基于公有云的CMDB建设需要采用集中化的轻量级解决方案,以业务线的关键应用为抓手,打通业务系统与CMDB之间的数据通道,让数据流动起来,最大化发挥CMDB的价值;同时要保证CMDB基础数据的绝对准确,为上层应用提供一致性的数据支撑。

五、特来电云计算与大数据微信公众号

1.微信公众号名称:特来电云计算与大数据

2.二维码:

特来电CMDB应用实践的更多相关文章

  1. 魅族CMDB运维自动化实践

    一.简介 原创:梁鹏 本文是根据魅族系统架构师梁鹏10月20日在msup携手魅族.Flyme.百度云主办的第十三期魅族技术开放日< 魅族CMDB运维自动化实践>演讲中的分享内容整理而成. ...

  2. 基于.net的微服务架构的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  3. 基于.net的微服务架构下的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  4. 【容器云】传统金融企业的 Docker 实践

    基于 Docker 的容器云-Padis 目前市面上基于容器云的产品有很多,对于平安而言,则是基于 Docker 的 Padis 平台.所谓 Padis,全称是 PingAn Distribution ...

  5. Python之路【第二十二篇】CMDB项目

    浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...

  6. Python学习路程CMDB

    本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infra ...

  7. 2016,除了 DevOps,企业还应该知道 CMDB!

    CMDB 是 Configuration Management Database(配置管理数据库)的简称,CMDB 存储与管理企业 IT 架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密 ...

  8. 构建CMDB的一些启发

    开篇感言: 自从学习python自动化开发以来,一直都是从技术的角度来看待一切.以为技术就是王道.但显然我是一只井底之蛙.其实技术只不过是实现功能的工具而已,仅此而已.后来学习了解CMDB,越来越发现 ...

  9. Python之路,Day19 - CMDB、CMDB、CMDB

    Python之路,Day19 - CMDB.CMDB.CMDB   本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT ...

随机推荐

  1. Linux CPU实时监控工具

    注:ubuntu需要安装sysstat: sudo apt install sysstat [root@testDb ~]# mpstat 1 10    ---显示操作系统内核版本 以及硬件配置   ...

  2. numpy.squeeze()的用法

    import numpy as np x = np.array([[[0], [1], [2]]]) print(x) """x= [[[0] [1] [2]]] &qu ...

  3. Ruby:Nokogiri

    阅读推荐: Nokogiri的用法我推荐三篇非常给力的文章: http://ruby.bastardsbook.com/chapters/html-parsing/ http://ruby.basta ...

  4. Android中常见的对话框

    1. 普通对话框 public void click01(View view){ AlertDialog.Builder builder = new AlertDialog.Builder(this) ...

  5. 自制“低奢内”CSS3登入表单,包含JS验证,请别嫌弃哦。

    要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识.和JS/JQuery基本语法. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到 ...

  6. 如何恢复windows的exe文件的默认打开方式

    事情由来: 有一次在用一个播放器选择打开视频文件的时候,意外的手贱点击打来了 exe 文件,之后戏剧性的恶心开始了,首先当然是打开失败,接着整个桌面的 exe 文件全部被替换成那个播放器的图标,然后所 ...

  7. Python学习--12 异常处理、调试

    异常捕获 语法格式: try: pass except xxx as e: pass except xxx as e: pass ... else: pass finally: pass except ...

  8. docker cgroup 技术之memory(首篇)

    测试环境centos7 ,内核版本4.20 内核使用cgroup对进程进行分组,并限制进程资源和对进程进行跟踪.内核通过名为cgroupfs类型的虚拟文件系统来提供cgroup功能接口.cgroup有 ...

  9. Git笔记:Git介绍和常用命令汇总

    Git 是一个开源的分布式版本控制系统,与 CVS, Subversion 等不同,它采用了分布式版本库的方式,不需要服务器端软件支持. 工作流程 Git 的工作流程大致如下: 克隆 Git 资源作为 ...

  10. Ubuntu下安装qq方法及疑难问题解决

    在Ubuntu下安装qq有两种方法:.tar.gz包安装和.deb包安装下载地址:http://im.qq.com/qq/linux/download.shtml 方法一:.tar.gz包安装法 .t ...