騰訊藍鯨自動化運維平臺簡介部署及常見報錯解決

men發表於2020-08-01

前言

騰訊藍鯨智雲,簡稱藍鯨,是一套基於 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

如果硬體資源富餘,可以一開始拆分搭建部署。若硬體資源不足,一開始可以混合搭建,注意觀測資源消耗情況,可以適時增加機器,遷移模組的方式來保證整體的可用性。

資源規劃是一個複雜的、動態的過程,更像是一門藝術而不是科學。

這裡給出的一個比較合理的初始配置,基於以下考慮:

  1. 分散式模組達到高可用至少三個節點,所以至少需要三個OS(物理機或虛擬機器均可)
  2. Bkdata是耗費資源最多的藍鯨元件。請分配到4核16G以上的機器。
  3. 若日誌檢索,藍鯨監控是主要使用場景,請給influxdb和elasticsearch模組更多的記憶體,更好磁碟效能比如SSD。
  4. nginx模組所在的機器需要有對外提供服務,可訪問的IP。這是藍鯨平臺的總入口。
  5. 如果需要有跨雲管理需求,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都是這樣安裝成功

相關文章