快速部署社区版(详解)

 

a. 配置免密登陆
i. ssh-keygen
1. .ssh 目录权限为:700
2. 密钥文件authorized_keys权限为:600
3. 其他新增密钥文件known_hosts权限为:644
ii. ssh-copy-id ip
iii. cat server.list |xargs -i ssh {} "command" //server.list为准备安装蓝鲸的服务器资源列表,command为在每台服务器上执行的命令
b. yum源设置
1. 配置yum源
i. mkdir /etc/yum.repos.d/back && mv /etc/yum.repos.d/Cent* /etc/yum.repos.d/back
ii. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
2. 配置epel源
i. mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
ii. wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
iii. yum clean all
iv. yum makecache
3. 预先可安装的程序
i. yum -y install pidof pkill rsync gawk curl lsof tar sed iproute uuid psmisc wget bind-utils mysql-devel MySQL-python vim lrzsz
ii. yum -y groupinstall "Development Tools"
4. 安装 rsync 命令
i. which rsync //先检查是否已安装rsync
ii. yum -y install rsync


c. CentOS系统设置
1. 修改umask
i. 确认 umask,若不是 022,修改 /etc/profile,然后 source /etc/profile
ii. source /etc/profile
2. 关闭SELinux
i. sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
ii. getenforce //查看
iii. sestatus //也可以检查[可选]
3. 关闭防火墙
i. systemctl stop firewalld # 停止 firewalld
ii. systemctl disable firewalld # 禁用 firewall 开机启动
iii. iptables -P INPUT ACCEPT
iv. iptables -L //列出iptables的现有规则
v. iptables -F //清空iptables设置
4. 关闭NetworkManager服务
i. 如果操作主机是云服务器,需要使用下面的方法禁用NetworkManager服务
1) sed -i '/^\[main\]$/a dns=none' /etc/NetworkManager/NetworkManager.conf
2) systemctl restart NetworkManager.service //云服务器操作
ii. systemctl stop NetworkManager.service;systemctl disable NetworkManager.service
iii. 【注意事项】
1) 备注说明:该操作前提需确保主机为静态 IP,若为 DHCP 获取的 IP,则无法直接 disable NetworkManager,否则会出现主机重启后,或者主机运行一段时间 IP 租约地址到期后,网卡无法从网络重新正常获取 IP 地址的情况。


5. 检查resolv.conf是否有修改权限
i. lsattr /etc/resolv.conf //执行如下命令,检查是否有“i”加密字样
ii. chattr -i /etc/resolv.conf //如果有则执行命令,临时解密处理,执行如下命令
iii. 在 resolv.conf 配置文件的首行,即第一个DNS地址需为 127.0.0.1,如下所示
i. nameserver 127.0.0.1
ii. 通过命令行修改
i. sed -I '2d' /etc/resolv.conf
ii. sed -I '1 a nameserver 127.0.0.1' /etc/resolv.conf
iii. systemctl restart network
iv. cat /etc/resolv.conf


6. 调整最大文件打开数
i. xargs -i ssh {} "echo 'root hard nofile 102400' >> /etc/security/limits.conf"
ii. xargs -i ssh {} "echo 'root soft nofile 102400' >> /etc/security/limits.conf"
iii. cat << EOF >> /etc/security/limits.conf
root soft nofile 102400
root hard nofile 102400
EOF //修改后,重新使用root登陆检查是否生效
iv. ulimit -n //检查最大文件打开数
7. 确认服务器时间同步
i. ntpdate -d cn.pool.ntp.org //查看和ntp server的时间差异
ii. timedatectl set-timezone 'Asia/Shanghai' //设置时区为上海
iii. timedatectl|grep "Time zone" //检查时区
iv. ntpdate cn.pool.ntp.org //和 ntp 服务器同步时间


