Jenkins 主備master-slave模式搭建

Jenkins學習(3)-Jenkins的Master/Slave機制,及添加Slave節點操作

 

來源:

http://www.sohu.com/a/318426094_371153

https://www.cnblogs.com/my_captain/p/9301656.html

http://www.pianshen.com/article/3449275031/

一、Jenkins的Master/Slave機制                                                                                                                            

Jenkins採用Master/Slave架構。Master/Slave相當於Server和agent的概念,Master提供web接口讓用戶來管理Job和Slave,Job可以運行在Master本機或者被分配到Slave上運行。一個Master可以關聯多個Slave用來爲不同的Job或相同的Job的不同配置來服務。

Jenkins的Master/Slave機制除了可以併發的執行構建任務,加速構建以外。還可以用於分佈式自動化測試,當自動化測試代碼非常多或者是需要在多個瀏覽器上並行的時候,可以把測試代碼劃分到不同節點上運行,從而加速自動化測試的執行。

Master:Jenkins服務器。主要是處理調度構建作業,把構建分發到Slave節點實際執行,監視Slave節點的狀態。當然,也並不是說Master節點不能跑任務。構建結果和構建產物最後還是傳回到Master節點,比如說在jenkins工作目錄下面的workspace內的內容,在Master節點照樣是有一份的。

Slave:執行機(奴隸機)。執行Master分配的任務,並返回任務的進度和結果。

Jenkins Master/Slave的搭建需要至少兩臺機器,一臺Master節點,一臺Slave節點(實際生產中會有多個Slave節點)。Jenkins分佈式環境搭建步驟如下:

(1)前提:Master和Slave都已經安裝JDK 1.8或更高版本

(2)Master節點上安裝和配置Jenkins

(3)Master節點上新增Slave節點配置,生成Master-Slave通訊文件SlaveAgent

(4)Slave節點上運行SlaveAgent,通過SlaveAgent實現和Master節點的通訊

(5)Master節點上管理Jenkins項目,指定Slave調度策略,實現Slave節點的任務分配和結果蒐集來源。

 

二、爲Jenkins配置Master節點                                                                                                                                

Master不需要主動去建立,安裝Jenkins、創建了Jenkins賬戶,在登錄到主界面時,這臺電腦就已經默認爲master。

選擇“Manage Jenkins”->“Manage Nodes and Clouds”,可以看到Master節點相關信息:

  

三、爲Jenkins添加Slave Node                                                                                                                                 

在Jenkins界面選擇“Manage Jenkins”->“Manage Nodes and Clouds”->“New Node

(1)配置Node Name

(2)配置Agent類型:選擇永久模式(Permanent Agent)。更多Agent種類請安裝類插件後可見。

(3)接下來配置Agent信息

 

Name:Slave機器的名字

Description:描述 ,不重要 隨意填

of excutors:允許在這個節點上併發執行任務的數量,即同時可以下發多少個Job到Slave上執行,一般設置爲 cpu 支持的線程數。[注:Master Node也可以通過此參數配置Master是否也執行構建任務、還是僅作爲Jenkins調度節點]

Remote root directory:用來放工程的文件夾,jenkins master上設置的下載的代碼會放到這個工作目錄下。

Lables:標籤,用於實現後續Job調度策略,根據Jobs配置的Label選擇Salve Node

Usage:支持兩種模式“Use this Node as much as possible”、“Only build Jobs with Label expressiong matching this Node”。選擇“Only build Jobs with Label     expressiong matching this Node”,

Launch method:這裏以選擇JNLP連接方式爲例,如下:(也可選擇Launch agent by connecting it to the master)

(1)對於老版本Jenkins,選擇爲TCP port for JNLP agents jenkins

(2)對於新版本Jenkins,選擇jave web start

注意:使用JNLP方式,需要在Manage Jenkins->Configure Gloabl Security界面配置:勾選“隨機選取”、勾選“Java Web Start Ageng Protocol/4”(有的版本是“Inbound TCP Agent Protocol/4”)、Enable Agent配置爲Enable

更多Launch Method種類請在Manage Jenkins->Manage Plugins->Available界面安裝(圖片)類插件後可見:

 

添加完畢後,在Jenkins主界面,可以看到新添加的Slave Node,但是紅叉表示此時的Slave並未與Master建立起聯繫。節點的“of excutors”通道數可以在此界面上看到:  

接下來進一步做Slave Node配置。

1、Slave Node節點爲Windows系統

登錄Slave Node主機,瀏覽器中通過Jenkins master節點的URI登錄系統,在Manage Jenkins->Manage Nodes and Clouds頁面點擊剛新建的節點,進入如下界面:

方式一:點擊上圖中的 “Launch” 按鈕,下載 Slave-agent.jnlp 文件到本地,以管理員的權限在命令行執行 Slave-agent.jnlp,最終會彈出一個小窗口,提示Connect,表示Slave Node 和Master Node連接成功。

如果希望把 Slave-agent .jnlp安裝成 Windows Service,以後 Slave Node重新啓動就能自動連接 master。在彈出一個小窗口的 File 菜單中點擊 “Install as a service”,完成安裝後上面的小程序會自動關閉,一個命令爲jenkinsagent的 Windows服務被創建。

方式二:採用命令行方式。下載agent.jar文件到本地,以管理員的權限在命令行執行截圖中的命令。(其中Localhost:8080替換爲Jenkins的Master的URI)

如果希望本命令在Slave Node重啓時自動運行,可以把如上命令保存爲bat文件,在Window系統下設置開始時執行此bat文件。

2、Slave Node節點爲Linux系統
類同Windows系統的Slave Node節點。只是啓動命令方式有差異。

把agent.jar保存到/home/Jenkins,運行sudo java -jar agent.jar....,注意sudo採用管理員方式運行(否則提示Exception in thread "main" java.nio.file.AccessDeniedException:/opt/jenkins錯誤)。


四、創建任務,爲任務指定Node調度策略                                                                                                                 
(1)Jenkins首頁,New View創建一個自己視圖。

(2)選擇剛創建的視圖,進入My View頁面,New Job創建一個任務。

  (3)創建Job的頁面,“General”下勾選“Restric where this project can be run”,填寫Label Expression。

Jenkins通過節點的label標籤來執行Jobs的Slave Node,一個標籤可以關聯多臺不同命名的slave機器。


五、Jenkins的Master和Slave通信方式                                                                                                                             
常用的Master和Slave節點連接的方式是ssh或JNLP。

(1)ssh:對於Slave Node是linux系統,最方便的就是通過ssh啓動jenkins節點,但這個的前提是Master和Slave之前能進行ssh連接。

(2)jnlp:jnlp連接有個好處就是不需Master和Slave之間能夠ssh連接,只需能ping即可。Slave Node是windows的話,這個方式十分實用,因爲有時候一些權限或者防火牆的原因,導致Master和Slave不能夠ssh連接;還有一些未知的原因導致無法ssh到Slave Node。

如章節三所言,也可以安裝Jenkins Plugins,支持更廣泛的Slave Agent類型和連接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章