安装 CMDB 及依赖

cmdb是蓝鲸的配置平台,数据库采用mongodb,服务发现和配置管理使用zookeeper,快照数据使用redis存储,快照采集依赖gse。

CMDB的架构可以参考github上的《蓝鲸智云配置平台的架构设计》

CMDB依赖的组件和服务如下:

CMDB依赖简图

github上也有cmdb的安装说明,蓝鲸社区版集成时稍微做了些规范改造和安装自动化,需要了解为什么这样安装mongodb的,可以阅读《CMDB部署文档》

安装 MongoDB

安装cmdb的依赖中,mongodb是最重要的存储依赖,且目前只有cmdb独享,故先介绍mongodb的安装

  1. ./bkcec install mongodb
  2. ./bkcec initdata mongodb
  3. ./bkcec start mongodb

详解:

  • mongodb 二进制在蓝鲸的 service/ 目录下已经自包含,所以安装时直接用 rsync 将 src/service/mongodb 目录同步到 bkce/service/下即可。

  • mongodb的配置文件模板只有一个 mongodb.yaml,里面具体配置的含义,请参考MongoDB官方的配置说明文档

  • 初始化mongodb

    • 首先以不开启鉴权的方式启动mongodb,并创建管理员sysadmin的角色,和globals.env里定义的$MONGODB_USER用户,并配置为sysadmin角色。
    • 创建 bk_cmdb 用户,创建 cmdb 数据库,并授予 bk_cmdb 用户读写它的权限。
    • 关闭 mongodb 进程
  • 调用 $INSTALL_PATH/service/mongodb/bin/mongodb.sh start 启动 mongodb

安装 Zookeeper

zookeeper作为cmdb的服务发现组件,开始安装。

  1. ./bkcec install zk
  2. ./bkcec start zk

详解:

  • 拷贝java和zookeeper代码目录到 $INSTALL_PATH/service/下
  • 渲染配置文件模板,主要是zoo.cfg,并创建软连接到$INSTALL_PATH/etc/zoo.cfg
  • 启动 zk

安装 cmdb

需要特别注意的是 cmdb 先启动,再初始化数据

  1. ./bkcec install cmdb
  2. ./bkcec start cmdb
  3. ./bkcec initdata cmdb

详解:

  • 安装 cmdb
    • 安装依赖,从 dependences.env 里读取到 cmdb 依赖 nginx。需要先 yum 安装 nginx
    • rsync将 src/cmdb 拷贝到 bkcec/下
    • 创建一个名为 cmdb 的虚拟环境,给supervisord使用
    • 渲染 cmdb 模板文件
    • 软连接 bkcec/etc/nginx.conf 到 /etc/nginx/nginx.conf 覆盖 nginx 默认的配置
    • 将globals.env里配置的 CMDB_FQDN 域名写入 /etc/hosts
  • 启动 cmdb
    • 需要等待 zk服务可用,通过 dig +short zk.service.consul 是否解析成功来判断。
    • 启动 nginx,如果nginx进程已经启动,则 reload
    • workon cmdb; supervisord -c $INSTALL_PATH/etc/supervisor-cmdb-server.conf 启动 cmdb 后台进程
    • 启动 cmdb 后,cmdb_adminserver 会将所有进程的配置文件写入 zk 节点内,其他进程启动时从 zk 读取配置
  • 初始化 cmdb
    • 初始化 cmdb 前需要保证所有 cmdb 后台进程的端口均可用。如果不可用说明启动cmdb虽然进程running,但是端口未监听,此时可以尝试重启 cmdb
    • 调用 cmdb_adminserver 的http接口(/migrate/v3/migrate/community/0),来初始化cmdb

安装 GSE

CMDB的快照数据,依赖蓝鲸组件 gse 后台:

  1. ./bkcec install gse
  2. ./bkcec initdata gse
  3. ./bkcec start gse

详解:

  • 安装 GSE
    • 拷贝gse后台,cert目录到$INSTALL_PATH/下
    • 根据globals.env里是否自动获取外网ip配置,来设定gse需要监听的ip地址
    • 渲染配置模板
    • 将agent,proxy,和证书打包,并传到nginx的miniweb下,供安装agent时使用。
  • 初始化 GSE 的zk默认配置
  • 启动 GSE 后台进程