蓝鲸社区版本安装 转载
安装环境准备开始安装蓝鲸社区版前,需按以下文档指南,做好准备工作。官方文档:https://bk.tencent.com/docs/document/6.0/127/7549准备机器建议操作系统: CentOS 7.6建议机器配置(中控机建议内存配置 32G+ 或 更高)体验功能:建议 4 核 16 G,硬盘 50G 以上生产环境:建议 8 核 32 G,硬盘 100G 以上(可根据实际情况适当调
安装环境准备
开始安装蓝鲸社区版前,需按以下文档指南,做好准备工作。
官方文档: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
更多推荐
所有评论(0)