温馨提示×

Jenkins在Debian上的分布式部署如何实现

小樊
33
2026-01-01 13:29:08
栏目: 智能运维

在 Debian 上实现 Jenkins 分布式部署

架构与准备

  • 架构说明:采用 Master/Agent(主/从) 模式,Master 负责任务调度与 UI,Agent 负责实际构建;可按操作系统、工具链或用途为 Agent 打 标签(Labels),在 Job 中通过标签选择节点,实现按环境与负载分发。
  • 资源建议:每个节点至少 4GB 内存(生产建议 8GB+)、10GB+ 磁盘;所有节点安装 Java 11 或 17(推荐 OpenJDK)。
  • 网络与端口:Master 默认 8080(Web 访问),50000(JNLP/agent 通信);确保节点间 TCP 50000 可达,防火墙与安全组放行;如需浏览器直连 Agent,开启 JNLP4/WebSocket 支持。

安装与初始化 Master

  • 安装 Java:
    • sudo apt update && sudo apt install -y openjdk-11-jdk(或 openjdk-17-jdk
    • java -version
  • 添加 Jenkins APT 源(Debian 12 推荐签名方式):
    • curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
    • echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
    • sudo apt-get update && sudo apt-get install -y jenkins
  • 启动与开机自启:
    • sudo systemctl enable --now jenkins
    • sudo systemctl status jenkins
  • 解锁与初始化:
    • 查看初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    • 访问 http://:8080,完成安装向导与插件选择。

添加与管理 Agent 节点

  • 方式一(推荐 Linux):通过 SSH 启动代理
    • 在 Master:进入 Manage Jenkins → Manage Nodes and Clouds → New Node,命名节点,设置 # of executors(建议与 CPU 核数相当)、Remote root directory(如 /var/lib/jenkins)、Labels(如 linux java11 maven)、Launch method = Launch agents via SSH,填写 HostCredentials(建议使用 SSH 私钥),保存后上线。
    • 在 Agent:确保 sshd 运行、创建 jenkins 用户并设置 SSH 免密登录(Master 可 ssh jenkins@agent-ip 验证)。
  • 方式二:通过 命令行/JNLP 启动代理
    • 在 Master 节点页面点击 agent.jar 下载,复制 “Run from agent command line” 命令;在 Agent 上执行该命令(或先下载 agent.jar 后按提示运行),连接成功后节点显示 在线
    • 若浏览器直连失败,可在 Manage Jenkins → Configure Global Security 启用 JNLP4/WebSocket 相关选项。
  • 方式三(容器化):使用 Docker 运行 Agent
    • 在 Master 已映射 50000:50000 的前提下,于 Agent 上运行示例:
      • docker run -u root -d --name agent
        -e JENKINS_URL=http://:8080
        -v /usr/local/jenkins:/var/jenkins_home
        jenkins/agent:latest
        -url http://:8080
        -secret
        -name
        -workDir /var/jenkins_home
    • 其中 来自节点页面的连接指令。

任务分发与工具配置

  • 标签调度:在 Job 的 Restrict where this project can be run 中填写目标 Label(如 linux && maven),或在参数化构建中使用 Node and Label parameter plugin 选择节点,实现按环境/资源精准分发。
  • 工具链路径:在节点配置 Node Properties → Tool Locations 指定 JDK、Git、Maven、Docker 等在 Agent 上的实际路径,避免 Job 沿用 Master 的环境变量导致找不到命令。
  • 并发与用法:
    • # of executors:控制并发构建数(通常 ≈ CPU 核数)。
    • Usage:选择 Use this node as much as possible(默认)或 Only build jobs with label expressions(仅运行绑定标签的任务)。

安全与运维要点

  • 安全加固:禁用 匿名访问,使用 RBAC(基于矩阵或角色)分配权限;SSH 密钥替代口令;仅开放 8080/50000 等必要端口;Master 仅做调度,尽量不在 Master 上执行重构建。
  • 高可用与扩展:Master 故障不影响已运行 Agent,但 Web 控制台 会不可用;可按需横向扩展 Agent 数量与标签,结合 Docker/Kubernetes 实现弹性伸缩与一致性环境。

0