Jenkins Master/Slave架構(gòu)
一 Jenkins Master/Slave架構(gòu)
Master/Slave相當(dāng)于Server和agent的概念。Master提供web接口讓用戶來(lái)管理job和slave,,job可以運(yùn)行在master本機(jī)或者被分配到slave上運(yùn)行。一個(gè)master可以關(guān)聯(lián)多個(gè)slave用來(lái)為不同的job或相同的job的不同配置來(lái)服務(wù),。
當(dāng)job被分配到slave上運(yùn)行的時(shí)候,,此時(shí)master和slave其實(shí)是建立的雙向字節(jié)流的連接,其中連接方法主要有如下幾種: 1)master通過(guò)ssh來(lái)啟動(dòng)slave Jenkins內(nèi)置有ssh客戶端實(shí)現(xiàn),,可以用來(lái)與遠(yuǎn)程的sshd通信,,從而啟動(dòng)slave agent。這是對(duì)*unix系統(tǒng)的slave最方便的方法,,因?yàn)?unix系統(tǒng)一般默認(rèn)安裝有sshd,。在創(chuàng)建ssh連接的slave的時(shí)候,你需要提供slave的host名字,,用戶名和ssh證書(shū),。創(chuàng)建public/private keys,然后將public key拷貝到slave的~/.ssh/authorized_keys中,,將private key 保存到master上某ppk文件中,。jenkins將會(huì)自動(dòng)地完成其他的配置工作,例如copy slave agent的binary,,啟動(dòng)和停止slave,。但是你的job運(yùn)行所依賴其他的項(xiàng)目需要你自己設(shè)置。
2)master通過(guò)WMI+DCOM來(lái)啟動(dòng)windows slave 對(duì)于Windows的Slave,,Jenkins可以使用Windows2000及以后內(nèi)置的遠(yuǎn)程管理功能(WMI+DCOM),,你只需要提供對(duì)slave有管理員訪問(wèn)權(quán)限的用戶名和密碼,jenkins將遠(yuǎn)程地創(chuàng)建windows service然后遠(yuǎn)程地啟動(dòng)和停止他們,。 對(duì)于windows的系統(tǒng),這是最方便的方法,,但是此方法不允許運(yùn)行有顯示交互的GUI程序,。 注意:不想其他類(lèi)型的鏈接方式,此種方式slave(note)的名字非常重要,,將被用來(lái)當(dāng)做slave的地址訪問(wèn)slave,。
3)實(shí)現(xiàn)自己的腳本來(lái)啟動(dòng)slave 如果上面成套的方法不夠靈活,你可以實(shí)現(xiàn)自己的腳本來(lái)啟動(dòng)slave,。你需要將啟動(dòng)腳本放到master,,然后告訴jenkins master在需要的時(shí)候調(diào)用此腳本來(lái)啟動(dòng)slave。 典型地,你的腳本使用遠(yuǎn)程程序執(zhí)行機(jī)制,,例如SSH,,RSH,或類(lèi)似的方法(在windows,,可以通過(guò)cygwin或psexec來(lái)完成),, 在腳本的最后需要執(zhí)行類(lèi)似java -jar slave.jar來(lái)啟動(dòng)slave。slave.jar可以從http://yourjenkinsserver:port/jnlpjars/slave.jar下載,,也可以在腳本的開(kāi)始先下載此slave.jar從而保證slave.jar正確的版本,。 但是如果使用ssh slave plugin的話,此plugin將自動(dòng)地更新slave.jar,。
4)通過(guò)Java web start來(lái)啟動(dòng)slave jave web start(jnlp)是另一種啟動(dòng)slave的方法,。用這種方法你需要登錄到slave,打開(kāi)瀏覽器,,打開(kāi)slave的配置頁(yè)面來(lái)連接,。還可以安裝為windows service來(lái)使得slave在后臺(tái)運(yùn)行。 如果你需要運(yùn)行的程序需要UI的交互,,使用下面的方法:在slave系統(tǒng)上創(chuàng)建jenkins用戶,,設(shè)置自動(dòng)登錄,在系統(tǒng)的startup items增加slave JNLP文件的快捷方式,,使得slave在系統(tǒng)登錄的時(shí)候自動(dòng)啟動(dòng),。
5)直接啟動(dòng)slave 此方式類(lèi)似于java web start,可以方便地在*unix系統(tǒng)上將slave運(yùn)行為daemon,。需要配置slave為JNLP類(lèi)型連接,,然后在slave機(jī)器上執(zhí)行 java -jar slave.jar -jnlpUrl http://yourserver:port/computer/slave-name/slave-agent.jnlp
* 每個(gè)slave都有用戶jenkins,所有的機(jī)器使用相同的UID和GID,,使得slave的管理更加簡(jiǎn)單,; * 每個(gè)機(jī)器上jenkins用戶的home目錄都相同/home/jenkins, 擁有相同的目錄結(jié)構(gòu)使得維護(hù)簡(jiǎn)單; * 所有的slave運(yùn)行sshd,,windows運(yùn)行cygwin sshd,; * 所有的slave安裝ntp client,用來(lái)與相同的ntp server同步,; * 使用腳本sh來(lái)自動(dòng)地配置slave的環(huán)境,,例如創(chuàng)建jenkins用戶,安裝sshd,,安裝java,,ant,maven等,; * 使用腳本來(lái)啟動(dòng)slave,,保證slave總是運(yùn)行在相同的參數(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 |
|
來(lái)自: ala咪s > 《SCM_Jenkins》