Jenkins Master/Slave架构

原文: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
 
				
时间: 2024-08-05 21:10:59

Jenkins Master/Slave架构的相关文章

jenkins master/slave模式

master是主机,只有master装jenkins slave是小弟机无需装jenkins,主要执行master分配的任务 一.新建slave 1.新建slave的方法:点击magian jenkis---magian nodes 以下设置,需要注意下 启动方式,新版的jenkins只有一个选项,如下图,需要去开启 magian jenkis下有一个全局安全配置,代理配置,选随机 2.slave主动向master发起连接-注册 2.1 下载连接 2.2如果希望小弟机,一开机就连上,安装一个服务

Windows下搭建MySQL Master Slave

转:http://www.cnblogs.com/gaizai/p/3248207.html http://www.cnblogs.com/gaizai/archive/2013/03/15/2961868.html   MySQL表数据迁移自动化 http://www.cnblogs.com/gaizai/archive/2012/10/23/2735556.html  Ubuntu10下MySQL搭建Master Slave 一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做M

Jenkins设置Master/Slave

说明:通过master/slave模式,可以在master节点上统一管理其他slave节点. 下面说明一步步实现master/slave模式. 第一步:以管理员登录jenkins.点击"系统管理/管理节点". 注:一般用户也可以添加节点.IE输入:http://ip:port/jenkins/computer/即可介入节点视图. 第二步:选择"新建节点".如果是首次创建,则只有"dumb slave"可用,否则还可从现有节点复制. 第三步:选择&

k8s版jenkins中master/slave模式

k8s环境: master 192.168.0.91 node 192.168.0.92 下面所有操作都是在node:192.168.0.92上进行 生成自定义Jenkins master镜像 原始的Jenkins master镜像并不符合我们当前需求,所以在原始镜像的基础上做了一些改变,这一步并不是必须的,主要是看具体需求 下载原始镜像 链接:https://pan.baidu.com/s/14z5BnFAXYoMnDoXbiNgmuQ 提取码:ecsq 导入镜像 docker load <

jenkins新建节点slave架构多节点发布任务

如何使用jenkins中的slave架构? 使用jenkins的时候,由于单节点的的架构,导致不能满足多种需求,比如测试环境和生产环境,可能你测试环境是一套环境,另外的生产环境又是一套环境,为了节省节点,那么只需要在你之前的jenkins环境中开启一个slave的节点进行配置就能使用这个jenkins-slave去发布你的任务了,这样也是非常方便运维,这是根据每个开发环境的不同去实现的,这里只是我个人经验,仅供参考. 这里就分为一步,打开你的jenkins,打开系统管理,找到节点管理,新建节点这

jenkins 启动slave,出现com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://127.0.0.1:8080/jnlpJars/remoting.jar

master: linux slave: win7 64位系统 在配置好系统后,采用jnlp的方式启动slave节点,报错如下: com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://127.0.0.1:8080/jnlpJars/remoting.jar at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) at c

自动安装MongoDB Master, Slave, Arbiter脚本

最近有一个新项目需要用到MongoDB的Master,Slave,Arbiter的架构,去官网翻了一下文档,写了一个简陋的脚本.脚本可以在我的github上找到https://github.com/sangrealest #!/bin/bash #Author:Shanker #Time:2016/03/04 SlaveIP='10.128.129.45' SlaveName='Databse-Slave' SlaveMongoPort='27017' ArbiterIP='10.128.129

Jenkins master在windows

Jenkins master在windows上安装 1 Jenkins Jenkins由以前的hudson更名而来.Jenkins的主要功能是监视重复工作的执行,例如软件工程的构建或在cron下设置的jobs.具体地: *软件的持续构建和测试,此时Jenkins与CruiseControl或DamageControl相似.本质上提供了一个易于使用的持续集成系统,使得开发人员更容易地将改变集成到工程中,使得用户更容易获得一个新的build.自动化,持续的构建提高了软件开发的效率. *监视外部运行的

jenkins windows slave 报错ERROR: Error cloning remote repo &#39;origin&#39;

在slave上是git clone ssh是可以成功的,但是jenkins调用slave节点就报如下错误: ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Could not init C:\lebo\workspace\repo1 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$5.execute(CliGitAPIImpl.java:717)