Jenkins篇:Jenkins 集群搭建(主从)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins篇:Jenkins 集群搭建(主从)相关的知识,希望对你有一定的参考价值。
参考技术A 由于目前公司即将统一开发网段,部分团队即将启动迁10开发网段,目前10网段的Jenkins使用的人越来越多,为提高多项目的构建速度,需搭建主从集群,一台作为master,一台作为salve,master会将构建任务分配到各个从节点进行并发构建。从而提高速度,下面记录一下主从集群的搭建过程系统环境:Centos 7.2
Jenkins版本:Jenkins 2.113长期支持版
两台服务器,一台作为master(10.137.128.36) 一台作为slave(10.137.129.100)
因我们的开发项目大多数都是maven项目,我们需要子从节点安装JAVA环境。(因100服务器上已安装,此步骤忽略)
另外,Jenkins安装在master上即可,从节点无需安装。(因36服务器上已安装Jenkins,此步骤忽略)
再者,需确保master和slave之间能相互通信,在master服务器终端执行以下命令:
打开Jenkins-->系统管理-->管理节点→新建节点,按以下4步操作:
按图中的顺序,输入节点名称,选择固定节点(图中的汉化包翻译成了固定代理),然后点击OK按钮
效果如下:
Credentials设置:见下面图片中的描述
以上设置完成后,点击添加,slave节点都已经添加好了
由于上面我们使用了Manually Trusted Key Verification Strategy策略,所以,这里我们需要手动验证一下从节点的身份。
点击我们刚刚新建的节点,点击Trust SSH Host Key,点击是,然后点击launch agent,配置完成效果如下:
选择具体的构建任务,如下设置:
今天测试了一下,salve-1节点启动后,构建任务默认会切换到这个节点,手动将节点断开居然会重启,刷新一下有事连接状态,有人知道为啥不???在线求教
快速搭建Jenkins集群
欢迎访问我的GitHub
关于Jenkins集群
- 在Jenkins上同时执行多个任务时,单机性能可能达到瓶颈,使用Jenkins集群可以有效的解决此问题,让多台机器同时处理这些任务可以将压力分散,对单机版Jenkins的单点故障的隐患也有分散作用,今天就来实战快速搭建Jenkins集群,Jenkins版本是2.190.2;
如何做到快速搭建集群
- 通过Docker可以省去大部分准备工作,您只需在Linux电脑上安装docker,在辅以少量命令和操作即可完成集群搭建;
环境信息
- 本次实战的环境一共要用三台电脑,它们的设置都是一样的,如下:
- 操作系统:CentOS Linux release 7.6.1810
- 防火墙关闭
- 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,对内存的需求略大;
准备工作
- 后面的所有操作都是root账号;
- 在每台电脑上创建文件夹 /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的操作,这里就不多说了,您按实际情况自行斟酌;<br> 至此,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=noninteractive
RUN apt-get update && apt-get install --assume-yes sshpass
- 去Jenkins的网页上查看节点列表,如下图,可见agent1已经成功加入:
加入agent2
- agent2加入集群的方式和agent1大部分是一样的,只有以下两点要注意:
- 在Jenkins页面上创建节点,名称是 agent2
- agent2的标签是 gradle ,如下图红框所示:
- 此时agent2也加入成功:
- 至此,Jenkins集群搭建完成,这两个节点带有不同的标签,下一篇文章《Jenkins集群下的pipeline实战》中,我们在这个集群环境创建pipeline任务,并通过标签被分配到不同的节点上,实现多节点并行执行;
欢迎关注51CTO博客:程序员欣宸
以上是关于Jenkins篇:Jenkins 集群搭建(主从)的主要内容,如果未能解决你的问题,请参考以下文章