安装环境准备

开始安装蓝鲸社区版前,需按以下文档指南,做好准备工作。

获取安装包

蓝鲸社区版包含部署脚本、产品软件和开源组件。蓝鲸提供完整包与分包的下载通道,请自行到下载地址按需获取。新装环境及新用户建议下载完整包使用。

下载地址: https://bk.tencent.com/download/

下载完成后,请核对MD5码。

硬件选择

对于蓝鲸部署所需的硬件配置选型,并无定规。蓝鲸由众多开源组件和自研组件构成。开源组件的硬件选型可以参考相应的官方文档,参见附录。

蓝鲸产品本身的建议配置如下:

  • PaaS: 2核4G
  • Cmdb: 2核2G
  • Job: 2核4G
  • Bkdata: 4核12G
  • fta: 1核2G
    如果硬件资源富余,可以一开始拆分搭建部署。若硬件资源不足,一开始可以混合搭建,注意观测资源消耗情况,可以适时增加机器,迁移模块的方式来保证整体的可用性。

资源规划是一个复杂的、动态的过程,更像是一门艺术而不是科学。

这里给出的一个比较合理的初始配置,基于以下考虑:

  • 分布式模块达到高可用至少三个节点,所以至少需要三个OS(物理机或虚拟机均可)
  • Bkdata是耗费资源最多的蓝鲸组件。请分配到4核16G以上的机器。
  • 若日志检索,蓝鲸监控是主要使用场景,请给influxdb和elasticsearch模块更多的内存,更好磁盘性能比如SSD。
  • nginx模块所在的机器需要有对外提供服务,可访问的IP。这是蓝鲸平台的总入口。
  • 如果需要有跨云管理需求,gse部署的机器需要有跨云的网络条件。
    根据以上考虑,安装蓝鲸初始配置,请满足:

  • 1台4核16G

  • 2台4核8G

CentOS系统设置

准备好硬件,安装完原生CentOS系统后。我们需要对初始系统做一些配置,保证后续安装过程的顺畅,和蓝鲸平台的运行。注意:所有待安装蓝鲸的机器均需要按以下清单检查和操作。

  • 关闭SELinux
  1. # 检查SELinux的状态,如果它已经禁用,可以跳过后面的命令
  2. $ sestatus

可以使用以下命令禁用SELinux,或者修改配置文件:

  1. # 通过命令禁用SELinux
  2. $ setenforce 0
  3. # 或者修改配置文件
  4. $ sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

接着,重启机器:

  1. $ reboot
  • 安装rsync命令

    安装脚本依赖rsync分发同步文件。

  1. # 检查是否有rsync命令,如果有返回rsync路径,可以跳过后面的命令
  2. $ which rsync
  3. # 安装rsync
  4. $ yum -y install rsync
  • 关闭默认防火墙(firewalld)

    安装和运行蓝鲸时,模块之间互相访问的端口策略较多,建议对蓝鲸后台服务器之间关闭防火墙。

  1. # 检查默认防火墙状态, 如果返回not running,可以跳过后面的命令
  2. firewall-cmd --state

停止并禁用firewalld:

  1. systemctl stop firewalld # 停止firewalld
  2. systemctl disable firewalld # 禁用firewall开机启动
  • 调整最大文件打开数
  1. # 检查当前root账号下的max open files值
  2. ulimit -n

如果为默认的1024,建议通过修改配置文件调整为102400或更大。

  1. cat <<EOF > /etc/security/limits.d/99-nofile.conf
  2. root soft nofile 102400
  3. root hard nofile 102400
  4. EOF

这里使用的单独的配置文件覆盖/etc/security/limits.conf默认值的方式,请根据系统环境自行调整。

修改后,重新使用root登录检查是否生效。

  • 确认服务器时间同步

    服务器后台时间不同步会对时间敏感的服务带来不可预见的后果。务必在安装和使用蓝鲸时保证时间同步。

  1. # 检查每台机器当前时间和时区是否一致,若相互之间差别大于3s(考虑批量执行时的时差),建议校时。
  2. date -R
  3. # 查看和ntp server的时间差异(需要外网访问,如果内网有ntpd服务器,自行替换域名为该服务的地址)
  4. ntpdate -d cn.pool.ntp.org

如果输出的最后一行offset大于1s建议校时

  1. # 和ntp服务器同步时间
  2. ntpdate cn.pool.ntp.org

