天天看點

Jenkins Master/Slave架構

一 Jenkins Master/Slave架構

Master/Slave相當于Server和agent的概念。Master提供web接口讓使用者來管理job和slave,job可以運作在master本機或者被配置設定到slave上運作。一個master可以關聯多個slave用來為不同的job或相同的job的不同配置來服務。

Jenkins Master/Slave架構

當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在系統登入的時候自動啟動。

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      

繼續閱讀