快速搭建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任务,并经过标签被分配到不一样的节点上,实现多节点并行执行;

欢迎关注公众号:程序员欣宸

相关文章
相关标签/搜索