debian

Debian Jenkins部署如何实现高可用性

小樊
34
2025-11-27 05:20:49
栏目: 智能运维

Debian 上实现 Jenkins 高可用的推荐架构


实施步骤

  1. 准备共享存储与目录

    • 部署 NFS/CephFS/Longhorn 等共享卷,导出目录如 /srv/jenkins
    • 在每台 Master 上挂载到 /var/lib/jenkins(或自定义 $JENKINS_HOME),权限与属主保持一致(如 jenkins:jenkins)。
    • 首次初始化建议只在一台 Master 上完成(解锁、插件安装、系统配置),完成后确保其他 Master 以只读方式挂载或等待首次启动完成后再切换为读写,避免 credentials.xml、jobs/ 等元数据并发写冲突。
  2. 安装与初始化 Jenkins(每台 Master)

    • 安装 OpenJDK 11Jenkins(Debian 稳定源):
      sudo apt update && sudo apt install -y openjdk-11-jdk jenkins
    • 首次管理员密码路径:/var/lib/jenkins/secrets/initialAdminPassword
    • 建议将 JENKINS_HOME 明确配置到共享目录(如 /etc/default/jenkins 或 systemd 环境变量),并确保目录权限正确。
  3. 配置外部负载均衡与健康检查

    • 安装 HAProxy(或 Nginx):sudo apt install -y haproxy
    • HAProxy 示例(/etc/haproxy/haproxy.cfg):
      frontend jenkins_http
      bind *:8080
      mode http
      default_backend jenkins_back
      backend jenkins_back
      balance roundrobin
      option httpchk GET /login
      server master1 10.0.0.11:8080 check inter 5s fall 3 rise 2
      server master2 10.0.0.12:8080 check inter 5s fall 3 rise 2
    • 如使用 JNLP 固定端口(便于 Agent 连接),在“全局安全配置”开启 TCP 端口 for JNLP agents(默认 50000),并在 HAProxy 增加对应端口转发与健康检查。
  4. 扩展构建能力(Agent/从节点)

    • Manage Jenkins → Manage Nodes and Clouds → New Node 添加 Agent
    • 推荐通过 SSH 启动 Agent(在从节点安装 Java,Master 配置 SSH 凭据),或使用 Launch agent via Java Web Start/JNLP 方式。
    • 为不同平台/用途打标签(如 linux、docker、gpu),在 Job 中通过 Label 约束运行节点,实现弹性伸缩与资源隔离。
  5. 验证与演练

    • 访问 VIP:8080 登录,确认系统配置、插件、凭据在各 Master 上一致。
    • 触发构建,确认任务在 Agent 上执行且日志、工作空间一致。
    • 进行 滚动升级/故障切换演练:逐台重启 Master、断开某台网络、停止 HAProxy 后端,验证服务不中断与自动恢复。

关键配置与最佳实践


常见陷阱与排查要点

0
看了该问题的人还看了