bk-cmdb是什么?
是一个基于运维场景设计的企业配置管理服务。
是一个面向应用设计的cmdb。
是一个一业务为导向设计的配置管理服务。
bk-cmdb概述
bk-cmdb使用GO开发,核心是聚焦于资源,把CMDB管理的原子资源分为主机、进程和通用对象三种类型,并构建了对这些资源的原子操作层。在这些原子操作之上,构建场景层,场景层通过对不通资源的组合操作来完成用的请求。
bk-cmdb定位
传统的IT体系是从下至上的结构,底层配置服务的可靠性、可塑性和可扩展性,很大程度上决定了上层应用的广度,所以构建或选择一套完善的配置服务平台对于企业来说很关键,它必须是能够满足随着企业发展延伸的各种需求场景扩展,反之当企业的IT体系在已经成熟的情况下,在去选择更换底层配置系统就会带来灾难性的变迁工程。
bk-cmdb有什么功能?
bk-cmdb结构设计
配置平台整体分为分层的微服务设计,可以分为四层:
资源层(store):提供系统所需的资源存储、消息队列以及关村服务
mongodb:存储平台信息
redis:存储快照信息
zookeeper:提供服务注册与发现,配置管理
服务层(service layer):服务层划分两大模块
资源管理模块:把资源类型进行抽象,划分为主机、进程、通用对象三大类,支持横向扩展,每一类资源由一类微服务进程来管理
业务场景模块:基于资源管理的原子接口对应用场景的封装,基于操作的相关度,目前划分出admin(负责系统的配置刷新、初始化数据写入等操作)、event(负责系统的事件订阅与推送服务)、host(主机场景)、topo(拓扑模型)、process(系统进程)、datacollection(负责系统快照数据的接收与写入)几个微服务。
接口层(api):提供api服务网关
web层(web):提供web服务(前台页面)
bk-cmdb为什么这样设计?
整体分为四层,除了API网关和最底层的存储,中间的逻辑部分按照资源的操作边界进行了分层,分为业务场景层和资源管理层。
每个服务都有清晰的边界,没有直接的耦合且是无状态的,去中心化。
采用这种基于资源的分层设计,充分发挥了微服务架构中的服务复用的特点,具有以下特点:
可扩展性
如果业务场景需要扩展,只需要重新开发新的场景层服务,并复用资源管理层的服务和接口。新增的服务并不影响现有各服务的功能。 同样如果需要增加新的管理资源类型,只需要新开发对应的资源管理服务,并不影响既有资源管理服务的运行和场景层服务的功能。
易于监控
将资源的原子管理和复杂的场景分开,可以将资源操作的情况标准化、流程化,资源变更的捕获和推送也更精确。同时,场景层只聚焦于专有场景的业务逻辑,在链路监控上的处理也更明确清晰。
系统热更新
得益于微服务架构的特点,资源管理和场景类服务分层处理后,新增的场景服务,和新增的资源管理服务都可以在不影响线上环境既有部署的情况下增量发布,并通过类似蓝绿发布或金丝雀发布的方式控制灰度的过程。
bk-cmdb使用场景
事件推送: 当CMDB管理的资源发生变化的时候会有相应的事件产生,这些事件可以通过订阅的方式由CMDB主动推送给订阅方。
模型管理: 通过模型管理可以对企业架构、业务拓扑以及IT基础设施中的各种元素和元素的各种属性进行自定义,以满足生产管理的需要。
拓扑管理: 拓扑管理可以用于描述已定义的各种模型之间的关系,如主线关联可以用于描述业务的拓扑结构。
主机管理: 通过模型管理功能对主机及其拥有的属性进行定义,并结合拓扑管理功能对已经定义的主机进行管理。如在某个业务下划分集群和模块,将主机与对应的模块进行关联,以此明确此业务下主机的分布情况。当主机与云区域进行关联后也可以方便的实现对主机的跨云管理的能力。
bk-cmdb的价值
提供了自定义CI管理,可以方便地实现内置CI属性的拓展,同时也能够根据不同的企业需求动态新增CI和关联关系,此外,主机数据快照、自动发现、变更事件主动推送等功能增强了CMDB的联动能力,提升配置录入的效率和配置信息的准确性。
支持把主机、存储、中间件、网络设备等各类IT资源纳入到CMDB的管理中。运维人员能够根据实际需要,在CMDB中建设业务资源拓扑、导入资源以及状态管理。通过无缝对接发布变更、监控、故障处理等自动化运维系统,进而实现以CMDB为核心的资源管理和自动化运维。
bk-cmdb有哪些优点?
可视化的业务拓扑
开放的API接口
开源可二次开发
自定义模型
bk-cmdb有哪些缺点?
对于主机的管理相对较弱
设计于体系之中,单独使用还需要二次开发
总结
bk-cmdb打破了传统的资产主机管理理念,而是以业务拓扑形式展现,可更加的直观信息也能描述的更加清晰。
bk-cmdb设计之初定于定位于通用且为IT底层的配置管理,所以需要根据业务场景去使用,并且因设计于体系之中,所以扩展需要有一定开发能力。
PS:我这里只是介绍了下bk-cmdb的设计及理念,更多的细节及使用并未介绍(官方文档比较清楚)如有兴趣的同学可在深入研究。
开源地址:https://github.com/Tencent/bk-cmdb