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可以關聯(lián)多個slave用來為不同的job或相同的job的不同配置來服務。

當job被分配到slave上運行的時候,此時master和slave其實是建立的雙向字節(jié)流的連接,其中連接方法主要有如下幾種:

1)master通過ssh來啟動slave

Jenkins內(nèi)置有ssh客戶端實現(xiàn),可以用來與遠程的sshd通信,從而啟動slave agent。這是對*unix系統(tǒng)的slave最方便的方法,因為*unix系統(tǒng)一般默認安裝有sshd。在創(chuàng)建ssh連接的slave的時候,你需要提供slave的host名字,用戶名和ssh證書。創(chuàng)建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及以后內(nèi)置的遠程管理功能(WMI+DCOM),你只需要提供對slave有管理員訪問權限的用戶名和密碼,jenkins將遠程地創(chuàng)建windows service然后遠程地啟動和停止他們。

對于windows的系統(tǒng),這是最方便的方法,但是此方法不允許運行有顯示交互的GUI程序。

注意:不想其他類型的鏈接方式,此種方式slave(note)的名字非常重要,將被用來當做slave的地址訪問slave。

3)實現(xiàn)自己的腳本來啟動slave

如果上面成套的方法不夠靈活,你可以實現(xiàn)自己的腳本來啟動slave。你需要將啟動腳本放到master,然后告訴jenkins master在需要的時候調(diào)用此腳本來啟動slave。

典型地,你的腳本使用遠程程序執(zhí)行機制,例如SSH,RSH,或類似的方法(在windows,可以通過cygwin或psexec來完成),

在腳本的最后需要執(zhí)行類似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系統(tǒng)上創(chuàng)建jenkins用戶,設置自動登錄,在系統(tǒng)的startup items增加slave JNLP文件的快捷方式,使得slave在系統(tǒng)登錄的時候自動啟動。

5)直接啟動slave

此方式類似于java web start,可以方便地在*unix系統(tǒng)上將slave運行為daemon。需要配置slave為JNLP類型連接,然后在slave機器上執(zhí)行

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的環(huán)境,例如創(chuàng)建jenkins用戶,安裝sshd,安裝java,ant,maven等;

* 使用腳本來啟動slave,保證slave總是運行在相同的參數(shù)下:

#!/bin/bash JAVA_HOME=/opt/SUN/jdk1.6.0_04 PATH=$PATH:$JAVA_HOME/bin export PATH java -jar /var/jenkins/bin/slave.jar

完!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 前言 前段時間的工作中有接觸到接口測試,測試代碼以maven工程的形式編寫,使用testNG測試框架。工作中,每次...
    Ivanlfli閱讀 4,015評論 7 24
  • 前兩篇文章VirtualBox+Vagrant搭建虛擬機、基于Jenkins快速搭建CI,分別完成了:創(chuàng)建虛擬機和...
    sunnyaxin閱讀 3,496評論 0 4
  • jenkins分布式的作用 當一個持續(xù)集成系統(tǒng)非常龐大的時候,一臺持續(xù)集成系統(tǒng)是無法完成大批量的job的,所以利用...
    幽靈小子閱讀 4,947評論 0 3
  • 河流緩緩淌過的時候, 樹葉隨風落下的時候, 云彩從頭頂飄過的時候, 遠山在無聲聳立的時候。 一場針對集體的謀殺從未...
    雁落秋崖閱讀 235評論 0 0
  • 號外號外遼漁出口烤魚片,只有內(nèi)部才能拿到貨哦,不對外???簡易包裝,自家吃便宜,經(jīng)濟實惠,買不了上當,買不了吃虧,...
    不一樣的嫣閱讀 310評論 0 0

友情鏈接更多精彩內(nèi)容