• 安装环境准备
    • 获取安装包
    • 硬件选择
    • CentOS系统设置
    • 配置 YUM 源
      • 本地 YUM 源
      • 在线 YUM 源
    • 配置文件
      • install.config
      • globals.env
      • ports.env
      • 非标准私有地址处理方法
      • pip.conf
    • 获取证书
    • 配置 SSH 免密登陆
    • 安装前校验环境是否满足

    安装环境准备

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

    获取安装包

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

    下载地址: 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 源

    • 腾讯云CentOS
    • 腾讯云EPEL

    配置文件

    在 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 参数。