Jenkins的分布式应用


  • jenkins分布式的作用

当一个持续集成系统非常庞大的时候,一台持续集成系统是无法完成大批量的job的,所以利用分布式的Jenkins应用就可以解决这样的问题

  • jenkins分布式框架的原理

对于jenkins的分布式框架,大家可以简单的理解为server-client模式,在jenkins中是Master-slave,也就是一个主的server叫Master,其他的子client都是slave,所以以后我们说slave就是指的一个一个的客户端,而master就是指的主机。
Master的作用:负责分发job任务的。把job分配给某个或者某几个slave来工作。
Slave的作用:负责干活的,也就是do job的。一个一个的客户端来真正运行Master给我们的任务。

  • 动手操作

1.Master配置

打开Jenkins的web页面,在‘系统管理’-‘管理节点’中点击‘新建节点’

系统管理

管理节点

新建节点

为节点命名
节点说明

启动方法Launch method:控制hudson怎么开始这个slave:

Launch slave agents on Unix machines via SSH              // master通过ssh来启动slave
Launch slave agents via Java Web Start                  //通过Java web start来启动slave
Launch slave via execution of command on the Master           //实现自己的脚本来启动slave
Let Jenkins control this Windows slave as a Windows service               // master通过WMI+DCOM来启动windows slave

Availability:控制hudson启动和停止slave

 Keep this slave on-line as much as possible            //尽可能多的在线
 Take this slave on-line and off-line at specific times                //在特定的时间启动和停止运行
 Take this slave on-line when in demand and off-line when idle             //当空闲时从上线时的需求和离线

点击保存

然后会看到如图所示:

agent连接方式

可以看到如下两种方式来启动agent,其实就是把master和slave连接到一起。

  • Launch agent from browser
    下载一个jnlp文件,把这个文件复制到slave机器,然后运行。或者在slave机器上通过浏览器访问当前页面,直接下载到slave上。
  • Run from agent command line
    直接通过java的命令号启动jnlp。点击带下划线的超链接slave.jar,把slave.jar下载到slave本地的某个目录下,然后通过这个java命令来启动:java -jar slave.jar -jnlpUrl http://127.0.0.1:8080/computer/test_bat_on_164/slave-agent.jnlp -secret 4108138a31a3435b7b5333ad570ba81f5d23c300530e5fb5f440f82ab84cbf09

说白了,这两种方式都是通过java来启动jnlp

这里有个重点的问题需要讲解

那就是这个jnlp文件,因为默认的jnlp文件里的内容是
<jnlp spec="1.0+" codebase="http://127.0.0.1:8080/computer/test_bat_on_164/"><information><title>Agent for test_bat_on_164</title><vendor>Jenkins project</vendor><homepage href="https://jenkins-ci.org/"/></information><security><all-permissions/></security><resources><j2se version="1.7+"/><jar href="http://127.0.0.1:8080/jnlpJars/remoting.jar"/></resources><application-desc main-class="hudson.remoting.jnlp.Main"><argument>4108138a31a3435b7b5333ad570ba81f5d23c300530e5fb5f440f82ab84cbf09</argument><argument>test_bat_on_164</argument><argument>-url</argument><argument>http://127.0.0.1:8080/</argument><argument>-url</argument><argument>http://localhost:8080/jenkins/</argument></application-desc></jnlp>

注意看里面加粗的ip地址,和我们使用的ip地址有区别:


地址栏
  1. 要修改jnlp中的ip地址为master的地址,比如10.200.0.185
  2. 默认的地址栏是
    http://127.0.0.1:8080/computer/test_bat_on_164/
    而真正的地址是
    http://localhost:8080/jenkins/computer/test_bat_on_164/
    中间缺少一个jenkins,所以这点大家一定要注意,否则jenkins的slave可能连接不成功。这是因为我用的jenkins是下载的jenkins的war包,直接放入到tomcat中的,那么在comcat中,jenkins就是项目名。

