騰訊藍鯨自動化運維平臺簡介部署及常見報錯解決
前言
騰訊藍鯨智雲,簡稱藍鯨,是一套基於 PaaS 的技術解決方案,提供了完善的前後臺開發框架、排程引擎、公共元件等模組,幫助業務的產品和技術人員快速構建低成本、免運維的支撐工具和運營系統。
目前,騰訊藍鯨智雲團隊秉承著開放共贏的態度,正逐漸開放其自主研發的一套具有多項探索式創新的體系—藍鯨智雲軟體體系。該套體系不僅提供了基礎運維(釋出變更、監控處理、數值調整、資料提取等)的無人值守服務,而且還給運維人員提供瞭解決方案(工具),並隨時調整,避免重複性的操作服務。而運維人員則可以做些“使用者體驗優化”和“運營決策輔助”等運維增值工作,並且可以通過藍鯨智雲提供的整合平臺,低成本的學習 DevOps技能,進一步提升自己的能力,加速轉型。此外,這套體系還可以執行輕應用、管理類、及職能類應用,是個全方位的運維、管理平臺。
騰訊藍鯨智雲,運維領域的一張新名片,正在多個層次、多個領域嶄露著頭角,逐漸釋放著自身特有的價值,引領著行業新標杆,開創了運維體系 2.0 的新局面。
體系介紹
騰訊藍鯨智雲體系由平臺級產品和通用 SaaS 服務組成,平臺包括管控平臺、配置平臺、作業平臺、資料平臺、容器管理平臺、挖掘平臺、PaaS 平臺、移動平臺等,通用 SaaS 包括節點管理、標準運維、日誌檢索、藍鯨監控、故障自愈等,為各種雲(公有云、私有云、混合雲)的使用者提供不同場景、不同需求的一站式技術運營解決方案。
部署藍鯨
開始安裝藍鯨社群版前,需按以下文件指南,做好準備工作。
獲取安裝包
藍鯨社群版包含部署指令碼、產品軟體和開源元件。藍鯨提供完整包與分包的下載通道,請自行到下載地址按需獲取。新裝環境及新使用者建議下載完整包使用。
# 下載地址: 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部署的機器需要有跨雲的網路條件。
根據以上考慮,官方建議安裝藍鯨初始配置,請滿足:
機器數量 建議硬體最低配置 更優配置
3 4核12G 24核64G
4 4核10G 24核64G
5 4核心8G 12核32G
CentOS系統設定
準備好硬體,安裝完原生CentOS系統後。我們需要對初始系統做一些配置,保證後續安裝過程的順暢,和藍鯨平臺的執行。注意:所有待安裝藍鯨的機器均需要按以下清單檢查和操作。
# 實際環境配置
IP Hostname 系統版本 記憶體,CPU
172.19.0.24 rbtnode1 CentOS7.2.1511 8c30G
172.19.0.23 paas-1 CentOS7.2.1511 8c30G
172.19.0.28 mongodb-1 CentOS7.2.1511 8c30G
系統版本:
要求CentOS-7.0以上版本,推薦CentOS-7.5
初始化
關閉SELinux及預設防火牆(firewalld)
安裝和執行藍鯨時,模組之間互相訪問的埠策略較多,建議對藍鯨後臺伺服器之間關閉防火牆。
systemctl stop firewalld
systemctl disable firewalld &>/dev/null
setenforce 0
# 修改配置檔案,禁止開機自啟動
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
curl -o /etc/yum.repos.d/163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo &>/dev/null
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65530
* hard nproc 65530
* soft nofile 65530
* hard nofile 65530
EOF
ulimit -n 65535
ulimit -u 20480
# 同步時間
yum -y install ntpdate
ntpdate -b ntp1.aliyun.com
# 檢查是否有rsync命令,如果有返回rsync路徑,可以跳過後面的命令
which rsync
# 安裝rsync
yum -y install rsync
獲取安裝包
https://bk.tencent.com/download/ # 建議下載5.0.4,坑相對少一點
[root@rbtnode1 ~]# mkdir /data # 建立一個目錄,將安裝包解壓到這個目錄
[root@rbtnode1 ~]# tar xvf bkce_src-5.0.4.tar.gz -C /data/
關閉NetworkManager
systemctl disable NetworkManager.service
systemctl stop NetworkManager.service
給所有機器分配服務元件
[root@rbtnode1 install]# mv install.config.3IP.sample install.config
[root@rbtnode1 install]# cat install.config
172.19.0.24 nginx,appt,rabbitmq,kafka,zk,es,bkdata,consul,fta # 中控機
172.19.0.23 mongodb,appo,kafka,zk,es,mysql,beanstalk,consul
172.19.0.28 paas,cmdb,job,gse,license,kafka,zk,es,redis,consul,influxdb
# appt和appo不能部署到同一臺機器
# gse和redis必須部署到同一臺機器
獲取證書
[root@rbtnode1 install]# cat install.config |grep gse
172.19.0.28 paas,cmdb,job,gse,license,kafka,zk,es,redis,consul,influxdb
[root@rbtnode1 install]# cat install.config |grep license
172.19.0.28 paas,cmdb,job,gse,license,kafka,zk,es,redis,consul,influxdb
[root@hadoop-3 job]# cat /sys/class/net/eno16780032/address
00:0c:29:01:6e:0c
[root@blueking-1 install]# tar xvf /root/ssl_certificates.tar.gz -C /data/src/cert/
# 輸入GSE/LICENSE所在伺服器的MAC地址,多個MAC地址使用換行或英文分號分隔
準備pip源和Nginx源
(4.0版本需要準備,沒有這個目錄和檔案,需要建立)
# 5.0不需要
[root@rbtnode1 ~]# mkdir /data/src/.pip
[root@rbtnode1 ~]# vim /data/src/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple
trusted-host = mirrors.aliyun.com
[root@rbtnode1 install]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
配置SSH免密登陸
cd /data/install
bash configure_ssh_without_pass # 根據提示輸入各主機的 root 密碼完成免密登陸配置
安裝前校驗環境是否滿足
cd /data/install
bash precheck.sh
到本地電腦配置本地hosts
Windows10: C:\Windows\System32\drivers\etc\hosts 檔案末尾加上
172.19.0.24 nginx-1
172.19.0.24 paas.bk.com
172.19.0.24 cmdb.bk.com
172.19.0.24 job.bk.com
172.19.0.24 rbtnode1 # 此處172.19.0.24為nginx地址
Linux: vim /etc/hosts # 檔案末尾加上下面三行
172.19.0.28 hadoop-3
172.19.0.24 paas.bk.com
172.19.0.24 cmdb.bk.com
172.19.0.24 job.bk.com
安裝各個功能元件
./bk_install paas
./bk_install cmdb
./bk_install job
./bk_install app_mgr
./bk_install saas-o bk_nodeman
./bk_install bkdata
./bk_install saas-o bk_monitor
./bk_install fta
./bk_install saas-o bk_fta
./bkcec install gse_agent
# 執行報錯不要往下繼續走了,解決完報錯再繼續
常見報錯
cmdb
# 重啟機器後或者安裝上cmdb報錯502,404
# 修改/etc/resolv.conf,首行新增nameserver 127.0.0.1
# 在網絡卡配置檔案 /etc/sysconfig/network-scripts/ifcfg-eth0,加上一行配置PEERDNS=no
# 儲存後執行:
systemctl restart network
./bkcec stop all
./bkcec start all
gse啟動失敗
# 內網IP自動獲取不對時
# LAN_IP表示GSE伺服器真實可用的內網IP(ip addr輸出檢視),需要根據實際IP替換 修改以下配置檔案項,新增相關配置,注意json格式,逗號問題。
# 配置檔案在gse機器上,/data/bkce/etc/gse
# data.conf
"datasvrip":"LAN_IP",
# task.conf
"tasksvrip":"LAN_IP",
"tasksvrthirftip":"LAN_IP",
"tasksvrtrunkip":"LAN_IP",
# dba.conf
"servers":[{"ip":"LAN_IP","port":58817}],
# btsvr.conf
"filesvrthriftip":"LAN_IP",
"btServerOuterIP":[{"ip":"LAN_IP","port":59173}],
"btServerInnerIP":[{"ip":"LAN_IP","port":59173}],
Copy
# api.conf
"cacheApiAddr":[{"ip":"LAN_IP", "port":59313}],
Copy
# agent.conf
"agentip":"LAN_IP",
./bkcec stop consul
./bkcec install consul 1
./bkcece start consul
./bkcec stop cmdb
./bkcec start cmdb
./bkcec stop gse
./bkcec start gse
# 如果以上方法還是不行,重灌
./bkcec stop gse
./bkcec initdata cmdb
./bkcec install gse 1
./bkcec status gse
job
# 如果部署install job 時候最後報錯出現Failed]-- http port 8008 start fail!
# 用lsof 去每臺機器看lsof -i:8008,然後kill -9 指定pid,15殺不掉java程序
# 如果job一直啟動不起來,訪問報錯502
# 按順序,大部分執行
./bkcec start xxx
# rabbitmq用
systemctl start rabbitmq-server
./bkcec start job
./bkcec start gse_agent
./bkcec start appo
./bkcec start saas-o
節點管理
# 如果部署節點管理命令列出現
# 2019-10-28 17:12:29 126 INFO check deploy result. retry 102
# 2019-10-28 17:12:32 126 INFO check deploy result. retry 103
# 2019-10-28 17:12:35 126 INFO check deploy result. retry 104
# 這些提示,到130左右可以直接去開發者中心一鍵部署,如果報錯超時可以再進行部署一次,如果還報錯,去mysql裡面刪掉指定庫,再建立一個相應庫,修改超時時間,再部署
# 加入新的agent時候如果安裝失敗就再進行重灌一遍,基本都能成功
remote: You must verify your email address.
remote: See https://github.com/settings/emails.
fatal: unable to access 'https://github.com/You-Men/Shell-Script.git/': The requested URL returned error: 403
# 節點管理安裝agent無日誌輸出
# 登入appo所在機器
# /data/bkce/paas_agent/apps/logs/bk_nodeman/看日誌報錯
# 重新部署節點管理
# saas如何重灌 :::: 在開發者中心-->s-mart應用-->找到需要重灌的saas-->點選部署
Rabbitmq啟動失敗
# 表象:在部署藍鯨JOB過程中需要進行RabbitMQ的安裝,資料初始化,啟用步驟,此問題多發生在此過程
# 思路方法:如果是在新增使用者和vhost時報錯,那麼說明啟動rabbitmq-server沒有成功,通過以下方式確認
# 檢視程序是否存在
$ ps -ef | grep beam
# 檢視監聽埠是否存在(5672, 15672, 25672 三個埠必須都在)
$ netstat -tnlpu | grep 5672
# 若沒有啟動,通過systemctl start rabbitmq-server啟動。若系統沒有systemctl命令,通過service rabbitmq start啟動
# 首先排查/data/bkce/etc/rabbitmq目錄,對rabbitmq使用者是否有讀許可權,/data/bkce/public/rabbitmq目錄對rabbitmq使用者是否有寫許可權
# 自己處理好目錄的許可權問題後,再嘗試重啟 rabbitmq-server
# rabbitmq activate失敗
# 表象:此問題發生在./bk_install app_mgr,會發生如下報錯
# 思路方法:
# 確認umask,若不是022,修改/etc/profile,然後source /etc/profile,再解除安裝rabbitmq,重新安裝
# 確認在安裝過程,或在 rabbitmq activate 前主機域名是否做過調整修改
監控
# 部署bkdata報錯:Job is required for bkdata. Please install job first :::: 確認job拉起後,可以自行追加
# echo start job >> /data/install/.bk_install.step
# ./bkcec initdata bkdata # 執行此條命令如果報以下錯誤
# [172.19.0.29]20191028-190202 13 create topic failed.
# [172.19.0.29]20191028-190202 130 migrate failed for bkdata(dataapi)
# 原因一、kafka broker節點缺失
# 若社群版為3臺部署的,必須返回[1, 2, 3]才正常,示例如下 若brokers ids不為[1, 2, 3],可能存在/data/bkce/public/kafka/.lock檔案,有的話,刪除此檔案,再重新使用./bkcec stop kafka和./bkcec start kafka重啟kafka,重啟完再次確認狀態
[root@rbtnode1 /data/install]# /data/bkce/service/zk/bin/zkCli.sh -server zk.service.consul:2181
# ls /common_kafka/brokers/ids
Connecting to zk.service.consul:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[1, 2, 3]
# ./bkcec stop kafka
# rm -rf /data/bkce/public/kafka/.lock
# ./bkcec install kafka 1
# ./bkcec start kafka
# ./bkcec initdata bkdata
# 檢查下kafka狀態是否正確,再執行
# ./bkcec stop bkdata dataapi
# ./bkcec initdata bkdata
# 部署Saas提示超時
# 到appo機器,修改paas_agent的paas_agent_config.yaml,將EXECUTE_TIME_LIMIT調大,重啟paas_agent即可。
# vim /data/bkce/paas_agent/paas_agent/etc/paas_agent_config.yaml
# EXECUTE_TIME_LIMIT: 300 <可修改為900>
# ./bkcec stop appo
# ./bkcec start appo
加入新的Paas
如果部署新的paas模組報錯,直接去mysql資料庫刪掉對應庫,再建立對應庫,再去開發者中心一鍵部署,如果卡頓或者沒報錯可以點下重新部署,多來兩次,不行再去刪掉對應庫,再建立,基本除了監控,節點管理,其他的paas都是這樣安裝成功