• 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分配的任务,并返回任务的进度和结果。

    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 支持的线程数。[注:Master Node也可以通过此参数配置Master是否也执行构建任务、还是仅作为Jenkins调度节点]

    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连接方式为例,如下:(也可选择Launch agent by connecting it to the master)

    (1)对于老版本Jenkins,选择为TCP port for JNLP agents jenkins

    (2)对于新版本Jenkins,选择jave web start

    注意:使用JNLP方式,需要在Manage Jenkins->Configure Gloabl Security界面配置:勾选“随机选取”、勾选“Java Web Start Ageng Protocol/4”(有的版本是“Inbound TCP Agent Protocol/4”)、Enable Agent配置为Enable

    更多Launch Method种类请在Manage Jenkins->Manage Plugins->Available界面安装(图片)类插件后可见:

     

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

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

    1、Slave Node节点为Windows系统

    登录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,运行sudo java -jar agent.jar....,注意sudo采用管理员方式运行(否则提示Exception in thread "main" java.nio.file.AccessDeniedException:/opt/jenkins错误)。


    四、创建任务,为任务指定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类型和连接。

  • 相关阅读:
    css选择器中的*= , |= , ^= , $= , ~= 的区别
    css 实现小三角
    使用vitevue3ts快速上手做一个todolist
    什么是回流和重绘?
    vue好用组件推荐
    Vue代码风格及规范
    聊聊 SpringBoot 中的两种占位符:@*@ 和 ${*}
    Maven 依赖调解源码解析(三):传递依赖,路径最近者优先
    Maven 依赖调解源码解析(二):如何调试 Maven 源码和插件源码
    Maven 依赖调解源码解析(五):同一个文件内声明,后者覆盖前者
  • 原文地址:https://www.cnblogs.com/yickel/p/12206838.html
Copyright © 2020-2023  润新知