九、创建Slave节点
通常情况下,我们的项目会由多个模块或者系统组成,不同模块可能会分别部署在不同的服务器,比如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系统的节点多选则第二个。详细如下:
【推荐】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]
【推荐】Launch slave agents via JavaWeb Start 通过javaWeb Start连接节点 (适用于所有支持Java程序的系统)
Tunnel connection through:[可选]在端口转发这种情况下使用
JVM options:[可选]JVM可选参数
这种方法的缺点:如果该节点宕机了,主节点无法自动重启它。
Launch slave via execution of command on the Master 通过主节点的控制台连接节点
在写内容前吐槽一下Jenkins的帮助,说的云里雾里的。应该去看该选项下Launch command的帮助。
Jenkins的开发者考虑到某些企业可能有N++ 个节点(N>=你猜!)。如果在界面配置,那么升级版本之类的操作会很麻烦。所以允许你使用shell脚本去配置管理节点(貌似很方便的样子)。具体的脚本需要你自己写。
Launch command:Unix运行脚本的命令,如:sh aaa.sh
- 【不建议使用】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 December H 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第二个选项,可根据如下配置:
- 打开"系统管理"——"Configure Global Security"
- TCP port JNLP agents 配置成"随机",点击"Agent protocols",打勾开启"Java Web Start Agent Protocol3"
- 检查Plugin Manager中"Enable Slave"需要打勾
点击"Agent protocols"安全策略,开启"Java Web Start Agent Protocol3"
检查"Plugin Manager"中"Enable Slave"需要打勾
- 点击保存,刷新页面,回到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系统机器执行构建步骤;所以标签的设置与管理还是很重要的;
九、创建Slave节点的更多相关文章
- 在linux上创建slave节点
在slave机器上创建一登录用户,步骤如下: 切换至/usr/sbin目录,执行useradd -m test007 -d /home/test007,test007就是我们所创建的用户 执行su+ ...
- 【我的Android进阶之旅】Jenkins挂载slave节点,增强分布式编译的效率
由于公司的Jenkins任务越来越多,而且所有的Android Jenkins任务都在同一台服务器上进行编译,而且该服务器配置Jenkins任务最多3个任务同时运行,所以有时候大家一起编译的时候,只能 ...
- Jenkins安装Slave节点
在系统管理----节点管理下 创建完成后会出现slave节点启动的命令,下载agent.jar,然后启动服务 Master-slave相当于Server和Agent,master管理job和slave ...
- js动态创建style节点(js文件中添加css)
ie6 不能 document.createElement('style') 然后append到head标签里.所以就找到这样个好文章 --------------------- 有很多提供动态创建 ...
- devtmpfs文件系统创建设备节点
分类: LINUX 原文地址:devtmpfs文件系统创建设备节点 作者:wangbaolin719 http://blog.chinaunix.net/uid-27097876-id-4334356 ...
- linux中创建gpio节点
转自:http://blog.chinaunix.net/uid-29165999-id-4296162.html #define GPIO_MAJOR 230 // major device NO. ...
- Labview中创建属性节点和调用节点的用法
创建属性节点 个人感觉有点像C中的指针 创建调用节点
- WIN版的Jenkins Master加入LINUX的SLAVE节点,并作C++程序的集成交付
这次深撸了一下JENKINS的配置,不敢说完全通了. 但对于整个体系,有了更新认识. 将LINUX作为SLAVE节点加入WIN的JENKINS里,网上有很多教程,依作即可. 在将相关任务分配给这个节点 ...
- Javascript进阶篇——(DOM—节点---插入、删除和替换元素、创建元素、创建文本节点)—笔记整理
插入节点appendChild()在指定节点的最后一个子节点列表之后添加一个新的子节点.语法: appendChild(newnode) //参数: //newnode:指定追加的节点. 为ul添加一 ...
随机推荐
- 【SQL Server高可用性】数据库复制:SQL Server 2008R2中数据库复制
经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使用链接服务器+触发器,来实现数据同步,但当要同步的数据表比较多,那么可以考虑用数据库复制技术,来实现数据的同步. 一.使用场景 ...
- Lightoj-1220
https://vjudge.net/problem/LightOJ-1220 求x=bp中最大的p,x可能为负数. 因数分解,x=p1x1*p2x2*...*pnxn x=(p1x1'*p2x2'* ...
- POJ 2411 状压DP经典
Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16771 Accepted: 968 ...
- 同一sql表,在页面展示多级菜单
2.
- ipvsadm命令介绍
为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍一下: 1,virtual-service-address:是指虚拟服务器的ip 地址 2,real-service-addres ...
- java应用简单递归
毕业后就怎么学过算法,还在上学的时候学过数据结构,现在基本上都还给老师了,可惜老师学费没有还给我... 情景: 类似于给定一个数字,算他由多少个数字组成,比如:36 现在有10.5.1 ,那么最佳帅3 ...
- 互评Alpha版本
作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2323] 队名:二次元梦之队 组长:刘莹莹 组员:周昊 潘世维 王玉潘 赵美增 ...
- linux中~和/区别
/是指根目录 就是所有目录最顶层的目录~指的是你当前用户的主目录 如果是root用户的话就是/root/目录 如果是其他用户的话就是/home/下以你用户名命名的用户 在linux里面,~/ ...
- JavaScript学习(一)——基础知识查漏补缺
标签script 我们知道,html要使用js就要使用<script>标签. 两种方式: 一是直接在<script>这里</script>写入代码. 二是在别的文件 ...
- Ubuntu配置SSH服务
本文主要解决Ubuntu配置SSH服务的问题 1.1.修改可用的agt源 sudo vim /etc/apt/sources.list 1.2.更新代码包 sudo apt-get update 2. ...