You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
6.5 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 07 | 有了CMDB为什么还需要应用配置管理
今天我们分享的主题是有了CMDB为什么还需要应用配置管理
你不妨先停下来,思考一下这个问题。
我抛出的观点是: **CMDB是面向资源的管理应用配置是面向应用的管理**
请注意,这里是面向“资源”,不是面向“资产”,资源 ≠资产。
## CMDB是面向资源的管理是运维的基石
我们一起来梳理一下,在建设运维的基础管理平台时通常要做的事情。
* **第1步**把服务器、网络、IDC、机柜、存储、配件等这几大维度先定下来
* **第2步**把这些硬件的属性确定下来比如服务器就会有SN序列号、IP地址、厂商、硬件配置如CPU、内存、硬盘、网卡、PCIE、BIOS、维保信息等等网络设备如交换机也会有厂商、型号、带宽等等
* **第3步**梳理以上信息之间的关联关系或者叫拓扑关系。比如服务器所在机柜虚拟机所在的宿主机、机柜所在IDC等简单关系复杂一点就会有核心交换机、汇聚交换机、接入交换机以及机柜和服务器之间的级联关系
* **第3.5步**在上面信息的梳理过程中肯定就会遇到一些规划问题比如IP地址段的规划哪个网段用于DB哪个网段用于大数据、哪个网段用于业务应用等等再比如同步要做的还有哪些机柜用于做虚拟化宿主机、哪些机柜只放DB机器等。
以上信息梳理清楚通过ER建模工具进行数据建模再将以上的信息固化到DB中一个资源层面的信息管理平台就基本成型了。
但是,**信息固化不是目的,也没有价值,只有信息动态流转起来才有价值**(跟货币一样)。接下来我们可以做的事情:
* **第4步**,基于这些信息进行流程规范的建设,比如服务器的上线、下线、维修、装机等流程。同时,流程过程中状态的变更要同步管理起来;
* **第5步**拓扑关系的可视化和动态展示比如交换机与服务器之间的级联关系、状态正常or故障的展示等这样可以很直观地关注到资源节点的状态。
至此,从资源维度的信息梳理,以及基于这些信息的平台和流程规范建设就算是基本成型了。这个时候,以服务器简单示例,我们的视角是下面这样的:
![](https://static001.geekbang.org/resource/image/25/e8/25f7203e9ce69c524bac80ea43f523e8.jpeg)
## 应用配置管理是面向应用的管理,是运维的核心
上面说明了CMDB的基础信息部分如果从传统的SA运维模式这些信息已经足够但是从应用运维的角度这些就远远不够了。
这时我们就需要一个非常非常重要的句柄:**应用名**,或者叫应用标识。至此,应用运维里面最最重要的一条联系也就产生了:**“应用名-IP“的关联关系**这里也可以是定义的其它唯一主机标识如主机名、容器ID等等因为我们使用的方式是IP所以这里就以IP示例
之所以说“应用名”和“应用名-IP关联关系”非常重要是因为它的影响力不仅仅在运维内部而是会一直延伸到整个技术架构上。后面我们会介绍到的所有平台和系统建设都跟这两个概念有关。
CMDB是IP为标识的资源管理维度有了应用名之后就是以应用为视角的管理维度了。首先看一下应用会涉及到的信息
* 应用基础信息如应用责任人、应用的Git地址等
* 应用部署涉及的基础软件包如语言包Java、C++、GO等、Web容器Tomcat、JBoss等、Web服务器Apache、Nginx等、基础组件各种agent如日志、监控、系统维护类的tsar等
* 应用部署涉及的目录,如运维脚本目录、日志目录、应用包目录、临时目录等;
* 应用运行涉及的各项脚本和命令,如启停脚本、健康监测脚本;
* 应用运行时的参数配置如Java的jvm参数特别重要的是GC方式、新生代、老生代、永生代的堆内存大小配置等
* 应用运行的端口号;
* 应用日志的输出规范;
* 其他。
上面的梳理过程实际就是标准化的过程。我们梳理完上述信息后就会发现这些信息跟CMDB里面的资源信息完全是两个维度的东西。所以从信息管理维度上讲把资源配置和应用配置分开会更清晰解耦之后也更容易管理。
**好了按照上面CMDB说的套路梳理完成后就是要进行信息的建模和数据的固化这时就有了我们的“应用配置管理”**。再往后,就是基于应用配置管理的流程规范和工具平台的建设,这就涉及到我们经常说的持续集成和发布、持续交付、监控、稳定性平台、成本管理等等。
从应用的视角,我们配置管理,应该是下面这样一个视图(简单示例,不是完整的):
![](https://static001.geekbang.org/resource/image/6e/cd/6ee5e2dc98630d233a3dbd4201f36dcd.jpeg)
好了,有了资源配置信息和应用配置信息,这两个信息应该怎么统一管理起来呢。直接看图:
![](https://static001.geekbang.org/resource/image/c8/6b/c8243cfbd07d99478a1b6193cb20b56b.jpeg)
至此CMDB和应用配置管理的分层分解就完成了应用名关联着应用配置信息IP关联着资源信息二者通过“应用名-IP”的对应关系联系到一起。
## 总结
**CMDB是运维的基石但是要发挥出更大的价值只有基础是不够的我们要把更多的精力放到上层的应用和价值服务上所以我们说应用才是运维的核心**
你可以看到如果仅仅基于CMDB的资源信息作自动化最多只能做出自动化的硬件资源采集、自动化装机、网络-硬件拓扑关系生成等资源层面的工具,这些工具只会在运维层面产生价值,离业务还很远,就更谈不上给业务带来价值了。
但是基于应用这一层去做,就可以做很多事情,比如持续集成和发布、持续交付、弹性扩缩容、稳定性平台、成本控制等等,做这些事情带来的价值就会大大不同。
以上就是我抛出的观点CMDB是面向资源的管理应用配置是面向应用的管理。希望能够抛砖引玉听到更多你的观点和反馈。
如果今天的内容对你有用,也希望你分享给身边的朋友,我们下期见!