安装环境准备

开始安装蓝鲸社区版前,需按以下文档指南,做好准备工作。
官方文档:https://bk.tencent.com/docs/document/6.0/127/7549
准备机器

    建议操作系统: CentOS 7.6
    建议机器配置(中控机建议内存配置 32G+ 或 更高)
        体验功能:建议 4 核 16 G,硬盘 50G 以上
        生产环境:建议 8 核 32 G,硬盘 100G 以上(可根据实际情况适当调整配置)
    机器数量:3 台(假设 ip 分别为:10.0.0.1,10.0.0.2,10.0.0.3)
    选择一台为中控机(假设为 10.0.0.1)进行安装部署操作,使用 root 账号登录。

注意:所有待安装蓝鲸的机器均需要按以下清单检查和操作。
一. YUM 源配置

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

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

    腾讯云 CentOS
    腾讯云 EPEL

# 备份系统旧配置文件
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
# epel(RHEL7系列)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
# 更新缓存
yum clean all
yum makecache

    1
    2
    3
    4
    5
    6
    7

二. CentOS 系统设置

提示:可以使用该文档整理的安装脚本,见 2.10.以上9步的配置脚本

准备好硬件,安装完原生 CentOS 系统后。需要在所有蓝鲸服务器上对初始系统做一些配置,保证后续安装过程的顺畅和蓝鲸平台的运行。

系统版本: 推荐 CentOS-7.6。
1.关闭 SELinux

# 检查 SELinux 的状态,如果它已经禁用,可以跳过后面的命令
sestatus

    1
    2

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

# 通过命令临时禁用 SELinux
setenforce 0

# 或者修改配置文件
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

    1
    2
    3
    4
    5

接着,重启机器:

reboot

    1

2.关闭默认防火墙(firewalld)

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

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

    1
    2

停止并禁用 firewalld

systemctl stop firewalld    # 停止 firewalld
systemctl disable firewalld # 禁用 firewall 开机启动

    1
    2

3.安装 rsync 命令

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

# 检查是否有 rsync 命令,如果有返回 rsync 路径,可以跳过后面的命令
which rsync

# 安装 rsync
yum -y install rsync

    1
    2
    3
    4
    5

4.停止并禁用 NetWorkManager

systemctl stop NetworkManager
systemctl disable NetworkManager

    1
    2

    说明:该操作前提需确保主机为静态 IP,若为 DHCP 获取的 IP,则无法直接 disable NetworkManager,否则会出现主机重启后,或者主机运行一段时间 IP 租约地址到期后,网卡无法从网络重新正常获取 IP 地址的情况。

5.调整最大文件打开数

# 检查当前 root 账号下的 max open files 值
ulimit -n

    1
    2

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

但是不能大于 /proc/sys/fs/nr_open 的值,该值默认为 1048576。

注意: limits.conf 初始文件的备份。

cat >> /etc/security/limits.conf << EOF
root soft nofile 102400
root hard nofile 102400
EOF

    1
    2
    3
    4

修改后,重新使用 root 登录检查是否生效。
6.确认服务器时间同步

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

# 检查每台机器当前时间和时区是否一致,若相互之间差别大于3s(考虑批量执行时的时差),建议校时。
date -R

# 查看和ntp server的时间差异(需要外网访问,如果内网有ntpd服务器,自行替换域名为该服务的地址)
ntpdate -d cn.pool.ntp.org

    1
    2
    3
    4
    5

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

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

    1
    2

更可靠的方式包括通过运行 ntpd 或者 chrony 等服务在后台保持时间同步。
具体请参考官方文档 使用 ntpd 配置 NTP 或 使用 chrony 配置 NTP。
7.检查是否存在全局 HTTP 代理

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

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

    1
    2

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

请检查准备用于部署蓝鲸的 3 台机器的主机名是否相同。如果存在同名请进行修改。

hostname

    1

9.检查 DNS 配置文件

如果输出的第一行信息不是 nameserver 127.0.0.1 ,请把其加入至该文件(/etc/resolv.conf)的第一行。
这是由于蓝鲸内部组件的调用所需,域名通过 consul 解析,会探测服务运行状态,然后返回 IP 地址。若首行不是 127.0.0.1,否则这些域名就通过外网去解析,无法返回正确的响应,导致服务运行异常,或者 SaaS 无法正常打开等情况。

