code

2014年10月5日 星期日

基礎 Jenkins 備份與還原 - thinBackup

日常生活存在著許多不可預測的風險,系統服務也是。如同良好的保險計畫,會佔你收入的某個比例。在系統上為緊急事件處理,也應該與系統的重要性安排符合比例的預算及時間。

目前市面上尚無自動偵測綠乖乖過期的解決方案,偏偏這是主要風險因素

本篇相關外掛

目標情境

Jenkins 主機上的乖乖過期了,服務表示:崩潰

第一步,建立定期維修公告


此點為重要之重要。一定要先訂定並公告固定的維護時段,讓在Jenkins上作業的所有團隊,建立排程時參考。為求不影響作業,要去找一個沒有作業進行的時間,這答案可能是永遠沒有。

建議最好的停機時間是上班時間!例如每周四的 11:45 - 13:15 

編輯描述說明,可以增添說明,只要注意如何  讓說明顯眼  就好了


只有對客戶的服務,才會選在半夜進行,像這類排程的工具,真正的尖峰期反而是夜深人靜之時;特別是午夜鐘響一過,就會有許多日結資料開始動起來了!但實際上停機不是重點,重要的是服務要確定有啟動,切記無人的自動化維護重啟計畫是很遭糕的,上班時間進行例行維護才是正確的路。你也不想在假日,擔心服務是否有啟動成功吧!

第二步,備份計畫


備份的情境有許多種情況,有的細如只希望回復前幾次的設定,有的可能慘到主機都沒了。所以我們為了建立穩定的服務,要針對這些情況分別建立不同的備份機制。
  1. 設定檔歷程:有如你程式改錯,你會希望SVN調出前一次成功的版本來還原。這種要求對系統管理者來說很雞歪。但人難免會犯錯,能提供這種服務的系統,會讓人格外的安心呢,JobConfigHistory Plugin免設定,直接使用超貼心。
    每個專案的組態設定,都可透過『作業設定歷史』來還原
    也可以任選兩個版本,比較其中的差異
    這種備份是屬於被動式的,有修改的行為觸發時,才會進行。屬系統內服務,便民措施,可以減少因為設定錯誤,而要動用人力去備份檔中找尋的浪費。

  2. 定期備份 - 最小備份:Jenkins需要備份的絕大多數只有設定檔,最重要的也是設定檔,其餘的幾乎都有辦法透過線上自動安裝完成,同樣Jenkins也有簡易方便的主動備份外掛;thinBackup。我們可以密集一點的備份最小備份,但只備份重要的設定檔。或許每30分鐘就備份一次!
    可以在管理Jenkins中找到 ThinBackup 
    設定備份目錄、排程時間、備份最大保留數,但請將左下角保持全部不勾
    設定完成後,thinBackup 的排程必需要等Jenkins重啟後才會生效。但使用外掛來備份是求方便,並不是很穩當,因為當軟體出錯時,你不能強求一個出了錯的程序,還要抽空通知你,我錯了主人。這是個盲點,所以還要有一個穩當點的方式,完整備份。

  3. 定期備份 - 完整備份:最小備份用的是還原時的時間,換取硬碟空間,完整備份反之。完整備份的過程需要花上一點時間及效能,所以最好的時間點,就是配合第一步的維修時間進行。這是最重要的備份內容,備份原則就是千萬不要相信軟體內建的備份功能,一定有一個備份計畫,是使用第三方的工具進行

    我們就用作業系統的 cron 排程進行,備份的位置最好是不同顆硬碟,備份的指令可以參考 https://gist.github.com/abola/05b0a2ba639a1e9e647d
    拷貝或下載網址中的內容,回到主機上儲存
    增加排程的指令參考如下,其中標記紅色檔案請修改成備份指令的檔案路徑,這樣就會每周四的中午12:00整固定產出一份完整備份檔。
    echo "0 12 * * 4 root /bin/sh /var/lib/jenkins/JenkinsFullBackup.sh > /dev/null 2>&1" >> /etc/crontab

備份計畫總結:完整備份每周一個版本,保留四個版本,最多可還原至28天前的狀態。最小備份每30分鐘一個版本,保留336個版本(24x2x7),最多可還原至7天內任一時間點內誤差半小時。

第三步,災復演練

備份還原計畫
如上圖示,完整備份與最小備份共同配合,利用完整備份快速還原系統已下載的各套件檔案,再利用最小備份更新設定檔,至崩潰前的最後一個版本。這就是我們的計畫,開始演練!

安裝空白Jenkins

這步再簡單不過了,請參考[ 無腦安裝Jenkins
一個空白的Jenkins

回復完整備份

切換到新安裝完成的Jenkins目錄下,拷貝完整備份檔過來解壓縮,然後重開
cd /var/lib/jenkins
cp /var/backup/jenkins/jenkins-backup.2014-10-05.tar.gz ./
tar zxvf ./jenkins-backup.2014-10-05.tar.gz
rm ./jenkins-backup.2014-10-05.tar.gz
chown -R jenkins:jenkins /var/lib/jenkins
service jenkins restart

完整備份的還原過程非常快!相關套件都不必再重新下載。

回復最小備份點


待Jenkins啟動後,到管理Jenkins >> ThinBackup >> Restore,選擇要還原的備份點
選擇要回復的時點間即可




沒有留言:

張貼留言