influxdb是乙個開源分布式時序、事件和指標資料庫,使用 go 語言編寫,無需外部依賴。該元件在藍鯨的功能定位是儲存藍鯨監控處理後的時序指標資料,在社群版屬於單節點,在企業版屬於雙節點,由etcd+tsdbproxy+influxdb組成雙寫的架構。
在某企業的生產環境上,由於監控納管的節點比較多,influxdb讀寫資料頻繁,造成influxdb執行節點的機器記憶體不足,經常造成服務異常,因此,決定將influxdb節點遷移到記憶體充足的機器上,保證藍鯨平台穩定執行。
遷移方案的確定與測試,通過測試驗證整理出公升級步驟詳情;
評估遷移的影響範圍和風險,建立應對措施和回退方案;
申請變更視窗,安排相關人員,保證遷移後驗證藍鯨功能正常;
模組遷移屬於藍鯨運維工程師的必備技能之一,這裡先講解一下模組遷移的一般方法和思路:
若是遷移模組至新機器,需先初始化新機器環境,配置中控機到新機器免密,在新機器安裝並啟動consul服務
停止舊機器模組服務,刪除$install_path/.intall_module的模組標籤,停止相關計畫任務
修改install.config模組定義檔案,同步指令碼和src檔案
在目標遷移機器安裝相應的模組,這裡可以參考藍鯨整合安裝服務的指令碼$ctrl_dir/bk_install邏輯判斷安裝和初始化的步驟本$ctrl_dir/bk_install邏輯判斷安裝和初始化的步驟
判斷其它服務對遷移模組的依賴,這裡可以參考架構圖模組之間的依賴關係或查詢其它模組的配置檔案依賴,如這裡以匹配job模組為例:grep -i job /data/src/*/support-files/templates/*,重新渲染依賴的模組配置檔案,重啟依賴的服務
若是遷移至新機器,判斷遷移的模組是否需要連線mysql,判斷方法同上,若有則initdata mysql授權
這裡我需要遷移的目標機器已是藍鯨原有的伺服器,且遷移的是資料庫,所以實際的遷移步驟會稍有不同,以下是遷移步驟詳情:
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角色
停止需要遷移的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= #這裡是三如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 #新節點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資料庫批量自動發布
InfluxDB系列(一)influxDB簡介
influxdb是乙個由influxdata用go語言開發的開源時序型資料庫,專注於海量時序資料的高效能讀 高效能寫 高效儲存與實時分析等,無需外部依賴。主要特點 1 基於時間序列,支援與時間有關的相關函式 如最大,最小,求和等 2 可度量性 你可以實時對大量資料進行計算 設計理念 優缺點優勢 架構...
藍鯨安裝Agent
1.windows,windows cygwin 僅支援 administrator system 使用者,linux,aix 僅支援 root 使用者 2.登陸 windows 需要開通445埠,windows cygwin 則通過 ssh,445 埠均可 藍鯨agent手動安裝方法 摘要 在網路...
藍鯨考試模擬
1 修改consul配置檔案,開啟consul的web管理入口,並能通過 curl i 命令看到狀態返回碼為200。cat data bkce etc supervisor consul.conf command usr bin consul agent config file data bkce ...