快速搭建Jenkins集羣

關於Jenkins集羣

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

如何作到快速搭建集羣

經過Docker能夠省去大部分準備工做,您只需在Linux電腦上安裝docker,在輔以少許命令和操做便可完成集羣搭建;程序員

環境信息

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

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

三臺電腦的信息以下:spring

主機名 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,對內存的需求略大;docker

準備工做

  1. 後面的全部操做都是root帳號;
  2. 在每臺電腦上建立文件夾/usr/local/jenkins

建立Jenkins的master

  1. 登陸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. 瀏覽器輸入地址:http://192.168.133.131:8080 ,顯示Jenkins登陸頁面,以下圖所示,在紅框位置輸入剛纔複製的登陸祕鑰便可登陸:
    在這裏插入圖片描述
  3. 選擇安裝推薦的插件:
    在這裏插入圖片描述
  4. 靜候插件在線安裝完成:
    在這裏插入圖片描述
  5. 接下來是建立管理員和使用實例url的操做,這裏就很少說了,您按實際狀況自行斟酌;

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

加入agent1

  1. 在Jenkins網頁上新增節點,操做以下圖,先進入節點管理頁面:
    在這裏插入圖片描述
  2. 以下圖,新增一個節點,名爲agent1:
    在這裏插入圖片描述
  3. 接下來的節點詳情信息以下圖,注意四個紅框中的內容要和圖中保持一致:
    在這裏插入圖片描述
  4. 保存成功後會顯示機器列表,以下圖,圖標上的紅叉表示機器不在線(此時agent1尚未接入),點擊紅框:
    在這裏插入圖片描述
  5. 以下圖所示,紅框中的命令就是agent1的啓動命令,執行該命令的機器會以agent1的身份加入集羣:
    在這裏插入圖片描述
  6. 注意上圖紅框中的agent.jar是個名爲agent.jar的文件的下載連接,將此文件下載到agent1電腦的/usr/local/jenkins目錄下;
  7. 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.jarshell

  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大部分是同樣的,只有如下兩點要注意:瀏覽器

  1. 在Jenkins頁面上建立節點,名稱是agent2
  2. agent2的標籤是gradle,以下圖紅框所示:
    在這裏插入圖片描述
  3. 此時agent2也加入成功:
    在這裏插入圖片描述


    至此,Jenkins集羣搭建完成,這兩個節點帶有不一樣的標籤,下一篇文章《Jenkins集羣下的pipeline實戰》中,咱們在這個集羣環境建立pipeline任務,並經過標籤被分配到不一樣的節點上,實現多節點並行執行;

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

相關文章
相關標籤/搜索