jenkins雙向備份;高可用部署;


如果把一個Jenkins的整個目錄賦值到另一個Jenkins的目錄,則需要務必保持兩個Jenkins版本是相同的,不然容易出現Jenkins插件兼容性問題。

另外使用inotify+rsync備份的時候(從主Jenkins往備Jenkins備份),注意,一旦切換到備Jenkins,就要里面終止同步進程,知道為什么嗎?

原因是,如果不停止同步任務,那么主Jenkins的內容會不停的同步到備Jenkins,那么在備Jenkins上的新Jobs會被刪除掉,這樣備Jenkins上不能使用的。我的同步策略是,保持備Jenkins的/var/lib/jenkins目錄和主Jenkins一致,那么比如/var/lib/jenkins/jobs的內容也一致

方案是:

1、通過keepalived實現jenkins主備,一個虛擬IP后面兩個物理IP。

2、通過inotify+rsync實現master的jobs目錄、workspace(可以不同步)同步到slave上的jobs、workspace,這樣切換到slave的jenkins,才能保證任務是是相同的。

后來把整個Jenkins目錄都備份了,查看yum安裝的jenkins安裝目錄為/var/lib/jenkins,把這個目錄都備份后,從主jenkins切換到備jenkins后,用戶感知到的前端是完全相同的,其中包括每個Jobs的配置,slave節點配置,Jenkins的全局配置等等,其實就是同一個Jenkins,這樣保持了主備的一致性。對主jenkins的一些更改,自然同步到備jenkins上。

這些視圖信息保存在/var/lib/jenkins/config.xml里

節點信息保存在/var/lib/jenkins/nodes里

jobs任務保存在/var/lib/jenkins/jobs里

 

 

3、備機需要重啟,以使從master同步過來的jobs內容在slave上的jenkins生效。

4、一旦切換到slave,應該立即停止master向slave的同步操作,即應該立即停止rsync同步進程,不然slave上新產生的內容會被刪除掉

其實可以優化同步策略,只把主Jenkins的內容同步到備Jenkins上,而不刪除備Jenkins上新增的內容

5、同時開啟slave的rsync進程,開始反向同步:這里是雙向同步

基本上有下面幾個狀態:

master的jenkins工作時,開啟master的rsync進程,向slave同步

master的jenkins異常時,關閉master的rsync進程,關閉master的jenkins進程

slave的jenkins開始工作時,啟動slave的jenkins,啟動slave的rsync進程,開始向master同步

master異常恢復后,關閉slave的jenkins進程,關閉slave的rsync進程

注意這里異常判斷條件是看虛擬IP指向那台物理IP,指向的認為是正常的

 

 jenkins性能提升:http://discuss.greatops.net/t/jenkins/32


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM