在Jenkins上同時執行多個任務時,單機性能可能達到瓶頸,使用Jenkins集羣能夠有效的解決此問題,讓多臺機器同時處理這些任務能夠將壓力分散,對單機版Jenkins的單點故障的隱患也有分散做用,今天就來實戰快速搭建Jenkins集羣,Jenkins版本是2.190.2;java
經過Docker能夠省去大部分準備工做,您只需在Linux電腦上安裝docker,在輔以少許命令和操做便可完成集羣搭建;程序員
本次實戰的環境一共要用三臺電腦,它們的設置都是同樣的,以下:web
三臺電腦的信息以下:
| 主機名 | IP地址 | 做用 |
|--|--|--|
| master | 192.168.133.131 | Jenkins集羣的master節點,提供web服務 |
| agent1 | 192.168.133.132 | Jenkins集羣的一號工做接節點,標籤是maven |
| agent2 | 192.168.133.133 | Jenkins集羣的二號工做接節點,標籤是gradle |spring
建議agent2節點的內存大於4G,由於下一篇的實戰操做會用agent2編譯構建spring-framework,對內存的需求略大;docker
在每臺電腦上建立文件夾/usr/local/jenkinsshell
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
接下來是建立管理員和使用實例url的操做,這裏就很少說了,您按實際狀況自行斟酌;
至此,Jenkins的master已經搭建好,接下來將agent1和agent2做爲工做節點加入集羣;瀏覽器
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.jarssh
FROM openjdk:8u232 ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install --assume-yes sshpass
去Jenkins的網頁上查看節點列表,以下圖,可見agent1已經成功加入:
maven
此時agent2也加入成功:
至此,Jenkins集羣搭建完成,這兩個節點帶有不一樣的標籤,下一篇文章《Jenkins集羣下的pipeline實戰》中,咱們在這個集羣環境建立pipeline任務,並經過標籤被分配到不一樣的節點上,實現多節點並行執行;性能