Jenkins Master/Slave架構

來源:互聯網
上載者:User

 

一 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
 
完!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.