背景
我是18年左右正式开始的行业所谓的”运维“之路的。不怕读者笑话,在这之前,我的运维经验停留在自己用虚拟机搭建大数据相关的组件,比如Hadoop、Spark。
这四年多的时间有限经验里,我一直无法理解行业里说的CMDB的作用。当然,我看到的CMDB,可能不能代表所有的。
本文写的是建设CMDB的另一种思路,希望对读者有帮助,也希望有思想的火花出现。
从CMDB的定义出发,它的全称是:Configuration Management Database,即配置管理数据库。
在这个定义中,光”配置“一词,就有很多歧义。比如在配置管理领域,有人把文档的管理也看作是配置管理,因为他把配置管理看作是软件资产的管理。
所以,基于CMDB的定义的讨论,我们的讨论大概率是没有结果的。本文假设是公司已经存在大量手工运维的情况下进行CMDB的建设。
我们假设CMDB的功能之一是能快速查出某个应用所在的虚拟机的IP。要建设有这样一个功能的CMDB。有两种思路:
- 思路一:被动的建设
- 思路二:主动的建设
被动的建设思路
”能快速查出某个应用所在的虚拟机的IP“的本质问题就是应用与IP之间的关联关系。被动的建设思路获取此信息的方式通常以下步骤完成:
- 当创建完虚拟机后,基础运维人员会在虚拟机上运行一个CMDB agent(当然,高级点的会直接在操作系统镜像中就已经有agent了),然后这个agent负责向CMDB上报IP信息。
- 应用部署人员登录到CMDB系统中,创建应用,再与相应的IP进行关联。
某些CMDB agent除了上报IP信息,还会主动收集该虚拟机上部署的中间件,如MySQL、Kafka等。
这个过程看上去是agent在主动的建设CMDB,但,我称之为被动的CMDB建设思路,就是只站在软件工程中的一个很小环节中考虑如何建设CMDB。
这种思路下的CMDB,大家什么数据都丢进去,感觉像是什么数据都有,但是这些数据又经常不准确。CMDB不再是配置管理数据库,更像是一个垃圾堆。
主动的建设思路
主动的建设思路会基于以下步骤:
- 标准化部署方式,全面实现自动化部署。包括基础设施的自动化,如虚拟机的自动化创建;
- 从部署过程中收集所有的信息。当虚拟机自动化创建时,就自动化IP信息同步到CMDB中。当应用部署时,自动化将应用与IP之间的关系同步到CMDB中。
在步骤1时,最难,也是最重要的就是规范大家部署方式。你需要制定一个云原生应用规范和统一的基础设施自动化规范。
对于人的能力,这个过程需要领导有非常强大的魅力,需要具体实施人员有足够的耐心和丰富的自动化运维经验。因为,在执行过程中,你还不能影响业务开发进度。
小结
在夏秋交替之际,小孩体温达到38.5度,发烧了。被动的方式是不管三七十一,直接吃布洛芬退烧药。主动的方式是检查是因为什么引起的发烧,然后对诊下药,烧自动退。
被动的CMDB建设思路就相当于直接吃退烧药,一开始感觉是舒服一点了。但是如果没有根治发热的原因,发烧会反复。
主动的CMDB建设思路是在实现自动化部署的过程,将CMDB建设完成的。因为它知道CMDB数据不准的问题,只是表象,根本原因是没有很好的实现自动化部署及自动化的配置管理。
网友评论