通常情况下,我们的项目会由多个模块或者系统组成,不同模块可能会分别部署在不同的服务器,比如mod1部署在ser1,mod2部署在ser2上;

  之前的文档是描述了将jenkins也部署在ser1上,当mod1模块代码有修改,自动部署mod1的环境并自动执行mod1的api测试脚本;

  那mod2怎么设置?需要在ser2上也搭建一整套类似ser1上的jenkins环境吗?这样不仅浪费资源,对于环境的维护、模块的管理都是非常低效的;

  这里就需要jenkins的分布式部署,master部署在ser1上,可以配置一个slave节点类似于jenkins的子系统指向ser2,这样就能实现在ser2上搭建jenkins的效果,只是这里搭建的不是真正的完整的jenkins,而是一个jenkins的子系统,master分支的一个slave节点;

  跟之前搭建moster一样,jenkins是运行于java环境中的,所以必须保证ser2已经部署好了java环境,否则配置完链接服务器时,会出现报错;

slave配置步骤:

一、在linux系统中

  jenkins >> 系统管理 >> 管理节点,此时会有一栏master分支的数据列表;

  

  这是我们搭建的jenkins的主分支;

  点击左侧的“新建节点”,输入节点名称,并选中permanent agent,点击ok;

  

  初次设置没有下面的“复制现有节点”,因为我已经有建好了的节点,才有这个选项;

  点击ok后跳转到节点的设置页面:

  

  名字:节点的名字
  描述:说明这个节点的用途等
  of executors:并发构建数量
  远程工作目录:用于设置jenkins在服务器系统中的工作空间
  标签:分配job会以标签的名称去分配,不同slave可能设置相同标签
  用法:节点的使用策略
  启动方法:使用Launch slave agents via SSH

    Host:ser2服务器的地址(主机名或ip地址)

    Credentials:登陆ser2服务器的用户账号,需要先点击右侧的Add,选择用户名密码方式登陆,输入ser2服务器的账号信息,保存后返回来选择你刚刚Add的Credential;

  Availability:可用性选择Keep this agent online as much as possible;

  点击Save保存设置;

  

  设置完成后,会看到在节点列表中,原来master节点下面会有新增的节点;这个就是一个slave节点,部署在ser2服务器但也受jenkins分支支配管理;

  新建一个自由风格的任务,其他的配置都同之前一样,只是在General节点配置时,选择好对应的jenkins节点,节点的选择是按设置节点时的标签为准;

  

  配置完成后,在ser2服务器设置的工作目录空间中,查看是否有对应的代码fork分支;

二、在windows系统中

  第一步:通过Jenkins主页->系统管理进入管理节点界面,如下图,然后对节点进行配置 

第二步:选择“新建节点”后,跳转至新建节点页面,输入一个节点名称,选择“Dump Slave”添加一个节点。

Name:节点名称

Description:节点描述,支持中文

# of executors:最大同时构建数量(根据机器的性能定,单颗四核cpu建议不要超过5)【必须为数字】

Remote FS root:节点的根目录(注意:如果目录不存在,会自动创建目录。你必须对该目录有读写权限,不然会报错:hudson.util.IOException2: Failed to copy xxxx)

Labels:标记(又叫做标签)用来对多节点分组,标记之间用空格分隔.例如'refression java6'将会把一个节点标记上'regression'和'java6'.

  举例来说,如果你有多个Windows系统的构建节点并且你的Job也需要在Windows系统上运行,那么你可以配置所有的Windows系统节点都标记为'windows', 然后把Job也标记为'windows'.这样的话你的Job就不会运行在除了Windows节点以外的其它节点之上了.

用法:尽可能的使用这个节点/只允许运行绑定到这台机器的Job(根据你的需求,二选一)

