Jenkins学习(3)-Jenkins的Master/Slave机制,及添加Slave节点操作

来源:
http://www.sohu.com/a/318426094_371153
https://www.cnblogs.com/my_captain/p/9301656.html
http://www.pianshen.com/article/3449275031/

一、Jenkins的Master和Slave机制
Jenkins采用Master/Slave架构。
Master/Slave相当于Server和agent的概念,Master提供web接口让用户来管理Job和Slave,Job可以运行在Master本机或者被分配到Slave上运行。一个Master可以关联多个Slave用来为不同的Job或相同的Job的不同配置来服务。
Jenkins的Master/Slave机制除了可以并发的执行构建任务,加速构建以外。还可以用于分布式自动化测试,当自动化测试代码非常多或者是需要在多个浏览器上并行的时候,可以把测试代码划分到不同节点上运行,从而加速自动化测试的执行。

Master:Jenkins服务器。主要是处理调度构建作业,把构建分发到Slave节点实际执行,监视Slave节点的状态。当然,也并不是说Master节点不能跑任务。构建结果和构建产物最后还是传回到Master节点,比如说在jenkins工作目录下面的workspace内的内容,在Master节点照样是有一份的。
Slave:执行机(奴隶机)。执行Master分配的任务,并返回任务的进度和结果。

(图片https://www.cnblogs.com/my_captain/p/9301656.html)

Jenkins Master/Slave的搭建需要至少两台机器,一台Master节点,一台Slave节点(实际生产中会有多个Slave节点)。Jenkins分布式环境搭建步骤如下:
(1)前提:Master和Slave都已经安装JDK 1.8或更高版本
(2)Master节点上安装和配置Jenkins
(3)Master节点上新增Slave节点配置,生成Master-Slave通讯文件SlaveAgent
(4)Slave节点上运行SlaveAgent,通过SlaveAgent实现和Master节点的通讯
(5)Master节点上管理Jenkins项目,指定Slave调度策略,实现Slave节点的任务分配和结果搜集来源。

三、为Jenkins配置Master节点
Master不需要主动去建立,安装Jenkins、创建了Jenkins账户,在登录到主界面时,这台电脑就已经默认为master。
选择“Manage Jenkins”->“Manage Nodes and Clouds”,可以看到Master节点相关信息:
(图片)

三、为Jenkins添加Slave Node
在Jenkins界面选择“Manage Jenkins”->“Manage Nodes and Clouds”->“New Node”
(1)配置Node Name
(2)配置Agent类型:选择永久模式(Permanent Agent)。更多Agent种类请安装类插件后可见。
(3)接下来配置Agent信息:
Name:Slave机器的名字
Description:描述 ,不重要 随意填
of excutors:允许在这个节点上并发执行任务的数量,即同时可以下发多少个Job到Slave上执行,一般设置为 cpu 支持的线程数。
Remote root directory:用来放工程的文件夹,jenkins master上设置的下载的代码会放到这个工作目录下。
Lables:标签,用于实现后续Job调度策略,根据Jobs配置的Label选择Salve Node
Usage:支持两种模式“Use this Node as much as possible”、“Only build Jobs with Label expressiong matching this Node”。选择“Only build Jobs with Label expressiong matching this Node”,
Launch method:这里以选择JNLP连接方式为例:
(1)对于老版本Jenkins,选择为TCP port for JNLP agents jenkins
(2)对于新版本Jenkins,选择jave web start
注意,使用JNLP方式,需要在Manage Jenkins->Configure Gloabl Security界面配置:随机端口的选择:random、Enable Agent为Enable
更多Launch Method种类请在Manage Jenkins->Manage Plugins->Available界面安装(图片)类插件后可见:
(Plugins图片)(安装Plugins后的Launch Method图片)

添加完毕后,在Jenkins主界面,可以看到新添加的Slave Node,但是红叉表示此时的Slave并未与Master建立起联系。节点的“of excutors”通道数可以在此界面上看到:
(图片)

接下来进一步做Slave Node配置。

1、Slave Node节点为Window系统
登录Slave Node主机,浏览器中通过Jenkins master节点的URI登录系统,在Manage Jenkins->Manage Nodes and Clouds页面点击刚新建的节点,进入如下界面:
(图片)
方式一:点击上图中的 “Launch” 按钮,下载 Slave-agent.jnlp 文件到本地,以管理员的权限在命令行执行 Slave-agent.jnlp,最终会弹出一个小窗口,提示Connect,表示Slave Node 和Master Node连接成功。
如果希望把 Slave-agent .jnlp安装成 Windows Service,以后 Slave Node重新启动就能自动连接 master。在弹出一个小窗口的 File 菜单中点击 “Install as a service”,完成安装后上面的小程序会自动关闭,一个命令为jenkinsagent的 Windows服务被创建。
方式二:采用命令行方式。下载agent.jar文件到本地,以管理员的权限在命令行执行截图中的命令。(其中Localhost:8080替换为Jenkins的Master的URI)
(图片)
如果希望本命令在Slave Node重启时自动运行,可以把如上命令保存为bat文件,在Window系统下设置开始时执行此bat文件。

2、Slave Node节点为Linux系统
类同Windows系统的Slave Node节点。只是启动命令方式有差异。
把agent.jar保存到/home/Jenkins,运行/usr/bin/java -jar agent.jar -jnlpUrl ......


四、创建任务,为任务指定Node调度策略
(1)Jenkins首页,New View创建一个自己视图。
(2)选择刚创建的视图,进入My View页面,New Job创建一个任务。
(3)创建Job的页面,“General”下勾选“Restric where this project can be run”,填写Label Expression。
(图片)
Jenkins通过节点的label标签来执行Jobs的Slave Node,一个标签可以关联多台不同命名的slave机器。


五、Jenkins的Master和Slave通信方式
常用的Master和Slave节点连接的方式是ssh或JNLP。
(1)ssh:对于Slave Node是linux系统,最方便的就是通过ssh启动jenkins节点,但这个的前提是Master和Slave之前能进行ssh连接。
(2)jnlp:jnlp连接有个好处就是不需Master和Slave之间能够ssh连接,只需能ping即可。Slave Node是windows的话,这个方式十分实用,因为有时候一些权限或者防火墙的原因,导致Master和Slave不能够ssh连接;还有一些未知的原因导致无法ssh到Slave Node

如章节三所言,也可以安装Jenkins Plugins,支持更广泛的Slave Agent类型、和连接。

猜你喜欢

转载自www.cnblogs.com/yickel/p/12206838.html