jenkins双向备份;高可用部署;

若是把一个Jenkins的整个目录赋值到另外一个Jenkins的目录,则须要务必保持两个Jenkins版本是相同的,否则容易出现Jenkins插件兼容性问题。前端

另外使用inotify+rsync备份的时候(从主Jenkins往备Jenkins备份),注意,一旦切换到备Jenkins,就要里面终止同步进程,知道为何吗?node

缘由是,若是不中止同步任务,那么主Jenkins的内容会不停的同步到备Jenkins,那么在备Jenkins上的新Jobs会被删除掉,这样备Jenkins上不能使用的。个人同步策略是,保持备Jenkins的/var/lib/jenkins目录和主Jenkins一致,那么好比/var/lib/jenkins/jobs的内容也一致性能

方案是:优化

一、经过keepalived实现jenkins主备,一个虚拟IP后面两个物理IP。spa

二、经过inotify+rsync实现master的jobs目录、workspace(能够不一样步)同步到slave上的jobs、workspace,这样切换到slave的jenkins,才能保证任务是是相同的。.net

后来把整个Jenkins目录都备份了,查看yum安装的jenkins安装目录为/var/lib/jenkins,把这个目录都备份后,从主jenkins切换到备jenkins后,用户感知到的前端是彻底相同的,其中包括每一个Jobs的配置,slave节点配置,Jenkins的全局配置等等,其实就是同一个Jenkins,这样保持了主备的一致性。对主jenkins的一些更改,天然同步到备jenkins上。插件

这些视图信息保存在/var/lib/jenkins/config.xml里xml

节点信息保存在/var/lib/jenkins/nodes里blog

jobs任务保存在/var/lib/jenkins/jobs里进程

 

 

三、备机须要重启,以使从master同步过来的jobs内容在slave上的jenkins生效。

四、一旦切换到slave,应该当即中止master向slave的同步操做,即应该当即中止rsync同步进程,否则slave上新产生的内容会被删除掉

其实能够优化同步策略,只把主Jenkins的内容同步到备Jenkins上,而不删除备Jenkins上新增的内容

五、同时开启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

相关文章
相关标签/搜索