构建高可用的持续集成(1)

基于jenkins的持续集成大体发展经过如下阶段:

单机版的jenkins:jenkins既做任务调度,也做任务执行
master-slave的jenkins:master的jenkins做任务调度,slave节点做任务执行,支持的slave包括jnlp方式、ssh等,slave节点的创建和添加、删除需要手工(当然也可以通过Jenkins/cli实现)
基于cloud的jenkins:依旧是分布式架构,master的jenkins做任务调度,slave节点动态生成,任务执行完不需要的时候删除,当前用的较多的是docker。
前两种方式不能合理利用机器的资源,比如有些计算节点空闲,有些节点繁忙,第三种方式解决了机器使用率的问题。那么问题来了,上述3中方案中,作为master的jenkins都没有做高可用,一旦master挂掉怎么办?

我们知道,jenkins的关键信息,包括任务、插件等都是保存在<jenkins_home>中,所以保存这个文件夹就可以实现jenkins的备份和恢复(备份和恢复比如可以用linux的定时任务;rsync;jenkins的thinbakcup等)。但是恢复的时间是不可避免的,尤其是备份的文件较大时。另外一种方案,就是把<jenkins_home>放在一个NFS共享目录中,这样我们只需要恢复jenkins环境即可,NFS目录的高可用由存储进行保证。而如果jenkins使用docker部署,则此种方式恢复起来就更加方便了。再精简一步,就是jenkins container挂掉,容器自动重启或者生成新的container进行部署,这些可以通过k8s等容器编排实现。文章介绍的是基于apache mesos和marathon的实现方式。至于apache mesos+marathon和k8的区别,大家自行百度,简单来讲:

mesos已经在twitter等公司有稳定成功应用实例
mesos不仅仅支持docker作为container,也支持mesos的的container
mesos的定义为分布式内核,所以和k8s对标的是marathon
mesos现在也可以跑k8s
mesos搭建简单
系统架构如下:
在这里插入图片描述
图例是做了高可用,即marathon、mesos master均通过zk做了3节点。主要工作流程如下:

1、部署和启动mesos-master;

2、部署和启动mesos-agent;

3、部署和启动marathon;

4、部署和启动marathon-lb;

5、部署jenkins;

6、通过marathon-lb访问jenkins。

关注:测试领域专家(头条&微信)获取第一时间文章更新。
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值