原文:http://www.cnblogs.com/itech/archive/2011/11/11/2245849.html

一 Jenkins Master/Slave架构

Master/Slave相当于Server和 agent的概念。Master提供web接口让用户来管理job和slave,job可以运行在master本机或者被分配到slave上运行。一个 master可以关联多个slave用来为不同的job或相同的job的不同配置来服务。

当job被分配到slave上运行的时候,此时master和slave其实是建立的双向字节流的连接,其中连接方法主要有如下几种:

1)master通过ssh来启动slave

Jenkins 内置有ssh客户端实现,可以用来与远程的sshd通信,从而启动slave agent。这是对*unix系统的slave最方便的方法,因为*unix系统一般默认安装有sshd。在创建ssh连接的slave的时候,你需要提 供slave的host名字,用户名和ssh证书。创建public/private keys,然后将public key拷贝到slave的~/.ssh/authorized_keys中,将private key 保存到master上某ppk文件中。jenkins将会自动地完成其他的配置工作,例如copy slave agent的binary,启动和停止slave。但是你的job运行所依赖其他的项目需要你自己设置。

2)master通过WMI+DCOM来启动windows slave

对 于Windows的Slave,Jenkins可以使用Windows2000及以后内置的远程管理功能(WMI+DCOM),你只需要提供对slave 有管理员访问权限的用户名和密码,jenkins将远程地创建windows service然后远程地启动和停止他们

对于windows的系统,这是最方便的方法,但是此方法不允许运行有显示交互的GUI程序。

注意:不想其他类型的链接方式,此种方式slave(note)的名字非常重要,将被用来当做slave的地址访问slave

3)实现自己的脚本来启动slave

如果上面成套的方法不够灵活,你可以实现自己的脚本来启动slave。你需要将启动脚本放到master,然后告诉jenkins master在需要的时候调用此脚本来启动slave。

典型地,你的脚本使用远程程序执行机制,例如SSH,RSH,或类似的方法(在windows,可以通过cygwin或psexec来完成),

在脚本的最后需要执行类似java -jar slave.jar来启动slave。slave.jar可以从http://yourjenkinsserver:port/jnlpjars/slave.jar下载,也可以在脚本的开始先下载此slave.jar从而保证slave.jar正确的版本。 但是如果使用ssh slave plugin的话,此plugin将自动地更新slave.jar。

4)通过Java web start来启动slave

jave web start(jnlp)是另一种启动slave的方法。用这种方法你需要登录到slave,打开浏览器,打开slave的配置页面来连接。还可以安装为windows service来使得slave在后台运行。

如果你需要运行的程序需要UI的交互,使用下面的方法:在slave系统上创建jenkins用户,设置自动登录,在系统的startup items增加slave JNLP文件的快捷方式,使得slave在系统登录的时候自动启动。

5)直接启动slave

此方式类似于java web start,可以方便地在*unix系统上将slave运行为daemon。需要配置slave为JNLP类型连接,然后在slave机器上执行

java -jar slave.jar -jnlpUrl http://yourserver:port/computer/slave-name/slave-agent.jnlp
二 Slave配置的好的建议
* 每个slave都有用户jenkins,所有的机器使用相同的UID和GID,使得slave的管理更加简单;
* 每个机器上jenkins用户的home目录都相同/home/jenkins, 拥有相同的目录结构使得维护简单;
* 所有的slave运行sshd,windows运行cygwin sshd;
* 所有的slave安装ntp client,用来与相同的ntp server同步;
* 使用脚本sh来自动地配置slave的环境,例如创建jenkins用户,安装sshd,安装java,ant,maven等;
* 使用脚本来启动slave,保证slave总是运行在相同的参数下:
#!/bin/bash JAVA_HOME=/opt/SUN/jdk1.6.0_04 PATH=$PATH:$JAVA_HOME/bin export PATH java -jar /var/jenkins/bin/slave.jar
 
												

