Influxdb是一個開源分佈式時序、事件和指標數據庫,使用 Go 語言編寫,無需外部依賴。該組件在藍鯨的功能定位是存儲藍鯨監控處理後的時序指標數據,在社區版屬於單節點,在企業版屬於雙節點,由etcd+tsdbproxy+influxdb組成雙寫的架構。mysql
在某企業的生產環境上,因爲監控納管的節點比較多,influxdb讀寫數據頻繁,形成influxdb運行節點的機器內存不足,常常形成服務異常,所以,決定將influxdb節點遷移到內存充足的機器上,保證藍鯨平臺穩定運行。sql
模塊遷移屬於藍鯨運維工程師的必備技能之一,這裏先講解一下模塊遷移的通常方法和思路:數據庫
這裏我須要遷移的目標機器已經是藍鯨原有的服務器,且遷移的是數據庫,因此實際的遷移步驟會稍有不一樣,如下是遷移步驟詳情:json
Step1:備份須要遷移節點的數據庫,並將備份目錄拷貝至新節點,備份命令以下:服務器
for i in `ls /data/bkee/public/influxdb/data`;do influxd backup -host 127.0.0.1:8088 -database $i /data/backup/influxdb_$(date +%Y-%m-%d);done架構
influxd backup -host 127.0.0.1:8088 /data/backup/influxdb_meta運維
Step2:遷移influxdb角色ssh
中止須要遷移的influxdb節點; 分佈式
systemctl stop influxdb 測試
systemctl disable influxdb
清理crontab(influxdb tsdbproxy)
修改中控機install.config(刪除舊節點,在新節點添加influxdb),在新節點安裝influxdb服務;
cd /data/install
./bkeec stop bkdata #中止監控數據寫入
./bkeec sync common
./bkeec sync influxdb
直接ssh新節點直接安裝influxdb
. /data/install/control.rc
. /data/install/install.rc
install_influxdb (如沒計劃任務手動添加crontab)
start_influxdb
start_tsdbproxy
檢查influxdb服務解析是否正常
先刪除舊機器/data/bkee/etc/consul.d/influxdb.json
中控機./bkeec update consul
dig influxdb.service.consul是否正常
Step3:還原數據到遷移後的數據庫
進入新節點同步過去的influxdb備份文件目錄
for db in $(ls *.rp_* | sed 's/\.rp_.*//' | sort -u); do influxd restore -database $db -datadir /data/bkee/public/influxdb/data /data/backup/influxdb_$(date +%Y-%m-%d); done
influxd restore -metadir /data/bkee/public/influxdb/meta /data/backup/influxdb_meta
Step4:從新渲染依賴模塊、重啓服務
在中控機下執行:
source /data/install/utils.fc
./bkeec render bkdata
./bkeec render tsdbproxy
./bkeec stop bkdata
./bkeec start bkdata
./bkeec stop tsdbproxy
./bkeec start tsdbproxy
另外,還須要驗證註冊在etcd集羣的influxdb節點
ssh $ETCD_IP
endpoint=http://192.168.102.171:2379,http://192.168.102.173:2379,http://192.168.102.174:2379 #這裏是三如ETCD的IP
查看註冊的兩個節點
etcdctl --endpoints $endpoint get /backends/local/url
etcdctl --endpoints $endpoint get /backends/local1/url
若是是錯誤節點URL,配置指向新節點的URL
etcdctl --endpoints $endpoint set /backends/local1/url http://192.168.102.175:5260 #新節點influxdb的IP
Step5:驗證數據寫入
influx -host influxdb.service.consul -port 5260 -precision rfc3339 #在influxdb新節點執行
select * from "_internal"."monitor"."write" order by "time" desc limit 2
針對於藍鯨平臺的變動操做,須要在變動後仔細檢查平臺每項功能,保證平臺服務正常,按照整理的checklist逐項檢查,如平臺後臺服務、SaaS基本功能等。
藍鯨模塊遷移是藍鯨運維必不可少的技能,理解藍鯨架構和安裝腳本原理才能更好掌握模塊遷移的方法,必定要在測試環境先驗證本身的方法步驟,才能避免正式環境遷移出錯。
做者:何立彰
﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