Launch method:运行方式有四个选项。建议选择第1、2种方式配置,windows系统的节点多选则第二个。详细如下:

  1. 【推荐】Launch slave agents on Unix machines via SSH   在Unix(包括linux)机器上通过SSH通道连接节点 (适用于Unix和Linux)

      Host:节点主机的ip地址

      Credentials:凭据(如果为空或者不可选择,请在系统管理→Manage Credentials中配置。Manage Credentials的配置非常简单,这里就不在描述了。Manage Credentials配置完成后,需刷新节点配置页面才会显示。)

      Port:端口默认22

      JavaPath:[可选]JDK路径,默认和master节点相同。路径必须指定到Java程序,如:/path/bin/java

      JVM Options:[可选]JVM可选参数

      Prefix Start Slave Command:[可选]不知道干什么用的参数

      Suffix Start Slave Command:[可选]不知道干什么用的参数

       测试可以使用Unix命令,会自动拼接在[SSH] Starting slave process:[Prefix Start Slave Command] cd '/path' && /path/bin/java -jar slave.jar [Suffix Start Slave Command]

  2. 【推荐】Launch slave agents via Java Web Start   通过java Web Start连接节点 (适用于所有支持Java程序的系统)

      Tunnel connection through:[可选]在端口转发这种情况下使用

      JVM options:[可选]JVM可选参数

      这种方法的缺点:如果该节点宕机了,主节点无法自动重启它。

      

  3. Launch slave via execution of command on the Master  通过主节点的控制台连接节点

       在写内容前吐槽一下Jenkins的帮助,说的云里雾里的。应该去看该选项下Launch command的帮助。

       Jenkins的开发者考虑到某些企业可能有N++ 个节点(N>=你猜!)。如果在界面配置,那么升级版本之类的操作会很麻烦。所以允许你使用shell脚本去配置管理节点(貌似很方便的样子)。具体的脚本需要你自己写。

      Launch command:Unix运行脚本的命令,如:sh aaa.sh

  4. 【不建议使用】Let Jenkins control this Windows slave as a Windows service   让Jenkins节点添加到Windows服务中

       这个选项比Launch slave agents via Java Web Start添加为服务更加稳定(帮助文档是这么说的)。采用这种运行方式,那么这个系统不能登录任何用户。这种配置方式是非常的麻烦和折腾。具体请查看 点我去看帮助

      Administrator user name:域\管理员账号

      Password:密码

      Host:节点主机IP或者域名

      Run service as:

        Use Local System User:使用本地系统用户

        Log on using a different account:使用不同的用户登录

          User name:账号

          Password:密码

        Use Administrator account given above:使用上面的用户登录

      Path to java executable:[可选]JDK路径。必须指定到Java程序,如:C:\Windows\system32\java.exe

      JVM options:[可选]JVM可选参数

    

Availability:

  • Keep this slave on-line as much as possible:尽可能保持节点在线【推荐】
  • Take this slave on-line according to a schedule:根据时间表在线(类似于Linux的定时任务)

Startup Schedule:类似于Linux定时任务的时间,如下:

                   # every fifteen minutes (perhaps at :07, :22, :37, :52)H/15 * * * *# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)H(0-29)/10 * * * *# once every two hours every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)H 9-16/2 * * 1-5# once a day on the 1st and 15th of every month except DecemberH H 1,15 1-11 *                   如果使用 H Jenkins会自动提前一段时间连接节点,避免出现同一时间高并发的问题

Scheduled Uptime:超过任务时间后延迟多少分钟离线。如果此数值大于在线总时间(单位:分),就会一直保持在线【必须为数字】

Keep on-line while jobs are running:当有Job在构建时(到达离线时间了)继续保持在线

  • Take this slave on-line when in demand and off-line when idle:让Jenkins根据需求自动连接或者离线

In demand delay:告诉Jenkins如果有Job需要在此节点构建,需要在任务队列等待多长时间才会进入任务状态进行构建【必须为数字】

Idle delay:告诉Jenkins多少分钟内如果没有Job需要构建就离线【必须为数字】

