如何在Ubuntu上实现Jenkins分布式部署
导读:在 Ubuntu 上实现 Jenkins 分布式部署 一 架构与准备 架构说明:使用 Master–Agent 模式,Master 负责调度与界面展示,Agent 负责实际构建;在 Ubuntu 22.04/20.04 上推荐使用 Ope...
在 Ubuntu 上实现 Jenkins 分布式部署
一 架构与准备
- 架构说明:使用 Master–Agent 模式,Master 负责调度与界面展示,Agent 负责实际构建;在 Ubuntu 22.04/20.04 上推荐使用 OpenJDK 11 作为运行时。为提升并行度与隔离性,可为不同技术栈准备多台 Agent(如 Maven、Node.js、Docker 等)。
- 网络与端口:确保 Master 8080(Web)与 50000(JNLP/代理通信)对 Agent 可达;如使用云主机,请放通安全组/防火墙对应端口。
- 时间同步:所有节点启用 NTP 或
systemd-timesyncd保持时间一致,避免证书/通信异常。 - 基础软件:安装 OpenJDK 11、Git、构建工具(如 Maven/Gradle)、以及 Docker(如需在 Agent 上构建镜像)。
二 安装与初始化 Master
- 安装 Java 与 Jenkins(Ubuntu 官方仓库示例):
sudo apt update sudo apt install -y openjdk-11-jdk wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/jenkins-keyring.gpg > /dev/null echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.gpg] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null sudo apt update sudo apt install -y jenkins sudo systemctl enable --now jenkins - 初始化:获取初始管理员密码
sudo cat /var/lib/jenkins/secrets/initialadminpassword,完成安装向导;安装常用插件(如 Pipeline、Git、Docker、Kubernetes CLI、Credentials Binding)。
三 添加与管理 Agent
- 方式一 JNLP 启动(通用、简单)
- 在 Master:Manage Jenkins → Manage Nodes and Clouds → New Node,填写节点名,选择 Permanent Agent,设置 远程工作目录(如 /var/lib/jenkins)、标签(如 linux、maven)、执行器数量(并发构建数)。保存后页面会显示 agent.jar 下载链接与 启动命令(包含 -jnlpUrl 与 -secret)。
- 在 Agent:安装 OpenJDK 11,创建工作目录,下载
agent.jar并执行页面给出的命令,例如:mkdir -p /var/lib/jenkins cd /var/lib/jenkins wget http://< MASTER> :8080/jnlpJars/agent.jar java -jar agent.jar -jnlpUrl http://< MASTER> :8080/computer/< AGENT> /jenkins-agent.jnlp -secret < SECRET> -workDir "/var/lib/jenkins" - 验证:Master 节点列表显示 在线;Agent 上可见
java -jar remoting.jar进程。
- 方式二 SSH 启动(便于系统化管理)
- 在 Master 创建 SSH 凭据(用户名/私钥或密码)。
- 新建节点时选择 Launch agents via SSH,填写 Host、Credentials,设置 工作目录与 标签;保存后自动连接。
- 任务路由与标签:在 Job 配置中勾选 Restrict where this project can be run,按 标签或指定 节点名运行;也可安装 Node and Label parameter 插件在构建时选择节点。
四 验证与常见问题
- 验证要点
- Master 节点列表显示 Agent 在线;构建日志显示 Running on ;Agent 上
ps -ef | grep remoting.jar存在对应进程。
- Master 节点列表显示 Agent 在线;构建日志显示 Running on ;Agent 上
- 常见问题与处理
- Java 不匹配或不可用:确保 Agent 安装与 Master 兼容的 JDK(推荐 OpenJDK 11),
java -version正常;必要时在 Job 的 工具位置显式指定 JDK 路径。 - 端口不通:确认 8080/50000 对 Agent 开放,云上需放通安全组;如使用 JNLP,确保 Master URL 与 Agent 启动命令一致。
- 路径不一致导致构建失败:Agent 上创建与脚本一致的工具/工作目录(如 /usr/bin/git、/opt/maven),或在 Global Tool Configuration 中统一路径;必要时在 Agent 工作目录建立工具软链(如将
/usr/bin/java链接到 Agent 工作目录下的 jdk/bin/java)。 - 时间漂移:启用 NTP 同步,避免因时间偏差导致认证或日志异常。
- Java 不匹配或不可用:确保 Agent 安装与 Master 兼容的 JDK(推荐 OpenJDK 11),
五 进阶与扩展
- 容器化与弹性伸缩:使用 Docker 运行 Jenkins Master/Agent,通过 Kubernetes 插件在 K8s 中按需动态创建 Pod Agent,实现自动扩缩与资源隔离(适合高峰并发与多语言环境)。
- 高可用与负载均衡:部署 多个 Master 前置 Nginx/HAProxy 做 VIP/域名 负载均衡,配合共享存储(如 NFS)与定期备份,降低单点故障风险;结合 **监控(Prometheus/Grafana)**与 **日志(ELK)**提升可观测性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上实现Jenkins分布式部署
本文地址: https://pptw.com/jishu/764181.html
