• CMDB 部署文档
    • 依赖第三方组件
    • CMDB 微服务进程清单
      • 1. web层服务进程
      • 2. 服务网关进程
      • 3. 场景层服务进程
      • 4. 资源管理服务进程
    • 部署介绍
      • 1. 部署ZooKeeper
      • 2. 部署Redis
      • 3. 部署MongoDB
      • 4. Release包下载
      • 5. 配置数据库
      • 6. 部署CMDB
      • 7. 初始化
      • 8. init.py 生成的配置如下
    • 运行效果
      • 1. 启动服务
      • 2. 服务启动之后初始化数据库
      • 3. 系统运行页面
      • 4. 停止服务

    CMDB 部署文档

    依赖第三方组件

    • ZooKeeper >= 3.4.11
    • Redis >= 3.2.11
    • MongoDB >= 2.8.0

    CMDB 微服务进程清单

    1. web层服务进程

    • cmdb_webserver

    2. 服务网关进程

    • cmdb_apiserver

    3. 场景层服务进程

    • cmdb_adminserver
    • cmdb_eventserver
    • cmdb_hostserver
    • cmdb_procserver
    • cmdb_toposerver
    • cmdb_datacollection

    4. 资源管理服务进程

    • cmdb_auditcontroller
    • cmdb_hostcontroller
    • cmdb_objectcontroller
    • cmdb_proccontroller

    部署介绍

    1. 部署ZooKeeper

    请参看官方资料 ZooKeeper

    推荐版本下载: ZooKeeper 3.4.12

    2. 部署Redis

    请参看官方资料 Redis

    推荐版本下载: Redis 3.2.11

    3. 部署MongoDB

    请参考官方资料 MongoDB

    推荐版本下载:MongoDB 2.8.0

    4. Release包下载

    官方发布的 Linux Release 包下载地址见这里。如果你想自已编译,具体的编译方法见这里。

    5. 配置数据库

    1. Redis需要打开auth认证的功能,并为其配置密码
    2. 安装MongoDB后,创建数据库 cmdb
    3. 为新创建的数据库设置用户名和密码

    MongoDB 示例:

    登陆MongoDB后执行以下命令:

    1. > use cmdb
    2. > db.createUser({user: "cc",pwd: "cc",roles: [ { role: "readWrite", db: "cmdb" } ]})

    注:以上用户名、密码、数据库名仅作示例展示,用户使用中可以更具实际情况自行配置。如果安装的MongoDB的版本大于等于3.6,需要手动修改init.py自动生成的配置文件,详细步骤参看init.py相关小节。

    详细手册请参考官方资料 MongoDB

    6. 部署CMDB

    编译后下载 cmdb.tar.gz

    在目标机上解压包解cmdb.tar.gz,解压后根目录结构如下:

    1. -rwxrwxr-x 1 1004 1004 1.2K Mar 29 14:45 upgrade.sh
    2. -rwxrwxr-x 1 1004 1004 312 Mar 29 14:45 stop.sh
    3. -rwxrwxr-x 1 1004 1004 874 Mar 29 14:45 start.sh
    4. -rwxrwxr-x 1 1004 1004 28K Mar 29 14:45 init.py
    5. -rwxrwxr-x 1 1004 1004 235 Mar 29 14:45 init_db.sh
    6. -rwxrwxr-x 1 1004 1004 915 Mar 29 14:45 image.sh
    7. drwxrwxr-x 2 1004 1004 4.0K Mar 31 14:45 web
    8. drwxrwxr-x 2 1004 1004 4.0K Mar 29 14:45 docker
    9. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_adminserver
    10. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_webserver
    11. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_apiserver
    12. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_toposerver
    13. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_procserver
    14. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_hostserver
    15. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_eventserver
    16. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_datacollection
    17. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_proccontroller
    18. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_objectcontroller
    19. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_auditcontroller
    20. drwxrwxr-x 3 1004 1004 4.0K Mar 29 14:45 cmdb_hostcontroller

    各目录代表的服务及职责:

    目标 类型 用途描述
    upgrade.sh script 用于全量升级服务进程
    stop.sh script 用于停止所有服务
    start.sh script 用于启动所有服务
    init.py script 用于初始化服务及配置项,在需要重置服务配置的时候也可以运行此脚本,按照提示输入配置参数
    init_db.sh script 初始化数据库的数据
    image.sh script 用于制作Docker镜像
    web ui CMDB UI 页面
    docker Dockerfile 各服务的Dockerfile模板
    cmdb_adminserver server 负责系统数据的初始化以及配置管理工作
    cmdb_webserver server web server 服务子目录
    cmdb_apiserver server 场景层服务,api 服务
    cmdb_toposerver server 场景层服务,负责模型的定义以及主机、业务、模块及进程等实例数据的维护
    cmdb_procserver server 场景层服务,负责进程数据的维护
    cmdb_hostserver server 场景层服务,主机数据维护
    cmdb_eventserver server 场景层服务,事件推送服务
    cmdb_datacollection server 场景层服务,数据采集服务
    cmdb_proccontroller controller 进程资源数据维护基础接口
    cmdb_objectcontroller controller 模型数据维护接口
    cmdb_auditcontroller controller 审计数据维护服务
    cmdb_hostcontroller controller 主机数据维护服务

    7. 初始化

    假定安装目录是 /data/cmdb/

    进入安装目录并执行初始化脚本,按照提示输入参数

    1. [root@SWEBVM000229 /data/cmdb]# python init.py
    2. usage:
    3. --discovery <discovery> the ZooKeeper server address, eg:127.0.0.1:2181
    4. --database <database> the database name, default cmdb
    5. --redis_ip <redis_ip> the redis ip, eg:127.0.0.1
    6. --redis_port <redis_port> the redis port, default:6379
    7. --redis_pass <redis_pass> the redis user password
    8. --mongo_ip <mongo_ip> the mongo ip ,eg:127.0.0.1
    9. --mongo_port <mongo_port> the mongo port, eg:27017
    10. --mongo_user <mongo_user> the mongo user name, default:cc
    11. --mongo_pass <mongo_pass> the mongo password
    12. --blueking_cmdb_url <blueking_cmdb_url> the cmdb site url, eg: http://127.0.0.1:8088 or http://bk.tencent.com
    13. --blueking_paas_url <blueking_paas_url> the blueking paas url, eg: http://127.0.0.1:8088 or http://bk.tencent.com
    14. --listen_port <listen_port> the cmdb_webserver listen port, should be the port as same as -c <cc_url> specified, default:8083

    init.py 参数详解:

    ZooKeeper地址 用途说明 必填 默认值
    —discovery 服务发现组件,ZooKeeper 服务地址
    —database 数据库名字 mongodb 中数据库名 cmdb
    —redis_ip Redis监听的IP
    —redis_port Redis监听的端口 6379
    —redis_pass Redis登陆密码
    —mongo_ip MongoDB服务监听的IP
    —mongo_port MongoDB端口 27017
    —mongo_user MongoDB中CMDB数据库用户名
    —mongo_pass MongoDB中CMDB数据库用户名密码
    —blueking_cmdb_url 该值表示部署完成后,输入到浏览器中访问的cmdb 网址, 格式: http://xx.xxx.com:80, 用户自定义填写;在没有配置 DNS 解析的情况下, 填写服务器的 IP:PORT。端口为当前cmdb_webserver监听的端口。
    —blueking_paas_url 蓝鲸PAAS 平台的地址,对于独立部署的CC版本可以不配置
    —listen_port cmdb_webserver服务监听的端口,默认是8083 8083

    注:init.py 执行成功后会自动生成cmdb各服务进程所需要的配置。

    示例(示例中的参数需要用真实的值替换):

    1. python init.py --discovery 127.0.0.1:2181 --database cmdb --redis_ip 127.0.0.1 --redis_port 6379 --redis_pass cc --mongo_ip 127.0.0.1 --mongo_port 27017 --mongo_user cc --mongo_pass cc --blueking_cmdb_url http://127.0.0.1:8083 --listen_port 8083

    8. init.py 生成的配置如下

    配置文件的存储路径:{安装目录}/cmdb_adminserver/configures/

    1. -rw-r--r-- 1 root root 200 Feb 28 17:20 apiserver.conf
    2. -rw-r--r-- 1 root root 175 Feb 28 18:17 auditcontroller.conf
    3. -rw-r--r-- 1 root root 381 Feb 28 17:19 datacollection.conf
    4. -rw-r--r-- 1 root root 424 Feb 28 17:21 eventserver.conf
    5. -rw-r--r-- 1 root root 26 Feb 28 17:38 host.conf
    6. -rw-r--r-- 1 root root 295 Feb 28 17:36 hostcontroller.conf
    7. -rw-r--r-- 1 root root 463 Feb 28 17:18 objectcontroller.conf
    8. -rw-r--r-- 1 root root 26 Feb 28 17:36 proc.conf
    9. -rw-r--r-- 1 root root 293 Feb 28 17:35 proccontroller.conf
    10. -rw-r--r-- 1 root root 285 Feb 28 17:20 topo.conf
    11. -rw-r--r-- 1 root root 437 Mar 8 17:19 webserver.conf
    12. -rw-r--r-- 1 root root 437 Mar 8 17:19 migrate.conf

    配置文件目录:{安装目录}/cmdb_adminserver/configures

    注:由于MongoDB 从3.6开始更改了默认加密方式,所以如果安装的MongoDB的版本大于等于3.6,需要手动将以上配置文件中MongoDB的配置项中增加 mechanism=SCRAM-SHA-1

    配置文件mongodb小节增加mechanism 配置项示例如下

    1. [mongodb]
    2. host=127.0.0.1
    3. usr=cc
    4. pwd=cc
    5. database=cmdb
    6. port=27017
    7. maxOpenConns=3000
    8. maxIDleConns=1000
    9. mechanism=SCRAM-SHA-1

    运行效果

    1. 启动服务

    1. [root@SWEBVM000229 /data/cmdb-changevar]# ./start.sh
    2. starting: cmdb_adminserver
    3. starting: cmdb_apiserver
    4. starting: cmdb_auditcontroller
    5. starting: cmdb_datacollection
    6. starting: cmdb_eventserver
    7. starting: cmdb_hostcontroller
    8. starting: cmdb_hostserver
    9. starting: cmdb_objectcontroller
    10. starting: cmdb_proccontroller
    11. starting: cmdb_procserver
    12. starting: cmdb_test
    13. starting: cmdb_toposerver
    14. starting: cmdb_webserver
    15. root 13461 1 0 18:05 pts/0 00:00:00 ./cmdb_adminserver --addrport=127.0.0.1:60004 --logtostderr=false --log-dir=./logs --v=0 --config=conf/migrate.conf
    16. root 13479 1 0 18:05 pts/0 00:00:00 ./cmdb_apiserver --addrport=127.0.0.1:8080 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    17. root 13498 1 0 18:05 pts/0 00:00:00 ./cmdb_auditcontroller --addrport=127.0.0.1:50005 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    18. root 13516 1 0 18:05 pts/0 00:00:00 ./cmdb_datacollection --addrport=127.0.0.1:60005 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    19. root 13533 1 0 18:05 pts/0 00:00:00 ./cmdb_eventserver --addrport=127.0.0.1:60009 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    20. root 13551 1 0 18:05 pts/0 00:00:00 ./cmdb_hostcontroller --addrport=127.0.0.1:50002 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    21. root 13569 1 0 18:05 pts/0 00:00:00 ./cmdb_hostserver --addrport=127.0.0.1:60001 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    22. root 13587 1 0 18:05 pts/0 00:00:00 ./cmdb_objectcontroller --addrport=127.0.0.1:50001 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    23. root 13605 1 0 18:05 pts/0 00:00:00 ./cmdb_proccontroller --addrport=127.0.0.1:50003 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    24. root 13624 1 0 18:05 pts/0 00:00:00 ./cmdb_procserver --addrport=127.0.0.1:60003 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    25. root 13641 1 0 18:05 pts/0 00:00:00 ./cmdb_toposerver --addrport=127.0.0.1:60002 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    26. root 13658 1 0 18:05 pts/0 00:00:00 ./cmdb_webserver --addrport=127.0.0.1:8083 --logtostderr=false --log-dir=./logs --v=0 --regdiscv=127.0.0.1:2183
    27. process count should be: 12 , now: 12
    28. Not Running: cmdb_test

    注:此处cmdb_test仅用作效果展示,非有效进程。

    2. 服务启动之后初始化数据库

    1. [root@SWEBVM000229 /data/cmdb]# bash ./init_db.sh
    2. {"result":true,"bk_error_code":0,"bk_error_msg":"success","data":"migrate success"}

    注:以上输出表示初始化数据库成功,此步骤必需要所有cmdb进程成功启动后执行。

    3. 系统运行页面

    打开浏览器: 数据cmdb_webserver 监听的地址,如本文档中示例服务监听的地址: http://127.0.0.1:8083

    image

    4. 停止服务

    1. [root@SWEBVM000229 /data/cmdb]# ./stop.sh
    2. Running process count: 0