Node Properties:

  • Environment variables:配置环境变量(可以在脚本中引用,好方便啊\(^o^)/~)
  • Tool Locations:工具的目录【推荐】。说明:可以替换系统设置的各种工具目录。如:JDK目录、Ant目录、Maven目录等。好处就是在不更改Job配置的情况下,不同环境(如:Windows和Linux) Job配置通用。好方便啊\(^o^)/~

到此,节点的配置工作完成了,点击Save保存。进入下一步节点的连接:

只介绍Launch slave agents via Java Web Start第二种连接方式,Launch slave agents on Unix machines via SSH点击保存后会自动连接。因为Launch slave via execution of command on the Master和Let Jenkins control this Windows slave as a Windows service选项没有配置测试过,所以大家自行折腾吧。

另外,对于有些新安装的jenkins,在配置节点的时候,可能会没有via Java web Start第二个选项,可根据如下配置:

  1. 打开"系统管理"——"Configure Global Security"
  2. TCP port JNLP agents 配置成"随机",点击"Agent protocols",打勾开启"Java Web Start Agent Protocol3"
  3. 检查Plugin Manager中"Enable Slave"需要打勾
  4. 点击"Agent protocols"安全策略,开启"Java Web Start Agent Protocol3"

  5. 检查"Plugin Manager"中"Enable Slave"需要打勾

  6. 点击保存,刷新页面,回到slave节点配置页面,启动方法就有了Launch slave agents via Java Web Start;

第三步:

如上图所示,有两种方式可以启动节点(都是JNLP方式。JNLP连接需要端口,默认连接端口是随机的,端口更改 系统设置→Configure Global Security→JNLP节点代理的TCP端口)

你有两种方式启动:

1.Launch agent from browser on slave  下载文件slave-agent.jnlp文件,双击打开。

一般用在Windows系统上,需要javaws.exe(在Java的bin目录中可以找到)程序才能打开。如果提示错误,请卸载JDK后重新安装。成功启动如下图所示:

点击左上角的File选择Install as a service就可以添加为Windows的服务了(默认开机自动启动)。

2.Run from slave command line   javaws  http://xxxx/slave-agent.jnlp  如果你配置了权限那么后面还有一串看不懂的随机Key

下载slave.jar到本地,然后命令行模式下进入存放slave.jar的目录,复制粘贴并运行 java -jar slave.jar -jnlpUrl http://xxxxx  即可启动。刷新页面:

三、配置slave节点的job

  没有什么可说的,只是在上图配置项时,选择Restrict where this project can be run,并Label Expression填写配置好的slave节点的标签名称,多个slave节点可以公用一个标签,比如分别在多个windows系统机器上配置了jenkins的slave节点,每个windows的slave节点的label都是windows;配置job时Label Expression也写的windows,这样可以做到,构建这个job可以同时触发所有的windows系统机器执行构建步骤;所以标签的设置与管理还是很重要的;

转载于:https://www.cnblogs.com/zanjiahaoge666/p/6472553.html

