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