快速搭建Jenkins集群

關於Jenkins集群

在Jenkins上同時執行多個任務時,單機性能可能達到瓶頸,使用Jenkins集群可以有效的解決此問題,讓多台機器同時處理這些任務可以將壓力分散,對單機版Jenkins的單點故障的隱患也有分散作用,今天就來實戰快速搭建Jenkins集群,Jenkins版本是2.190.2;

如何做到快速搭建集群

通過Docker可以省去大部分準備工作,您只需在Linux電腦上安裝docker,在輔以少量命令和操作即可完成集群搭建;

環境信息

本次實戰的環境一共要用三台電腦,它們的設置都是一樣的,如下:

  1. 操作系統:CentOS Linux release 7.6.1810
  2. 防火牆關閉
  3. docker:1.13.1

三台電腦的信息如下:
| 主機名 | IP地址 | 作用 |
|–|–|–|
| master | 192.168.133.131 | Jenkins集群的master節點,提供web服務 |
| agent1 | 192.168.133.132 | Jenkins集群的一號工作接節點,標籤是maven |
| agent2 | 192.168.133.133 | Jenkins集群的二號工作接節點,標籤是gradle |

建議agent2節點的內存大於4G,因為下一篇的實戰操作會用agent2編譯構建spring-framework,對內存的需求略大;

準備工作

  1. 後面的所有操作都是root賬號;
  2. 在每台電腦上創建文件夾/usr/local/jenkins

    創建Jenkins的master

  3. 登錄master機器,執行以下命令:
docker run \
  -u root \
  -idt \
  --name master \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /usr/local/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean:1.19.0
  1. 執行docker logs master,會在控制台显示jenkins的登錄秘鑰,如下圖紅框所示:
  2. 瀏覽器輸入地址: ,显示Jenkins登錄頁面,如下圖所示,在紅框位置輸入剛才複製的登錄秘鑰即可登錄:
  3. 選擇安裝推薦的插件
  4. 靜候插件在線安裝完成:
  5. 接下來是創建管理員和使用實例url的操作,這裏就不多說了,您按實際情況自行斟酌;

    至此,Jenkins的master已經搭建好,接下來將agent1和agent2作為工作節點加入集群;

    加入agent1

  6. 在Jenkins網頁上新增節點,操作如下圖,先進入節點管理頁面:
  7. 如下圖,新增一個節點,名為agent1
  8. 接下來的節點詳情信息如下圖,注意四個紅框中的內容要和圖中保持一致:
  9. 保存成功後會显示機器列表,如下圖,圖標上的紅叉表示機器不在線(此時agent1還沒有接入),點擊紅框:
  10. 如下圖所示,紅框中的命令就是agent1的啟動命令,執行該命令的機器會以agent1的身份加入集群:
  11. 注意上圖紅框中的agent.jar是個名為agent.jar的文件的下載鏈接,將此文件下載到agent1電腦的/usr/local/jenkins目錄下;
  12. ssh登錄agent1電腦,執行以下命令,即可將agent1加入Jenkins集群:
docker run \
  -u root \
  -idt \
  --name agent \
  -v /usr/local/jenkins:/usr/local/jenkins \
  bolingcavalry/openjdk-with-sshpass:8u232 \
  java -jar /usr/local/jenkins/agent.jar \
  -jnlpUrl http://192.168.133.131:8080/computer/agent1/slave-agent.jnlp \
  -secret 44c3e8d1531754b8655b53294bbde6dd99b3aaa91a250092d0d3425534ae1058 \
  -workDir "/usr/local/jenkins"

上述命令中的後半部分,即java -jar ……就是前面圖片紅框中的agent1啟動命令,唯一要改變的是將agent.jar改成絕對路徑/usr/local/jenkins/agent.jar

  1. 上述命令的鏡像是bolingcavalry/openjdk-with-sshpass:8u232,其Dockerfile內容如下,可見非常簡單,就是OpenJDK鏡像裏面安裝了sshpass,這樣的容器可以在執行ssh命令時帶上遠程機器的密碼,而不用等待用戶輸入密碼,這樣便於shell腳本執行ssh命令:
FROM openjdk:8u232

ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --assume-yes sshpass
  1. 去Jenkins的網頁上查看節點列表,如下圖,可見agent1已經成功加入:

    加入agent2

    agent2加入集群的方式和agent1大部分是一樣的,只有以下兩點要注意:

  2. 在Jenkins頁面上創建節點,名稱是agent2
  3. agent2的標籤是gradle,如下圖紅框所示:
  4. 此時agent2也加入成功:

    至此,Jenkins集群搭建完成,這兩個節點帶有不同的標籤,下一篇文章中,我們在這個集群環境創建pipeline任務,並通過標籤被分配到不同的節點上,實現多節點并行執行;

    歡迎關注公眾號:程序員欣宸

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!