九、创建Slave节点相关推荐

  1. 【手写 Vue2.x 源码】第十九篇 - 根据 vnode 创建真实节点

    一,前言 上篇,根据 render 函数,生成 vnode,主要涉及以下几点: 封装 vm._render 返回虚拟节点 _s,_v,_c的实现 本篇,根据 vnode 虚拟节点渲染真实节点 二,根据 ...

  2. mysql slave是什么_创建slave的搜索结果-阿里云开发者社区

    Rainbond部署Mysql主从集群应用说明 Mysql主从同步原理 1)在Slave 服务器上执行sart slave命令开启主从复制开关,开始进行主从复制. 2)此时,Slave服务器的IO线程 ...

  3. linux内核创建节点,Linux内核驱动自动创建设备节点文件

    Linux下生成驱动设备节点文件的方法有3个:1.手动mknod:2.利用devfs:3.利用udev 在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上L ...

  4. xml操作之创建xml节点

    Xml是一个存放数据的小型数据库文件,这个应用也很广泛,先把数据添加保存到xml中,然后在读取出来,今天就来看看如何创建xml节点并添加数据,代码如下:   protected void Insert ...

  5. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 创建 XmlNode 节点 | 管理 XmlNode 节点并将根节点转为 Xml 信息 | 完整代码示例 )

    文章目录 一.创建 XmlNode 节点 二.管理 XmlNode 节点并将根节点转为 Xml 信息 三.完整代码示例 1.自定义 Xml 生成器 MyBuilderSupport 2.Xml 节点封 ...

  6. PHP 将二叉查找树转换为双向链表,要求不能创建新节点,只能调节节点指针

    <?php#将二叉查找树转换为双向链表,要求不能创建新节点,只能调节节点指针#解题思路是从树的底层开始,调整每个节点的左右子树,将左子树的最大节点与根节点相连,将又子树的最小节点与根节点相连#我 ...

  7. Javascript元编程创建DOM节点

    在使用javascript创建DOM节点的过程中,难免要使用document.createElement.setAttribute. document.createTextNode等冗长.还有浏览器兼 ...

  8. js添加多个子节点_JS创建DOM节点-使用document.createElement()创建子节点或同级节点...

    在一个Web页面中,需要弹出一个提示信息显示给用户.基于这个需求,要使用document.createElement()创建一个DOM节点.创建完节点后,还要使用appendChild()或inser ...

  9. C语言创建一个节点Node(附完整源码)

    C语言创建一个节点Node 节点结构体定义 C语言创建一个节点Node完整源码 节点结构体定义 struct node {struct node *leftNode;int data;struct n ...

最新文章

  1. php生成pdf乱码_php+tcpdf生成pdf: 中文乱码
  2. php数组转xml文件,php数组转换成xml格式的实现方法
  3. Opencv step by step - 加载视频
  4. 一个查看Cookie的便捷工具——EditThisCookie
  5. 【Qt】2D绘图之涂鸦板
  6. Normalize.css :一种用于重置默认的CSS样式的样式工具
  7. boost::lexical_cast
  8. 各大主流K8S服务全方位能力比对
  9. flutter text 自动换行_Flutter 系列博客——05 StatelessWidget vs StatefulWidget
  10. *SQL Server系统表的应用
  11. 毕业论文自动去重软件,内附软件
  12. 产品经理如何写出一看就想约的简历
  13. 脚踏实地《数据结构第二章》第五节:循环链表
  14. 2023年最新前端面试题——你也可以成为那个卷王(持续更新中~)
  15. 基于JAVA宠物用品交易网站计算机毕业设计源码+系统+lw文档+部署
  16. Adb使用教程,看了教程后你也是玩机达人啦
  17. linux系统如何下游戏,海岛纪元干货 在Linux系统下如何畅玩游戏攻略
  18. java开发实战经典(第二版)P528 14-2
  19. 如何让人更高效的完成事情
  20. CentOS7安装可移植Prometheus+grafana--基础搭建

热门文章

  1. java栈和堆的区别_Java中堆和栈的区别
  2. 遇到“脏乱差”的Excel数据怎么办??利用Python规范Excel表格数据(数据清洗)
  3. 计算机网络 :网络层
  4. 利用SQLCipher加解密数据库(包括加解密已有的数据库)
  5. 欧美电影色调如何实现
  6. 牙齿如何美白|牙齿美白民间偏方
  7. 基于FPGA的时间数字转换(TDC)设计(五:基于Carry4的高精度TDC设计)
  8. android 按钮手势,如何在Android 10中使用手势导航或如何关闭它
  9. 求高精度幂 java_JAVA高精度_求高精度幂
  10. python输出表格到word_如何将python输出的内容输入到表格Excel中_excel表格导入word太大...