head -n 1 /etc/resolv.conf

    1

10. 以上9步的配置脚本

#! /bin/bash
#  tomoncle set bk env bash

CENTOS_VERSION=$(cat /etc/redhat-release | awk '{print $4}' | awk -F '.' '{print $1}')

function validator(){ if [ $? -ne 0 ];then echo -e "\033[5;31mthe operation failed, exited.\033[0m"; exit; fi; }
function log(){ validator; DATE=$(echo `date "+%Y-%m-%d %H:%M:%S"`); echo -e "\033[32m$DATE INFO: $@ \033[0m"; }

function config_yum(){
    log "YUM 源配置"
    # 备份系统旧配置文件
    mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup > /dev/null 2>&1
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-${CENTOS_VERSION}.repo > /dev/null 2>&1
    validator
    yum clean all > /dev/null 2>&1
    validator
    yum makecache > /dev/null 2>&1
    validator
}

function disable_selinux(){
    log "关闭 SELinux"
    if [[ `getenforce` != "Disabled" ]]; then
        setenforce 0
        sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    fi
}

function check_rsync(){
    log "安装 rsync 命令"
    which rsync > /dev/null 2>&1
    if [[ $? -ne 0 ]]; then
        yum -y install rsync > /dev/null 2>&1
        validator
    fi
}

function disable_firewalld(){
    log "关闭默认防火墙(firewalld)"
    
    #关闭防火墙,公网环境不安全
    if [[ $(firewall-cmd --state) = "running" ]]; then
        systemctl stop firewalld
        systemctl disable firewalld
    fi
}

function disable_network(){
    log "停止并禁用 NetWorkManager"
    systemctl stop NetworkManager && systemctl disable NetworkManager
}

function update_max_file_size(){
    log "调整最大文件打开数"
    if [[ $(tail -n 2 /etc/security/limits.conf | grep 'nofile 102400' | wc -l) -ne 2 ]]; then
        cat >> /etc/security/limits.conf << EOF
root soft nofile 102400
root hard nofile 102400
EOF
    fi
}

function sync_ntpdate(){
     log "确认服务器时间同步"
     ntpdate cn.pool.ntp.org
}

function check_http_proxy(){
    log "检查是否存在全局 HTTP 代理"
    if [[ -n "$http_proxy" ]] || [[ -n "$https_proxy" ]]; then
        echo -e "\033[5;31m发现 http代理 不为空,请检查是否有设置,或者咨询网络管理员/IT部门协助处理, 程序退出.\033[0m"; exit;
    fi
}

function check_dns(){
    log "检查 DNS 配置文件"
    if [[ $(head -n 1 /etc/resolv.conf) != 'nameserver 127.0.0.1' ]]; then
        sed -i '1i\nameserver 127.0.0.1' /etc/resolv.conf
    fi
}

function show_net(){
    log "查询当前主机第一个非回环地址的mac及ip地址"
    mac=$(ifconfig | grep ether | head -n 1 | awk '{print $2}')
    ip=$(ifconfig | grep inet | grep -v '127.0.0.1' | head -n 1 | awk '{print $2}')
    echo -e "mac: $mac\nip:  $ip"
}


function main(){
    config_yum
    disable_selinux
    check_rsync
    disable_firewalld    # 如果公网环境禁止关闭防火墙
    #disable_network     # 如果使用dhcp,不能禁用NetWorkManager
    update_max_file_size
    sync_ntpdate
    check_http_proxy
    check_dns
    show_net
}

main

三. 配置下载软件包

    软件包只需要在中控机下载配置,其他机器不需要

1.下载安装包(仅需登录中控机)

mkdir /data ; cd /data ; wget https://bkopen-1252002024.file.myqcloud.com/ce/bkce_src-6.0.2.tgz

    1

2.解压 V6.2 软件包

# 版本号会随更新而变更,请以实际下载时的实际版本为准
tar xf bkce_src-6.0.2.tgz -C /data

    1
    2

3.下载证书

获取机器的 MAC 地址生成证书,下载 证书文件 上传至中控机 /data 目录下。

    MAC 地址:license 和 gse 模块所在服务器的第一个内网网卡的 MAC 地址。如果分别属于两台服务器,那么两个的 MAC 地址以英文 “;” 分隔。

    1.通过 ifconfig 或者 ip addr 命令分别获取三台机器第一个内网网卡 MAC 地址
    2.前往蓝鲸官网证书生成页面,根据提示在输入框中填入英文分号分隔的三个 MAC 地址,生成并下载证书
    3.上传证书包至中控机 /data
    4.证书包包名:ssl_certificates.tar.gz

