1.架构
Jenkins的Master-Slave分布式架构可以解决单点构建任务多、负载较高、性能不足的问题。
2.原理
对于jenkins的分布式框架,可以简单的理解为server-client模式,在jenkins中是Master-slave,也就是一个主的server叫Master,其他的子client都是slave,所以以后我们说slave就是指的一个一个的客户端,而master就是指的主机。
Master的作用:负责分发job任务的。把job分配给某个或者某几个slave来工作。
Slave的作用:负责干活的,也就是do job的。一个一个的客户端来真正运行Master给我们的任务。
Jenkins的分布式构建的核心概念是在slave主机部署一个slave.jar(linux上是remoting.jar),然后master主机和slave主机的slave.jar(linux上是remoting.jar)通讯实现分布式构建,因此部署Jenkins分布式构建的核心步骤是实现master主机和slave主机的无障碍(无密码)通讯,如图所示。Master的作用:负责分发job任务的。把job分配给某个或者某几个slave来工作。
Slave的作用:负责干活的,也就是do job的。一个一个的客户端来真正运行Master给我们的任务。
使用场景:多个自动化测试项目部署到Jenkins,需要同时跑多个自动化用例以节省时间,可以使用Jenkins的slave节点来执行分布式构建
3.搭建步骤(这里我的master和slave都是cenos7,且master上jenkins是用root启动的)
前置条件:master上需要安装Jenkins、jdk、git;
slave上需要安装jdk、git(不需要安装Jenkins)
a.slave新建用户jenkins(避免与其他用户混淆,当然也可以使用其他用户)参考:linux常用命令-11用户相关命令
b.设置免密登录(master免密登录slave)参考:linux-scp命令及如何设置免密登录
在master上执行
ssh-keygen
ssh-copy-id jenkins@slave服务器的ip #这里的jenkins就是步骤a中新建的用户jenkins,与a中的用户保持一致即可
c.新建slave节点
登录到master上部署的Jenkins,系统设置-节点管理-新建节点,进行下图中的配置,注意credentials的配置,其实就是a中jenkins的用户名和密码(也可以用用户名+msater的公钥)
然后保存后启动代理即可
节点列表可查看刚刚创建的slave节点
d.新建job进行测试
新建一个自由风格的job,并在general中设置限制项目的运行节点为178slave
查看控制台输出日志及slave上workspace内容:
特别说明:
1.job中的ssh-agent我觉得配不配置都可,没发现有什么影响,但是配置的话,要使用私钥id_rsa(与免密登录id_rsa不同)
2.slave上remoting.jar的位置