每次看着Jenkins任务排成长队,就像在热门奶茶店前苦等,你是否想过:要是能多开几个窗口同时点单该多好?
01 告别拥堵:Jenkins单机构建的痛点
每次手动打包部署到深夜,你是否也曾仰望星空思考:为啥不让Jenkins这个贴心小助手干得更聪明点?
想象一下,你刚刚把代码推送到Git仓库,Jenkins就像被按下了启动按钮,立刻开始工作。拉取最新代码、解决依赖关系、运行测试、打包部署—一气呵成。
而你,只需要悠闲地品着咖啡,等待构建结果的通知。
但问题来了,当团队扩大、项目增多,你会发现Jenkins服务器开始气喘吁吁。
一个接一个的构建任务排成长队,像极了早高峰的地铁站。iOS构建要等Android构建完成,后端服务构建又堵住了前端部署……
这种场景下,单机Jenkins已经成为了持续集成流程的瓶颈。
我经历过最夸张的一次,是一个微服务项目需要依次构建12个服务,每个服务平均构建时间8分钟,整整排队等了快两个小时!
正是这种痛苦,让我决心探索Jenkins的分布式构建能力,也就是主从节点架构。
“Jenkins的分布式构建可以让多台机器一起分担构建任务,大大缩短等待时间。”
02 Jenkins主从架构:让构建任务“多条腿走路”
什么是Jenkins的分布式构建?简单来说,就是让一个Jenkins主节点指挥多个从节点同时执行构建任务。
想象一下,Jenkins主节点就像一位乐团指挥,而从节点就是不同的乐手。指挥负责分配乐谱(构建任务),每位乐手同时演奏自己的部分(执行构建),最终合奏出美妙的交响乐(完成持续集成)。
在这种架构中,标准的Jenkins安装包括Jenkins主节点。主节点将管理我们构建系统的所有任务。
主从架构的核心组件:
- 主节点(Master):负责调度作业、分配从节点并发送构建到从节点执行。它还将跟踪从节点的状态(离线或在线),从从节点检索构建结果,并在终端输出中显示它们。
- 从节点(Slave/Agent):在从节点机器上,我们会安装一个名为代理的运行时程序。这个代理有能力在专用执行器中运行Jenkins的任务或主任务。
- 执行器(Executor):节点上真正执行构建的线程/进程,一个节点可配置多个执行器。
- 标签(Label):对节点按环境或能力分组(如linux、jdk11、docker),用于精准投递任务。
主从通信机制:
主节点和Jenkins从节点之间的通信是双向的,并通过TCP/IP进行。
启动从节点有两种主要方式:通过SSH启动或通过JNLP(Java Web Start) 连接。
这种分布式架构的优势显而易见:我们可以有任意数量的代理节点或从节点,配置主节点来决定哪个任务或作业应该在哪个代理上运行。
03 步步为营:搭建你的第一个Jenkins从节点
理论说够了,现在让我们动手搭建一个Jenkins从节点!这个过程就像是给Jenkins主节点找帮手,让它从光杆司令变成拥有精兵强将的指挥官。
环境准备阶段
在开始之前,请确保我们为添加从节点准备了所有必要的前提条件:
- Jenkins服务器已经启动并运行,可以使用
- 另一台服务器用于从节点配置
- Jenkins服务器和从服务器都在同一网络上连接
- 在所有节点安装Java(推荐OpenJDK 11):
sudo apt-get update && sudo apt-get install -y openjdk-11-jdk
从节点要求:
- 尽量选择干净的节点
- 同样需要支持Java构建相关的环境
- 主从节点间需要支持免密通信
- 不需要在从节点手动安装jenkins,由master节点自动进行控制
- 需要有
maven jdk git环境,用于后续构建
主从节点免密通信配置
做节点主从,我们就需要给参与构建的slave节点和master进行免密通信的配置,方便构建过程中的调度通信。
目标:实现master的jenkins用户—》免密连接slave的jenkins用户
在master机器上使用jenkins用户生成秘钥:
$ su jenkins
# 进入当前目录下,查看是否已经有.ssh目录以及目录下的公私钥
$ cd ~
$ ls -a
# 如果不存在,则执行如下命令进行生成
$ ssh-keygen -t rsa
# 按3次回车
运行后会在当前用户的根目

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



