jenkins 通过 master-agent 架构实现负载均衡,master 负责调度与编排,agent 承担构建任务;合理配置节点标签、执行器数量、ssh 启动及健康探测机制,结合 kubernetes/docker 插件可实现弹性伸缩与精准分发。

直接用 Jenkins 自带的 Master-Slave(现称 Agent)架构就能实现大规模并发部署任务的负载均衡,核心不是“手动分发”,而是让 Master 智能调度空闲、匹配标签、健康可用的 Agent 执行任务。关键在合理配置节点、标签策略和资源约束,而非依赖外部 LB 处理构建请求。
明确 Master 和 Agent 的分工
Master 只负责任务编排、UI 展示、插件管理与调度决策;所有耗 CPU、内存、磁盘 I/O 的实际构建、打包、部署操作,全部交给 Agent 完成。这样单个 Master 不会因构建堆积而卡死,横向加 Agent 就能线性提升并发能力。
- Agent 可部署在物理机、虚拟机、Docker 容器或 Kubernetes Pod 中,操作系统可异构(如 Linux Agent 跑 Java 构建,Windows Agent 跑 .NET 发布)
- 每个 Agent 配置独立的 执行器数量(Number of executors),代表它能同时跑几个任务。建议设为该机器 CPU 核心数 ×1.5(例如 8 核设为 12),避免过度争抢资源
- Agent 启动方式推荐使用 SSH 连接(无需在 Agent 本机安装 Jenkins,只需 JDK + SSH 服务 + 工作目录权限),安全且易维护
用标签(Labels)精准控制任务分发
标签是实现“按需负载均衡”的核心机制。不靠轮询,而靠语义化匹配——比如把部署到测试环境的任务固定派给带 env-test 标签的 Agent,把需要 Node.js 18 的任务只发给标有 node18 的节点。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 创建 Agent 时,在 Labels 字段填入多个空格分隔的关键词,例如:
linux docker maven3.9 env-prod - 在 Job 配置中勾选 “限制项目的运行节点”,在 标签表达式 中写:
linux && maven3.9(支持 AND/OR/NOT 逻辑) - 也可用 Pipeline 脚本显式指定:
agent { label 'linux && docker' },更灵活可控
保障 Agent 健康与自动伸缩
负载均衡失效常因 Agent 离线、卡死或资源耗尽。必须配置主动探测与弹性响应机制:
- 在 Agent 配置中启用 “自定义工作目录” 并设置足够空间(如
/data/jenkins-agent/workspace),避免根分区爆满导致构建失败 - 勾选 “使用此节点进行构建” 下的 “仅当节点空闲时才触发构建”,防止高负载下强行排队拖慢整体吞吐
- 结合 Kubernetes 插件或 Docker 插件,让 Master 在任务激增时自动拉起临时 Agent Pod 或容器,任务结束即销毁,真正实现按需伸缩
监控与调优真实负载表现
光配好不等于负载均衡生效。要验证是否达到预期,并持续优化:
- 访问
/computer/页面,实时查看各 Agent 的在线状态、当前执行任务数、空闲执行器数、最近离线时间 - 观察构建队列:若长期存在“等待分配节点”状态,说明匹配标签的 Agent 不足或全部繁忙,需扩容或调整标签策略
- 在系统日志或 Agent 控制台输出中检查是否有
java.lang.OutOfMemoryError或 SSH 连接超时,及时调大 JVM 内存或优化构建脚本