更可靠的方式包括通过运行ntpd或者chrony等服务在后台保持时间同步。具体请参考官方文档使用ntpd配置NTP使用chrony配置NTP

  • 检查是否存在全局HTTP代理

    蓝鲸服务器之间会有的http请求,如果存在http代理,且未能正确代理这些请求,会发生不可预见的错误。

  1. # 检查http_proxy https_proxy变量是否设置,若为空可以跳过后面的操作
  2. $ echo "$http_proxy" "$https_proxy"

对于本机配置http_proxy变量的方式,请依次查找文件/etc/profile、/etc/bashrc、$HOME/.bashrc等是否有设置。 或者咨询网络管理员/IT部门协助处理。

在这些主机中,选择任意一台机器作为蓝鲸的运维中控机。之后的安装命令执行,如果没有特别说明,均在这台中控机上执行。

将下载的蓝鲸社区版完整包上传到中控机,并解压到 同级 目录下。以解压到/data 目录为例:

  1. tar xf bkce_src-5.0.3.tar.gz -C /data

解压之后, 得到两个目录: src, install

  • src: 存放蓝鲸产品软件, 以及依赖的开源组件
  • install: 存放安装部署脚本、安装时的参数配置、日常运维脚本等

配置 YUM 源

在所有蓝鲸服务器上配置好 yum 源,要求该 yum 源包含 EPEL。

不能连外网YUM源的环境, 可以配置一个内部的 yum 源 或者本地 YUM 源

本地 YUM 源

参考附录中的 离线安装的配置方法

在线 YUM 源

推荐使用以下 yum 源

配置文件

在 install 目录下, 共有三个配置

  • install.config
  • globals.env
  • ports.env

install.config

install.config 是模块和服务器对应关系的配置文件,描述在哪些机器上安装哪些模块。每行两列,第一列是IP地址;第二列是以英文逗号分隔的模块名称。详情参考install.config.3IP.sample文件(可将install.config.3IP.sample 复制为install.config)。

  1. 10.0.1.1 nginx,appt,rabbitmq,kafka,zk,es,bkdata,consul,fta
  2. 10.0.1.2 mongodb,appo,kafka,zk,es,mysql,beanstalk,consul
  3. 10.0.1.3 paas,cmdb,job,gse,license,kafka,zk,es,redis,consul,influxdb

说明:

  • 该配置文件,ip 后面使用空格与服务名称隔开,含有多个内网 ip 的机器,默认使用 /sbin/ifconfig 输出中的第一个内网ip, 在 ip 后面写上该机器要安装的服务列表即可, 部署过程中默认使用标准私有地址, 若企业环境使用非标准私有地址, 请参考非标准内网ip处理的处理方法。
  • zk 表示 zookeeper, es 表示 elasticsearch
  • gse 与 redis 需要部署在同一台机器上
  • gse 若需要跨云支持, gse 所在机器必须有外网 IP
  • 增加机器数量时, 可以将以上配置中的服务挪到新的机器上,分担负载。 要保证: kafka, es, zk 的每个组件的总数量为3

globals.env

