藍鯨Influxdb節點遷移

Influxdb是一個開源分佈式時序、事件和指標數據庫,使用 Go 語言編寫,無需外部依賴。該組件在藍鯨的功能定位是存儲藍鯨監控處理後的時序指標數據,在社區版屬於單節點,在企業版屬於雙節點,由etcd+tsdbproxy+influxdb組成雙寫的架構。mysql

 

在某企業的生產環境上,因爲監控納管的節點比較多,influxdb讀寫數據頻繁,形成influxdb運行節點的機器內存不足,常常形成服務異常,所以,決定將influxdb節點遷移到內存充足的機器上,保證藍鯨平臺穩定運行。sql

 

前期準備

  1. 遷移方案的肯定與測試,經過測試驗證整理出升級步驟詳情;
  2. 評估遷移的影響範圍和風險,創建應對措施和回退方案;
  3. 申請變動窗口,安排相關人員,保證遷移後驗證藍鯨功能正常;

遷移方案

模塊遷移屬於藍鯨運維工程師的必備技能之一,這裏先講解一下模塊遷移的通常方法和思路:數據庫

 

  1. 如果遷移模塊至新機器,需先初始化新機器環境,配置中控機到新機器免密,在新機器安裝並啓動consul服務
  2. 中止舊機器模塊服務,刪除$INSTALL_PATH/.intall_module的模塊標籤,中止相關計劃任務
  3. 修改install.config模塊定義文件,同步腳本和src文件
  4. 在目標遷移機器安裝相應的模塊,這裏能夠參考藍鯨集成安裝服務的腳本$CTRL_DIR/bk_install邏輯判斷安裝和初始化的步驟本$CTRL_DIR/bk_install邏輯判斷安裝和初始化的步驟
  5. 判斷其它服務對遷移模塊的依賴,這裏能夠參考架構圖模塊之間的依賴關係或查找其它模塊的配置文件依賴,如這裏以匹配job模塊爲例:grep -i job /data/src/*/support-files/templates/*,從新渲染依賴的模塊配置文件,重啓依賴的服務
  6. 如果遷移至新機器,判斷遷移的模塊是否須要鏈接mysql,判斷方法同上,如有則initdata mysql受權

這裏我須要遷移的目標機器已經是藍鯨原有的服務器,且遷移的是數據庫,因此實際的遷移步驟會稍有不一樣,如下是遷移步驟詳情: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基本功能等。

 

總結

藍鯨模塊遷移是藍鯨運維必不可少的技能,理解藍鯨架構和安裝腳本原理才能更好掌握模塊遷移的方法,必定要在測試環境先驗證本身的方法步驟,才能避免正式環境遷移出錯。

做者:何立彰

﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

其餘優質好文

Oracle數據遷移後歸檔文件暴增怎麼辦?

Docker的操做詳解

Docker的安裝及架構介紹

什麼是容器的本質?

使用sqlplus進行Oracle數據庫批量自動發佈

相關文章
相關標籤/搜索