8. 检查是否存在全局 HTTP 代理
i. echo "$http_proxy" "$https_proxy" # 检查 http_proxy https_proxy 变量是否设置,若为空可以跳过后面的操作。
ii. 对于本机配置 http_proxy 变量的方式,请依次查找文件 /etc/profile、/etc/bashrc、$HOME/.bashrc 等是否有设置。
iii. env | grep -i proxy //检查环境变量中是否有http的变量
iv. cat /etc/profile | grep -i proxy*
d. 解压安装包
1. 解压社区版完整包
i. tar xf bkce_src-5.1.26.tar.gz -C /data

 

2. pip源
i. vim /data/src/.pip/pip.conf //在线安装时,依赖 pip,需要配置可用的 pip 源
ii. [global]
index-url = https://mirrors.cloud.tencent.com/pypi/simple
trusted-host = mirrors.cloud.tencent.com
iii. 在每台机器上对 pip.conf 中配置的 url 进行操作:curl http://xxxxxxx,若能正常返回列表信息则为成功。

3. 修改配置文件
i. 比较配置文件,检查是否已经被修改了
i. diff port1.env ports.env //原模板可以从远程服务器上拷贝过来
ii. install.config
[bkce-basic]
10.0.0.1 nginx,rabbitmq,kafka(config),zk(config),es,appt,fta,consul,bkdata(databus)
10.0.0.2 mongodb,appo,kafka(config),zk(config),es,mysql,consul,bkdata(dataapi),beanstalk
10.0.0.3 paas,cmdb,job,gse,license,kafka(config),zk(config),es,redis,influxdb,consul,bkdata(monitor)
iii. 注意测试环境与正式环境不能安装在同一台主机中
iv. globals.env
1) 配置 HTTP 代理:若公司不能访问外网,但有自己的 proxy,在该配置文件的 BK_PROXY 选项中指定代理地址。【考试时注意此处是否被配置了proxy】

4. 非标准私有地址处理方法
i. grep -l 'get_lan_ip *()' -r /data/install
ii. 修改get_lan_ip sed -i '/if ($3 ~ \/^192.168\/) {/i if \($3 ~ \/^172.16\/){print $3}' test.txt

grep -lr "get_lan_ip *()" /data/install/|xargs -n 1 sed -i '/if ($3 ~ \/^192.168\/) {/i if \($3 ~ \/^172.16\/){print $3}'
修改完成后,有些文件需要注释 /data/install/appmgr/docker/saas/buildsaas
/data/install/appmgr/docker/build

5. 解压证书
i. tar xf ssl_certificates.tar.gz -C /data/src/cert/
ii. license 和 gse 模块所在服务器的第一个内网网卡的 MAC 地址。如果分别属于两台服务器,那么两个的 MAC 地址以英文;分隔
6. 配置 SSH 免密登陆
i. cd /data/install
ii. bash configure_ssh_without_pass # 根据提示输入各主机的 root 密码完成免密登陆配置
7. 安装前校验环境是否满足
i. cd /data/install
ii. bash precheck.sh
iii. 可在/root/.bk_precheck文件增加检查项
e. 进行标准部署之前,请确保已完成 环境准备 操作。
1. ./bk_install paas 安装 PaaS 平台及其依赖服务,该步骤完成后,可以打开 PaaS 平台。
./bk_install cmdb # 安装配置平台及其依赖服务,该步骤完成后,可以打开配置平台,看到蓝鲸业务及示例业务。
./bk_install job # 该步骤完成后,可以打开作业平台,并执行作业。同时在配置平台中可以看到蓝鲸的模块下加入了主机。# 安装作业平台及其依赖组件,并在安装蓝鲸的服务器上装好 gse_agent 供验证
./bk_install app_mgr # 部署正式环境及测试环境
# 该步骤完成后可以在开发者中心的服务器信息和第三方服务信息中看到已经成功激活的服务器
# 同时也可以进行 SaaS 应用(除蓝鲸监控和日志检索)的上传部署
./bk_install bkdata # 安装蓝鲸数据平台基础模块及其依赖服务。安装该模块后,可以开始安装使用 SaaS 应用: 蓝鲸监控和日志检索
./bk_install fta # 安装故障自愈的后台模块及依赖其服务
# 安装该模块后,可以开始安装使用 SaaS 应用: 故障自愈
./bk_install gse_agent # 重装 gse_agent 并注册正确的集群模块到配置平台
# 执行完该操作后,可以在配置平台中看到主机按照 install.config 中的配置分布到对应拓扑下
./bkcec install saas-o #部署官方 SaaS 到正式环境(通过命令行从 /data/src/official_saas/ 目录自动部署 SaaS )
# 执行完该操作后,可以在蓝鲸工作台看到并使用所有官方 SaaS

