前言
騰訊藍鯨智雲,簡稱藍鯨,是一套基於 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都是這樣安裝成功