Mesos——Jenkins-CI运行在Mesos集群上实现弹性高并发

为什么要把Jenkins 运行到Apache Mesos上?

1、把Jenkins运行到Apache Mesos上,或者说利用Apache Mesos向Jenkins提供slave资源,最主要的目的是,利用Mesos的弹性资源分配来提高资源利用率。通过配置Jenkins-on-Mesos插件,Jenkins master可以在作业构建时根据实际需要动态的想Mesos申请slave节点,并在构建完成的一段时间后将节点归还给Mesos
2、同时,Marathon会对发布到它之上的应用程序进行健康检查,从而在应用程序由于某些原因以为崩掉后自动重启该应用。这样,选择利用Marathon管理Jenkins Master保证了该构建体系的全局高可用。而且,Jenkins Master本身也通过Marathon部署运行在Mesos资源池内,进一步实现了资源共享,提高资源利用率

1 安装Jenkins的mesos插件

首先,需要在Jenkins上安装mesos插件,这个非常简单,就不过多说明。(Jenkins我是在centos7的docker镜像基础之上做的一个新镜像运行的。)

2 配置Mesos Cloud信息

mesos插件安装好之后,从Jenkins的 系统管理 -> 系统设置 ->管理node和cloud, 进入设置页面,在最下面会出现一个新增一个云的选项,点这个下拉选项选择Mesos Cloud就会出现如下的界面:

这个界面上有几个主要的信息一定是要填写的:

  1. Mesos native library path
    这里是要填/usr/lib/libmesos.so,但是如果没装mesos的话是不会有这个文件的。要是直接拷贝一个libmesos.so放到这个目录也是不好用的,所以,我是在Jenkins Master的容器镜像里面也安装了mesos来解决这个问题。
  2. Mesos Master
    这里填Mesos Master地址即可,可以是zk://…/mesos的方式,也可以是单个ip:端口的方式。
  3. Slave username
    默认好像填的是jenkins,这里我直接改成root。
  4. Jenkins URL
    填自己的Jenkins Master的访问地址即可。

配到这里并没有结束,点开上图右下角的高级…就会看见还有一些配置项,是用来配置slave info用的。
在这里插入图片描述
这里也有几个需要注意的地方:

  1. Checkpointing
    这里选Yes,之后就会在Mesos的Framework信息界面看见Jenkins Scheduler的信息。
  2. Label String
    这是为Mesos Cloud起一个label名字,这个名字在以后创建Jenkins任务,指定运行的节点时会用到。

其他的信息,搭建可以看提示信息,根据自己的需要适当修改。接着,再点开上图所示右下角的高级…按钮,会出现docker容器的设置信息。
在这里插入图片描述
在这里插入图片描述

  1. Use Docker Containerizer
    这一项是问是否使用容器,将其勾选。
  2. Docker Image
    填写用来运行Jenkins slave的docker镜像。
  3. Networking
    有Host和Bridge两种方式,我这里用的是Bridge方式(Host方式的我还没有试过)。
  4. Port Mapping
    端口映射,填写自己想要映射的服务端口。
  5. Volumes
    挂载 /usr/bin/docker /var/lib/docker /sys/fs/cgroup /var/run/docker.sock这几个目录后,在容器内部就可以操作主机上的Docker环境,使Jenkins Slave 可以在容器内部进行一些Docker Build,Docker Run,Docker Push等工作,所以我也进行了挂载。

到这里,Mesos Cloud需要配置的主要信息差不多都配置完毕了。其他可以根据自己的实际情况进行修改和调整。

3 配置Jenkins任务

Mesos Cloud配置完之后,Jenkins任务怎么用它呢,这里简单介绍一下。
在这里插入图片描述
如图所示,在Restrict where this project can be run下面的Label空栏里填上之前Mesos配置信息中Label String对应的名字。如果没有问题的话,下面就会出现一条提示信息:Label is serviced by no nodes and 1 cloud。这表明指定的是一个cloud,而不是某个固定的节点。

在下面的构建环境里面,选上Mesos Single-Use Slave,在构建里面执行一条while循环语句来试验下效果。点击构建之后,可以看到如下结果:
在这里插入图片描述
从图中可以看出,Jenkins Master已经从Mesos的资源池里动态调度到一个节点来执行Jenkins的构建任务。这时,在Mesos Master界面上也能看到该节点的信息:
在这里插入图片描述
等到Jenkins任务执行完成之后,Mesos便会将该节点资源收回:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值