该文件定义了各类组件的账号密码信息. 功能开关控制选项等. 可根据实际情况进行修改.配置项含义, 请查看文件中的注释

  • 该文件含密码信息,请保证除了root用户外,其他用户不可读。
  • 各类账号密码建议修改, 注意设置的各类密码不能有 / $ ` < > &等特殊字符
  • 配置HTTP代理: 若公司不能访问外网, 但有自己的 proxy, 在该配置文件的 BK_PROXY 选项中指定代理地址.
  • 若需要跨云管理功能(服务器在不同的 IDC, 内网不互通的情况):
    • 需要将 gse 所在机器的外网IP填到该文件中 GSE_WAN_IP 配置项中的括号里 如: export GSE_WAN_IP=(1.2.3.4), 若没有外网IP 则留空
  • HAS_DNS_SERVER 配置默认为0,表示配置的蓝鲸域名需要通过/etc/hosts来解析,此时部署脚本会自动修改每台机器的/etc/hosts添加相关域名。如果想走自己的dns配置,改为非0即可。
  • HTTP_SCHEMA=http 默认HTTP_SCHEMA设置为http即蓝鲸软件全站为http,若设置为https则蓝鲸软件全站为https,可支持http和https的切换。
  • 该配置文件中提供了访问蓝鲸三大平台的域名配置, 需要提前准备好.
  1. export BK_DOMAIN="bk.com" # 蓝鲸根域名(不含主机名)
  2. export PAAS_FQDN="paas.$BK_DOMAIN" # PAAS 完整域名
  3. export CMDB_FQDN="cmdb.$BK_DOMAIN" # CMDB 完整域名
  4. export JOB_FQDN="job.$BK_DOMAIN" # JOB 完整域名

说明:

  1. BKDOMAIN的值不能为"com" "net" 这种顶级域名, 至少二级域名开始。
  2. FQDN的选择需要遵循DNS的命名规范,可选的字符集是[A-Za-z0-9.]以及"-", 特别要注意,下划线()是不允许的。
  3. PAAS_FQDN CMDB_FQDN JOB_FQDN的值都必须在BK_DOMAIN定义的根域名之下,保证登陆鉴权的cookie文件有效。

ports.env

端口定义。 默认情况下, 不用修改。特殊场景下,若有端口冲突,可以自行定义。

非标准私有地址处理方法

蓝鲸社区版部署脚本中(install目录)下有以下文件中有获取 ip 的函数 get_lan_ip, 非标准地址, 均需要在安装部署前完成修改。

  1. ./appmgr/docker/saas/buildsaas
  2. ./appmgr/docker/build
  3. ./functions
  4. ./scripts/gse/server/gsectl
  5. ./scripts/gse/plugins/reload.sh
  6. ./scripts/gse/plugins/start.sh
  7. ./scripts/gse/plugins/stop.sh
  8. ./scripts/gse/agent/gsectl
  9. ./scripts/gse/proxy/gsectl
  10. ./scripts/gse/agentaix/gsectl.ksh
  11. ./agent_setup/download#agent_setup_pro.sh
  12. ./agent_setup/download#agent_setup_aix.ksh
  13. ./agent_setup/download#agent_setup.sh

这些文件列表,可能随版本迭代变动,也可以用以下命令查找出来包含这个函数的脚本文件有哪些:

  1. grep -l 'get_lan_ip *()' -r /data/install

修改方法:

假设服务器的的ip是:138.x.x.x,它不在标准的私有地址范围,那么你需要修改get_lan_ip ()函数为:

  1. get_lan_ip () {
  2. ...省略
  3. if ($3 ~ /^10\./) {
  4. print $3
  5. }
  6. if ($3 ~ /^138\./) {
  7. print $3
  8. }
  9. }'
  10. return $?
  11. }

pip.conf

在线安装时,依赖pip,需要配置可用的 pip 源。

  1. vi src/.pip/pip.conf
  • 设置为能连上的 pip 源,默认的pip源配置通常无法使用,验证方式如下:
  • 在每台机器上对 pip.conf 中配置的url进行操作:curl http://xxxxxxx,若能正常返回列表信息则为成功。

获取证书

  • 通过ifconfig或者ip addr命令获取install.config文件中,license和gse模块所在服务器的第一个内网网卡的MAC地址。如果分别属于两台服务器,那么两个的MAC地址以英文;分隔。
  • 在官网证书生成页面根据输入框提示填入MAC地址,生成并下载证书。
  • 上传证书到中控机,并解压到 src/cert 目录下
  1. tar xf ssl_certificates.tar.gz -C /data/src/cert/

配置 SSH 免密登陆

登录到中控机,执行以下操作

  1. cd /data/install
  2. bash configure_ssh_without_pass # 根据提示输入各主机的 root 密码完成免密登陆配置

安装前校验环境是否满足

按文档要求做完环境和部署的配置后,准备开始安装前,请运行以下脚本,来校验是否满足:

  1. cd /data/install
  2. bash precheck.sh

正常输出如下图所示:

  1. start <<check_ssh_nopass>> ... [OK]
  2. start <<check_password>> ... [OK]
  3. start <<check_cert_mac>> ... [OK]
  4. start <<check_selinux>> ... [OK]
  5. start <<check_umask>> ... [OK]
  6. start <<check_get_lan_ip>> ... [OK]
  7. start <<check_rabbitmq_version>> ... [OK]
  8. start <<check_http_proxy>> ... [OK]
  9. start <<check_open_files_limit>> ... [OK]
  10. start <<check_domain>> ... [OK]
  11. start <<check_rsync>> ... [OK]
  12. start <<check_networkmanager>> ... [OK]
  13. start <<check_firewalld>> ... [OK

如果发现有[FAIL]的报错,按照提示和本文档修复。修复后,可继续跑precheck.sh脚本,直到不再出现[FAIL]。如果需要从头开始检查,请使用 precheck.sh -r 参数。