写点什么

快速搭建 Jenkins 集群

作者:程序员欣宸
  • 2022-11-09
    广东
  • 本文字数:1664 字

    阅读完需:约 5 分钟

快速搭建Jenkins集群

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

关于 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


  • 三台电脑的信息如下:


  • 建议 agent2 节点的内存大于 4G,因为下一篇的实战操作会用 agent2 编译构建 spring-framework,对内存的需求略大;

准备工作

  1. 后面的所有操作都是 root 账号;

  2. 在每台电脑上创建文件夹 /usr/local/jenkins

创建 Jenkins 的 master

  • 登录 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
复制代码


  • 执行 docker logs master ,会在控制台显示 jenkins 的登录秘钥,如下图红框所示:

  • 浏览器输入地址:http://192.168.133.131:8080 ,显示 Jenkins 登录页面,如下图所示,在红框位置输入刚才复制的登录秘钥即可登录:

  • 选择 安装推荐的插件

  • 静候插件在线安装完成:

  • 接下来是创建管理员和使用实例 url 的操作,这里就不多说了,您按实际情况自行斟酌;

  • 至此,Jenkins 的 master 已经搭建好,接下来将 agent1 和 agent2 作为工作节点加入集群;

加入 agent1

  • 在 Jenkins 网页上新增节点,操作如下图,先进入节点管理页面:

  • 如下图,新增一个节点,名为 agent1

  • 接下来的节点详情信息如下图,注意四个红框中的内容要和图中保持一致:

  • 保存成功后会显示机器列表,如下图,图标上的红叉表示机器不在线(此时 agent1 还没有接入),点击红框:

  • 如下图所示,红框中的命令就是 agent1 的启动命令,执行该命令的机器会以 agent1 的身份加入集群:

  • 注意上图红框中的 agent.jar 是个名为 agent.jar 的文件的下载链接,将此文件下载到 agent1 电脑的 /usr/local/jenkins 目录下;

  • 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

  • 上述命令的镜像是 bolingcavalry/openjdk-with-sshpass:8u232 ,其 Dockerfile 内容如下,可见非常简单,就是 OpenJDK 镜像里面安装了 sshpass,这样的容器可以在执行 ssh 命令时带上远程机器的密码,而不用等待用户输入密码,这样便于 shell 脚本执行 ssh 命令:


FROM openjdk:8u232
ARG DEBIAN_FRONTEND=noninteractiveRUN apt-get update && apt-get install --assume-yes sshpass
复制代码


  • 去 Jenkins 的网页上查看节点列表,如下图,可见 agent1 已经成功加入:

加入 agent2

  • agent2 加入集群的方式和 agent1 大部分是一样的,只有以下两点要注意:

  • 在 Jenkins 页面上创建节点,名称是 agent2

  • agent2 的标签是 gradle ,如下图红框所示:

  • 此时 agent2 也加入成功:

  • 至此,Jenkins 集群搭建完成,这两个节点带有不同的标签,下一篇文章《Jenkins集群下的pipeline实战》中,我们在这个集群环境创建 pipeline 任务,并通过标签被分配到不同的节点上,实现多节点并行执行;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 2022-11-09阅读数: 60
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018-04-19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
快速搭建Jenkins集群_DevOps_程序员欣宸_InfoQ写作社区