saas安装顺序 bk_fta_solutions bk_log_search bk_monitor bk_nodeman bk_sops

社区版问题汇总:https://bk.tencent.com/s-mart/community


部署过程中可能遇到的问题:
A. 拷贝公钥后,仍然需要密码才能登陆服务器
1. 其他原因导致的此问题:
i. 一、配置文件sshd_config需要设置
1) vim /etc/ssh/sshd_config
a) RSAAuthentication yes
b) PubkeyAuthentication yes
c) AuthorizedKeysFile .ssh/authorized_keys
2) 重启SSH服务
ii. 二、文件权限问题
1) 【这主要是远程主机的目录或文件权限上出现了问题,Linux防止篡改,当ssh相关目录或文件允许除本人以外的人有写入权限时,就必须使用密码。】
2) chmod 700 ~/. ssh /
3) chmod 700 /home/userName
4) chmod 600 ~/. ssh /authorized_keys
iii. 如果非上述原因导致的SSH打通密钥仍需要密码登陆,在需要查看日志/var/log/secure
1) 例如此类报错:Authentication refused:bad ownership or modes for directory /root
2) 则需要查看/root/ 目录权限,确保宿主用户为root
3) 修复方法:chown root:root -R /root
B. /usr/bin/ld: cannot find -lmysqlclient,安装失败
1. ln -s /usr/lib64/mysql /usr/mysql/lib
2. ln -s /usr/lib64/mysql /usr/local/mysql/lib 【此项】
C. 虚拟环境安装过程缺包
1. pip install -r /data/bkce/paas_agent/apps/projects/uam/code/uam/requirements.txt --no-index --find-links=.



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

E. 社区版需要pip包的模块及放置位置

F. 机器重启后
确认 /etc/resolv.conf 里第一个nameserver是 127.0.0.1,option选项不能有rotate
检查重启机器的crontab,是否有自动拉起进程的配置 crontab -l | grep process_watch,重启后的自动拉起主要靠crontab
中控机上确认所有进程状态:./bkeec status all, 正常情况下应该都是正常拉起RUNNING状态,如果有EXIT的,则尝试手动拉起。
如果社区版所有机器同时重启,很大概率会有很多进程启动失败,因为不同机器上组件恢复的时间没法控制,导致依赖的组件还没启动起来,导致失败,连锁反应。所以这种情况,遵循和安装时的启动原则:

先启动db
启动依赖的其他开源组件及服务
启动蓝鲸产品
如果已经部署过SaaS,那么手动拉起。

./bkeec start saas-o # 正式环境
./bkeec start saas-t # 测试环境


G. 所以这里列举下蓝鲸 Python 工程的 requirements.txt 路径,以及下载离线包后应该存放的路径。

# bkdata 所需的 pip 包
src\bkdata\dataapi\requirements.txt
src\bkdata\monitor\requirements.txt
# 需要放到以下路径
src\bkdata\support-files\pkgs

# fta 角色所需的 pip 包
src\fta\fta\requirements.txt

# 需要放到以下路径
src\fta\support-files\pkgs

# open_paas 角色所需的 pip 包
src\open_paas\appengine\requirements.txt
src\open_paas\esb\requirements.txt
src\open_paas\login\requirements.txt
src\open_paas\paas\requirements.txt

# 需要放到以下路径
src\open_paas\support-files\pkgs

# paas_agent 下的 pip 包其实时给 SaaS 部署用的。
src\paas_agent\paas_agent\requirements.txt

# 需要放到以下路径
src\paas_agent\support-files\pkg

posted @ 2020-11-23 17:02  金元  阅读(143)  评论(0编辑  收藏  举报