总结:

  1. jnlp文件最好不要去换行,可能会遇到未知的问题
  2. ip地址一定要注意
  3. 是否有项目名jenkins

2.Slave配置

把下载好的slave-agent.jnlp文件放入到slave的机器上,然后用记事本打开这个jnlp,让编辑器自动换行
按上面大家要注意的jnlp文件的改法进行修改。

  1. jnlp文件最好不要去换行,可能会遇到未知的问题
  2. ip地址一定要注意
  3. 是否有项目名jenkins

修改后的结果应该类似这样

<jnlp spec="1.0+" codebase="http://10.200.0.185:8080/jenkins/computer/test_bat_on_164/"><information><title>Agent for test_bat_on_164</title><vendor>Jenkins project</vendor><homepage href="https://jenkins-ci.org/"/></information><security><all-permissions/></security><resources><j2se version="1.7+"/><jar href="http://10.200.0.185:8080/jenkins/jnlpJars/remoting.jar"/></resources><application-desc main-class="hudson.remoting.jnlp.Main"><argument>4108138a31a3435b7b5333ad570ba81f5d23c300530e5fb5f440f82ab84cbf09</argument><argument>test_bat_on_164</argument><argument>-url</argument><argument>http://10.200.0.185:8080/jenkins</argument><argument>-url</argument><argument>http://10.200.0.185:8080/jenkins/</argument></application-desc></jnlp>

双击运行这个jnlp,如果没有正确的打开方式,请安装jdk。打开方式选择Java Web Start Launcher

启动运行程序
运行成功

这时候我们打开master上节点页面,会发现test_bat_on_164节点已经成功连接了(没有红叉了)

节点列表

但是有一个时钟不同步的问题,因为jenkins要求集群中的每台电脑的时间都应该是同步的。
解决把法就是打开时钟设置,同步一下和master一样的timer

同步时间

slave上的agent只要打开着,master上的jenkins正在运行这,这台slave就被master连接着。但是如果这个slave机器关机了,从起之后呢,我们需要手动的打开,那成百上千台呢?那就累死了。所以我们要可以让slave机器上的agent添加到windows的服务中,当进入系统后,自动开起这个agent。
注:一旦agent进入到服务之后,就不会有界面了,是在后台运行的,那么如果使用的是Selenium这样的浏览器自动化测试,就不会有浏览器打开,所有的打开过程都在后台的内存中进行,是看不到效果的。所以是否要在服务中添加agent,还是看用户的需求。

安装服务

3. 运行job

我们在jenkins上新建一个项目,比如叫test bat c,在General下勾上Restrict where this project can 被run,选择一个label,这个label就是创建节点时写的标签,这里是bat_run

选择一个label

构建中我们写入
cd c:\jenkins
call c.bat
保存,立即构建

错误提示

他写的是在远程的test bat on 164 上运行构建,在c:\jekkins>call c.bat
但是我们的slave的c:\jenkins下还是空的,所以不可能调用c.bat
我们在slave的c:\jenkins下新建一个c.bat,里面比如写echo cccc
再来构建

成功了

成功了,说明master已经和slave建立了连接,并且运行了slave机器上的一个c.bat脚本。

那以后我们就可以利用这个分布式的方法,让我们jenkins在不同的机器上分别运行多个job,来分担单一构建环境的负担。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 前两篇文章VirtualBox+Vagrant搭建虚拟机、基于Jenkins快速搭建CI,分别完成了:创建虚拟机和...
    sunnyaxin阅读 3,398评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 关键词: Jenkinssvn自动化持续集成 摘要: Jenkins,之前叫做Hudson,是基于Java开发的一...
    johney_zhou阅读 4,606评论 0 0
  • JBoss AS7集群方案...2 基础环境搭建...2 安装jdk.3 AS7安装、配置3 AS7群集配置、测试...
    lannerate阅读 2,832评论 0 1
  • Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤 开发 提交 ...
    jony456123阅读 1,799评论 0 2