特来电CMDB应用实践
配置管理数据库(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应用实践的更多相关文章
- 魅族CMDB运维自动化实践
一.简介 原创:梁鹏 本文是根据魅族系统架构师梁鹏10月20日在msup携手魅族.Flyme.百度云主办的第十三期魅族技术开放日< 魅族CMDB运维自动化实践>演讲中的分享内容整理而成. ...
- 基于.net的微服务架构的开发测试环境运维实践
眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...
- 基于.net的微服务架构下的开发测试环境运维实践
眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...
- 【容器云】传统金融企业的 Docker 实践
基于 Docker 的容器云-Padis 目前市面上基于容器云的产品有很多,对于平安而言,则是基于 Docker 的 Padis 平台.所谓 Padis,全称是 PingAn Distribution ...
- Python之路【第二十二篇】CMDB项目
浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...
- Python学习路程CMDB
本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infra ...
- 2016,除了 DevOps,企业还应该知道 CMDB!
CMDB 是 Configuration Management Database(配置管理数据库)的简称,CMDB 存储与管理企业 IT 架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密 ...
- 构建CMDB的一些启发
开篇感言: 自从学习python自动化开发以来,一直都是从技术的角度来看待一切.以为技术就是王道.但显然我是一只井底之蛙.其实技术只不过是实现功能的工具而已,仅此而已.后来学习了解CMDB,越来越发现 ...
- Python之路,Day19 - CMDB、CMDB、CMDB
Python之路,Day19 - CMDB.CMDB.CMDB 本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT ...
随机推荐
- 善用Intellij插件可大幅提升我们的效率
转自 :https://www.jianshu.com/p/686ba0ae4ac2 1. .ignore 生成各种ignore文件,一键创建git ignore文件的模板,免得自己去写 截图: 2. ...
- C# 多线程八之并行Linq(ParallelEnumerable)
1.简介 关于并行Linq,Ms官方叫做并行语言集成(PLINQ)查询,其实本质就是Linq的多线程版本,常规的Linq是单线程的,也就是同步的过程处理完所有的查询.如果你的Linq查询足够简单,而且 ...
- 帝国CMS-后台管理工具
后台管理工具 apache+mysql 搭建的后台管理工具 参考手册*************http://www.phome.net/doc/ecmsedu/ 1.安装----- 使用的一键安装包. ...
- JVM 运行时数据区详解
一.运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域. 1.有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,所有的线程共享这些数据区. 2.第二种则 ...
- PHP之高性能I/O框架:Libevent(二)
Event扩展 Event可以认为是替代libevent最好的扩展,因为libevent已经很久不更新了,而Event一直在更新,而且Event支持更多特性,使用起来也比libevent简单. Eve ...
- Vue + Element UI 实现权限管理系统 前端篇(一):搭建开发环境
技术基础 开发之前,请先熟悉下面的4个文档 vue.js2.0中文, 优秀的JS框架 vue-router, vue.js 配套路由 vuex,vue.js 应用状态管理库 Element,饿了么提供 ...
- Linux安装codis
codis用go语言开发的,安装前记得先安装go开发环境,Linux安装go语言开发包 前提条件:记得安装git,否则无法下载go语言开发包 1.建立一个go语言的工作目录创建目录:sudo mkdi ...
- C语言中求字符串的长度
在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include <string.h>) 因为C语言字符串是以 \0 结尾表示 ...
- CentOS Basic XLib functionality test failed!
在CentOS上安装个Qt库时,下好源代码之后执行: ./configure检查环境时,出现: Basic XLib functionality test failed! You might need ...
- redis-小用
1.redis之flushall.flushdb‘尴尬’操作恢复 redis是基于内存的一种高效数据库,在内存中高效但是不安全,重启和断电都会导致数据丢失.所以就需要用到数据的持久化,redis有两种 ...