4.解压相关资源包

    1.解压完整包(包含蓝鲸相关产品,如 PaaS、CMDB、JOB 等;蓝鲸依赖的 rpm 包,SaaS 镜像,定制 Python 解释器;部署脚本)

cd /data ; tar xf bkce_src-6.0.2.tgz

    1

    2.解压各个产品软件包

cd /data/src/; for f in *gz;do tar xf $f; done ; cd ../  

    1

    3.解压证书包

install -d -m 755 /data/src/cert ; tar xf /data/ssl_certificates.tar.gz -C /data/src/cert/ ; chmod 644 /data/src/cert/*

    1

    4.拷贝 rpm 包文件夹到/opt/目录

cp -a /data/src/yum /opt

    1

5.配置 install.config 文件

install.config 是模块和服务器对应关系的配置文件,描述在哪些机器上安装哪些模块。

每行两列,第一列是 IP 地址;第二列是以英文逗号分隔的模块名称。

详情参考 install.config.3IP.sample 文件(可将 install.config.3IP.sample 复制为 install.config)。

# 假设部署脚本放置于 /data 目录下,请以实际部署的目录为准
cd /data/install

# cp -a install.config.3ip.sample install.config
# 将默认的 IP 地址替换为实际部署时的 IP 地址
#
# 请根据实际机器的 IP 进行替换第一列的示例 IP 地址,确保三个 IP 之间能互相通信
cat << EOF >/data/install/install.config
10.0.0.1 iam,ssm,usermgr,gse,license,redis,consul,es7,monitorv3(influxdb-proxy),monitorv3(monitor),monitorv3(grafana)
10.0.0.2 nginx,consul,mongodb,rabbitmq,appo,influxdb(bkmonitorv3),monitorv3(transfer),fta,beanstalk
10.0.0.3 paas,cmdb,job,mysql,zk(config),kafka(config),appt,consul,log(api),nodeman(nodeman)
EOF

    说明:

        该配置文件,ip 后面使用空格与服务名称隔开,含有多个内网 ip 的机器,默认使用 /sbin/ifconfig 输出中的第一个内网 ip,在 ip 后面写上该机器要安装的服务列表即可,部署过程中默认使用标准私有地址,若企业环境使用非标准私有地址,请参考该篇文章后续内容- 非标准私有地址处理方法 的处理方法。
        gse 与 redis 需要部署在同一台机器上。
        增加机器数量时,可以将以上配置中的服务挪到新的机器上,分担负载。

6.配置ssh免密登录

对 install.config 中的主机配置中控机 ssh 登录免密。根据提示,依次输入每台机器的 root 密码

bash /data/install/configure_ssh_without_pass

    1

完成以上6步已经完成了部署配置. 自定义配置查看 7, 8 步骤
7.非标准私有地址处理方法(非必须)

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

/data/install/health_check/deploy_chek.py
/data/install/agent_setup/download#agent_setup_pro.sh
/data/install/agent_setup/download#agent_setup_aix.ksh
/data/install/agent_setup/download#agent_setup.sh
/data/install/appmgr/docker/saas/buildsaas
/data/install/appmgr/docker/build
/data/install/scripts/gse/agent/gsectl
/data/install/scripts/gse/plugins/stop.sh
/data/install/scripts/gse/plugins/start.sh
/data/install/scripts/gse/plugins/reload.sh
/data/install/scripts/gse/agentaix/gsectl.ksh
/data/install/scripts/gse/proxy/gsectl
/data/install/scripts/gse/server/gsectl
/data/install/precheck.sh
/data/install/functions

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

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

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

    get_lan_ip  () {
    ...省略
               if ($3 ~ /^10\./) {
                   print $3
               }
               if ($3 ~ /^138\./) {
                   print $3
               }
          }

    return $?
    }
        1
        2
 

8.自定义域名以及登陆密码(非必须)

    部署前自定义域名
        $BK_DOMAIN:需要更新的根域名
        $INSTALL_PATH:自定义安装目录。

    # 执行前请使用实际的根域名和安装目录进行替换
    ./configure -d $BK_DOMAINN -p $INSTALL_PATH

    # 仅替换域名 将默认 bktencent.com 替换为  cloud.tomoncle.com
    ./configure -d cloud.tomoncle.com
 
 

    部署前自定义 admin 登陆密码
        请使用实际的自定义密码替换 BlueKing,以及使用实际的部署脚本路径替换默认的脚本路径 /data/install

    cat > /data/install/bin/03-userdef/usermgr.env << EOF
    BK_PAAS_ADMIN_PASSWORD=BlueKing
    EOF

完成环境准备后,可前往 标准部署 开始部署了。
提示:针对服务注册失败的bug修改(本人使用v6.0.2 版本在 centos7.4 安装环境存在该问题,如无复现请忽略.)

    部署之前,编辑中控机该脚本 /data/install/install.sh 新增以下函数

# ... 省略
set -e
# set -e 指令后面 新增该函数
reg_consul_svc() {
    /data/install/bin/reg_consul_svc -n $1 -p $2 -a $3
}

四. 开始部署

    在中控机执行

1 初始化操作

    1.执行初始化操作

cd /data/install/
./bk_install common

    1
    2

    2.检查相关配置

./health_check/check_bk_controller.sh

    1

2 部署 PaaS

./bk_install paas

    1

3 部署 app_mgr(SaaS 运行环境)

./bk_install app_mgr

    1

4 部署 CMDB(配置平台)

./bk_install cmdb

    1

5 部署 JOB(作业平台)

./bk_install job

    1

6 部署 bknodeman(节点管理)

./bk_install bknodeman

    1

7 部署 bkmonitorv3 (监控平台)

./bk_install bkmonitorv3

    1

8 部署 bklog(日志平台)

./bk_install bklog

    1

9 部署 fta(故障自愈后台)

./bk_install fta

    1

10 部署 SaaS

请按顺序执行:

# 权限中心
./bk_install saas-o bk_iam
# 用户管理
./bk_install saas-o bk_user_manage
# 标准运维
./bk_install saas-o bk_sops
# 服务流程管理
./bk_install saas-o bk_itsm
# 故障自愈SaaS
./bk_install saas-o bk_fta_solutions

11 初始化蓝鲸业务拓扑

./bkcli initdata topo

    1

12 加载蓝鲸相关维护命令

source ~/.bashrc

    1

13 检测相关服务状态

cd /data/install/
echo bkssm bkiam usermgr paas cmdb gse job consul bklog | xargs -n 1 ./bkcli check

    1
    2

五. 访问蓝鲸
1 配置本地 hosts

    下面介绍的操作均可能覆盖现有 hosts ,进行操作前请先确认是否需要备份。

    Windows 配置
    用文本编辑器(如Notepad++)打开文件:
    C:\Windows\System32\drivers\etc\hosts
    将以下内容复制到上述文件内,并将以下 IP 需更换为本机浏览器可以访问的 IP,然后保存。

10.0.0.2 paas.bktencent.com cmdb.bktencent.com job.bktencent.com jobapi.bktencent.com
10.0.0.3 nodeman.bktencent.com

    1
    2

注意: 10.0.0.2 为 nginx 模块所在的机器,10.0.0.3 为 nodeman 模块所在的机器。IP 需更换为本机浏览器可以访问的 IP。查询模块所分布在机器的方式:

grep -E "nginx|nodeman" /data/install/install.config

    1

    注意:如果遇到无法保存,请右键文件 hosts 并找到“属性” -> “安全”,然后选择你登陆的用户名,最后点击编辑,勾选“写入”即可。

    Linux / Mac OS 配置
    将以下内容复制到 /etc/hosts 中,并将以下 IP 需更换为本机浏览器可以访问的 IP,然后保存。

10.0.0.2 paas.bktencent.com cmdb.bktencent.com job.bktencent.com jobapi.bktencent.com
10.0.0.3 nodeman.bktencent.com

    1
    2

2 获取管理员账户名密码

在任意一台机器上,执行以下命令,获取管理员账号和密码。

grep -E "BK_PAAS_ADMIN_USERNAME|BK_PAAS_ADMIN_PASSWORD" /data/install/bin/04-final/usermgr.env

    1

蓝盾
部署

部署操作都在蓝鲸“中控机”节点操作
1.下载安装包

下载安装包到蓝鲸 “中控机”,参考路径如下:(此时无需手动解压,后续预处理步骤时包含解压操作。)

    /data/src/bkci.tar.gz 建议将下载的文件放置在此路径。参考从 GitHub 下载的命令:

wget https://github.com/Tencent/bk-ci/releases/download/v1.2.11/bkci.tar.gz

mv bkci.tar.gz /data/src/bkci.tar.gz

    1
    2
    3

    /data/src/rabbitmq_delayed_message_exchange-3.8.0.ez, 路径及文件名不能变动。下载 RabbitMQ 插件的命令

wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.8.0/rabbitmq_delayed_message_exchange-3.8.0.ez

mv rabbitmq_delayed_message_exchange-3.8.0.ez /data/src/rabbitmq_delayed_message_exchange-3.8.0.ez

    1
    2
    3

2.解压相关资源包

部署脚本预期解压后的目录,请使用我们提供的预处理脚本:(会在解压完成后自动更新默认 env 模板)

./bin/prepare-bk-ci.sh /data/src/bkci.tar.gz  # 如果放在其他路径下,请自行修改。

    1

3.自定义安装配置

需要编辑 install.config 新增配置项,可使用如下代码添加:(请根据实际机器的 IP 进行替换第一列的示例 IP 地址,确保新增 IP 和文件中已有 IP 之间能互相通信)

# 10.0.0.35 10.0.0.49 为新增的蓝盾节点

cat << EOF >/data/install/install.config
10.0.0.6 iam,ssm,usermgr,gse,license,redis,consul,es7,monitorv3(influxdb-proxy),monitorv3(monitor),monitorv3(grafana)
10.0.0.23 nginx,consul,mongodb,rabbitmq,appo,influxdb(bkmonitorv3),monitorv3(transfer),fta,beanstalk
10.0.0.54 paas,cmdb,job,mysql,zk(config),kafka(config),appt,consul,log(api),nodeman(nodeman)
10.0.0.35 ci(gateway),ci(agentless),ci(artifactory),ci(auth),ci(dispatch),ci(environment),ci(image),ci(log),ci(misc),ci(notify),ci(openapi),ci(plugin),ci(process),ci(project),ci(quality),ci(repository),ci(store),ci(ticket),ci(websocket)
10.0.0.49 ci(dockerhost)
EOF

    1
    2
    3
    4
    5
    6
    7
    8
    9

4.开始部署

请执行 “一键安装” 脚本即可:

cd ${CTRL_DIR:-/data/install}  # 进入部署脚本主目录,默认为 /data/install 。
./bk_install ci  # 参数为小写的ci,输入时请注意大小写。

    1
    2

“一键安装”脚本在安装过程会不断输出提示。如果失败,会在屏幕输出报错,并提示出错脚本的位置。您在排除故障后重新执行该脚本即可。
在蓝盾dispatch节点操作

    dockerHost enable 为 false, 在CI/CD操作时会出现找不到dockerHost主机异常

    工具脚本/data/src/ci/scripts/bkci-op.sh

[root@5e9ne ~]# /data/src/ci/scripts/bkci-op.sh
Usage: /data/src/ci/scripts/bkci-op.sh list|set|add|del [args...]
[root@5e9ne ~]# /data/src/ci/scripts/bkci-op.sh add
Usage: /data/src/ci/scripts/bkci-op.sh add IP enable=true|false [dockerHostPort=21923] [capacity=100]

    1
    2
    3
    4
    5

    查看dockerHost状态:

[root@5e9ne ~]# /data/src/ci/scripts/bkci-op.sh list
id  dockerIp   dockerHostPort  enable  capacity  createTime
1   10.0.0.49  21923           false   100       2021-01-26 16:19:49

    1
    2
    3
    4

    设置dockerHost:

[root@5e9ne ~]# /data/src/ci/scripts/bkci-op.sh add 10.0.0.49 enable=true
{
  "status": 0,
  "data": true
}
[root@5e9ne ~]# /data/src/ci/scripts/bkci-op.sh list
id  dockerIp   dockerHostPort  enable  capacity  createTime
1   10.0.0.49  21923           true    100       2021-01-26 16:19:49
————————————————
版权声明:本文为CSDN博主「tomoncle」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/king_aric/article/details/115327401

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