Jenkins Master/Slave架构的更多相关文章

  1. 基于Kubernetes构建企业Jenkins master/slave CI/CD平台

    搭建平台目的: k8s中搭建jenkins master/slave架构,解决单jenkins执行效率低,资源不足等问题(jenkins master 调度任务到 slave上,并发执行任务,提升任务 ...

  2. Jenkins—Master/Slave模式

    Jenkins可部署在windows或者linux平台上,项目系统的用户多数为windows系统.如果Jenkins部署在linux上,而自动化任务要在windows平台执行,那么就需要使用Jenki ...

  3. Jenkins master slave设置遇到的坑以及解决办法

    写好了selenium测试脚本,本地运行没问题,但是现在流行分布式运行,并行执行以显得高大上. 然而,装高大上是要付出代价的. Selenium Grid 已经完美实现分布式和并行了. 奈何现在会Je ...

  4. jenkins master/slave模式

    master是主机,只有master装jenkins slave是小弟机无需装jenkins,主要执行master分配的任务 一.新建slave 1.新建slave的方法:点击magian jenki ...

  5. Jenkins master在windows

    Jenkins master在windows上安装 1 Jenkins Jenkins由以前的hudson更名而来.Jenkins的主要功能是监视重复工作的执行,例如软件工程的构建或在cron下设置的 ...

  6. 【我的Android进阶之旅】Jenkins挂载slave节点,增强分布式编译的效率

    由于公司的Jenkins任务越来越多,而且所有的Android Jenkins任务都在同一台服务器上进行编译,而且该服务器配置Jenkins任务最多3个任务同时运行,所以有时候大家一起编译的时候,只能 ...

  7. Windows下搭建MySQL Master Slave

    一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用keepalived这个HA工具,但是我们可以接受人工进行切 ...

  8. Windows下搭建MySQL Master Slave[转]

    Windows下搭建MySQL Master Slave 一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用k ...

  9. Jenkins设置Master/Slave

    说明:通过master/slave模式,可以在master节点上统一管理其他slave节点. 下面说明一步步实现master/slave模式. 第一步:以管理员登录jenkins.点击"系统 ...

随机推荐

  1. CoffeeRobotTeam项目组报告

    一.小组分工 模块 任务 责任人 备注 报告 需求分析 熊振威 功能分析 熊振威 项目报告 熊振威 人机界面 秦勤.洪超 单元测试 姜进.张文强 机器人代码 机器人类 徐意.余拥军.孙智博 机器人运动 ...

  2. 如何在Win10下设置图片的浏览方式为windows照片查看器

    小编前些天刚装好了win10,一阵心奋啊,今天刚打开一个图片,却发现图片的默认打开方式是window应用商店的app, 这让我觉得特别不舒服,没有之前windows自带的照片查看器好用,后来我本想进入 ...

  3. .net 常用正则表达式

    Net中正则表达式的简单使用方法及常见验证判断 判断字符串是只是数字我们可以这样写:return new System.Text.RegularExpressions.Regex(@"^([ ...

  4. 前端之JavaScript第三天学习(7)-JavaScript-数据类型

    字符串.数字.布尔.数组.对象.Null.Undefined JavaScript 拥有动态类型 JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: 实例 var x      ...

  5. PHP中如何连接数据库基本语句

    只是后端修改页面,不需要在前端显示的可以删除原有代码只输入<?php 开始编写语言即可,后面的?>也可以省略 //造一个连接$connect = @mysql_connect(" ...

  6. bzoj 2743 树状数组离线查询

    我们按照询问的右端点排序,然后对于每一个位置,记录同颜色 上一个出现的位置,每次将上上位置出现的+1,上次出现的-1,然后 用树状数组维护就好了 /************************** ...

  7. OpenSSL心脏出血漏洞全回顾

    近日网络安全界谈论的影响安全最大的问题就是Heartbleed漏洞,该漏洞是4月7号国外黑客曝光的.据Vox网站介绍,来自Codenomicon和谷歌安全部门的研究人员,发现OpenSSL的源代码中存 ...

  8. 用DIV+CSS切割多背景合并图片 CSS Sprites 技术

    很久之前就在互联网网站和一些js插件中见过这种技术的应用,当时觉得很麻烦,就没有用,也没有去深究. 近段时间一直在做前台的一些东西,涉及到很多div+css的问题.这个东东我又碰到了,所以我花了点时间 ...

  9. HDOJ 2079 选课时间(母函数)

    选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. Acdream1217 Cracking' RSA(高斯消元)

    题意:给你m个数(m<=100),每个数的素因子仅来自于前t(t<=100)个素数,问这m个数的非空子集里,满足子集里的数的积为完全平方数的有多少个. 一开始就想进去里典型的dp世界观里, ...