首页主机资讯如何在centos上实现jenkins的高可用部署

如何在centos上实现jenkins的高可用部署

时间2026-01-19 17:23:04发布访客分类主机资讯浏览1172
导读:在 CentOS 上实现 Jenkins 高可用部署 一 架构选型与总体思路 开源版 Jenkins 的控制器(Controller)是有状态单体,生产上常用“多 Controller + 共享存储 + 外部负载均衡”的方式实现高可用与横...

在 CentOS 上实现 Jenkins 高可用部署

一 架构选型与总体思路

  • 开源版 Jenkins 的控制器(Controller)是有状态单体,生产上常用“多 Controller + 共享存储 + 外部负载均衡”的方式实现高可用与横向扩展。
  • 推荐架构:
    • 至少 2 台 CentOS 作为 Jenkins Controller,前置 HAProxy/Nginx 做四层/七层负载均衡与健康检查。
    • 使用 NFS 或企业级共享存储(如 CephFS、GlusterFS)共享 JENKINS_HOME,保证多 Controller 实例状态一致。
    • 构建负载由 Agent/从节点承担,Controller 专注调度与视图展示,提升稳定性与扩展性。
    • 通过 定期备份监控告警 完善可用性闭环。

二 环境与前置准备

  • 节点规划示例:
    • 10.0.0.10 controller-01(安装 Jenkins)
    • 10.0.0.11 controller-02(安装 Jenkins)
    • 10.0.0.12 nfs-server(共享存储)
    • 10.0.0.20~30 agent-01~N(构建节点)
  • 基础要求:
    • 所有节点安装 Java 11+(Jenkins 2.x 推荐),并配置 JAVA_HOME
    • 系统防火墙/SELinux 放通 8080/TCP(Web)50000/TCP(JNLP Agents) 与 NFS 相关端口(如 111/TCP/UDP、2049/TCP/UDP 等)。
    • 建议时间同步(如 chrony),避免因时间漂移导致任务/插件异常。

三 共享存储 NFS 部署与挂载

  • 在 NFS 服务器(10.0.0.12)执行:
    • 安装与启动:
      • sudo yum install -y nfs-utils rpcbind
      • sudo systemctl enable --now rpcbind & & sudo systemctl enable --now nfs-server
    • 共享目录与权限:
      • sudo mkdir -p /data/jenkins_home
      • sudo chown -R jenkins:jenkins /data/jenkins_home
      • sudo chmod 755 /data/jenkins_home
    • 配置导出(/etc/exports):
      • /data/jenkins_home 10.0.0.0/24(rw,sync,no_subtree_check,no_root_squash)
    • 使配置生效:
      • sudo exportfs -rav
      • sudo showmount -e localhost
  • 在每台 Controller(10.0.0.10/11)执行:
    • 安装客户端:sudo yum install -y nfs-utils
    • 创建本地挂载点:sudo mkdir -p /var/lib/jenkins
    • 挂载共享目录:sudo mount -t nfs 10.0.0.12:/data/jenkins_home /var/lib/jenkins
    • 开机自动挂载(/etc/fstab):
      • 10.0.0.12:/data/jenkins_home /var/lib/jenkins nfs defaults 0 0
  • 验证:在共享目录创建测试文件,确保两端可见且权限正确。

四 安装与配置 Jenkins Controller

  • 安装(两台 Controller 相同操作):
    • 添加仓库并安装:
      • sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
      • sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
      • sudo yum install -y jenkins
    • 建议以 jenkins 用户运行,并确认 /var/lib/jenkins 属主为 jenkins。
  • 关键配置(/etc/sysconfig/jenkins 或 systemd 环境):
    • 设置 JENKINS_HOME=/var/lib/jenkins
    • 设置 JENKINS_PORT=8080
    • 设置 JENKINS_ARGS=“–httpListenAddress=0.0.0.0”
    • 可选:设置 JAVA_OPTS(如堆内存):-Xms2g -Xmx4g
  • 启动与自启:
    • sudo systemctl daemon-reload
    • sudo systemctl enable --now jenkins
  • 首次访问与初始化:
    • 打开 http://< VIP|任一Controller_IP> :8080,完成解锁与插件安装。
    • 建议安装 推荐插件,并配置 全局安全(启用安全、限制匿名、配置代理端口等)。

五 负载均衡与健康检查

  • 方案 A(四层 TCP,推荐):HAProxy
    • 安装:sudo yum install -y haproxy
    • 配置示例(/etc/haproxy/haproxy.cfg):
      • frontend jenkins_http
        • bind 0.0.0.0:8080
        • mode tcp
        • default_backend jenkins_controllers
      • backend jenkins_controllers
        • mode tcp
        • balance roundrobin
        • option tcp-check
        • server controller-01 10.0.0.10:8080 check inter 2s fall 3 rise 2
        • server controller-02 10.0.0.11:8080 check inter 2s fall 3 rise 2
    • 启用:sudo systemctl enable --now haproxy
  • 方案 B(七层 HTTP):Nginx
    • 安装:sudo yum install -y nginx
    • 配置示例(/etc/nginx/conf.d/jenkins.conf):
      • upstream jenkins {
        • server 10.0.0.10:8080 max_fails=3 fail_timeout=30s;
        • server 10.0.0.11:8080 max_fails=3 fail_timeout=30s;
        • }
      • server {
        • listen 80;
        • location / {
          • proxy_pass http://jenkins;
          • proxy_set_header Host $host;
          • proxy_set_header X-Real-IP $remote_addr;
          • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          • proxy_set_header X-Forwarded-Proto $scheme;
          • }
        • }
    • 启用:sudo systemctl enable --now nginx
  • 健康检查要点:
    • 8080 做 TCP/HTTP 探活;对 50000(JNLP)按需放通与探活。
    • 建议使用 VIP/Keepalived 或云厂商 LB 作为前端入口,避免单点。

六 构建节点与高可用增强

  • 添加 Agent(在 Jenkins Web:Manage Jenkins → Manage Nodes and Clouds → New Node):
    • 名称与标签(如 linux-docker),并发构建数按 CPU/内存规划。
    • 启动方式可选:
      • Launch agent via SSH:在 Master 上配置到 Agent 的 SSH 免密,适合稳定网络与统一管控。
      • Launch agent by connecting it to the master:在 Agent 上运行 agent.jar 连接 Master 的 JNLP 50000 端口,适合跨公网/防火墙环境。
  • 典型命令(JNLP 方式):
    • 在 Agent 下载并启动:
      • wget http://< JENKINS_URL> /computer/< AGENT_NAME> /slave-agent.jnlp -O /tmp/agent.jar
      • java -jar /tmp/agent.jar -jnlpUrl http://< JENKINS_URL> /computer/< AGENT_NAME> /slave-agent.jnlp
  • 高可用增强建议:
    • 使用 标签 将 Job 绑定到合适 Agent,避免单点资源争用。
    • 配置 工具位置(JDK、Maven、Node 等)与 环境变量,保证构建一致性。
    • 定期 备份 $JENKINS_HOME(含 jobs、plugins、credentials.xml 等),并演练恢复流程。
    • 监控 JVM、HTTP 延迟、队列长度、构建失败率,结合告警策略提升可用性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在centos上实现jenkins的高可用部署
本文地址: https://pptw.com/jishu/785993.html
Jenkins构建任务如何在CentOS上配置 如何优化CentOS Jenkins的网络配置

游客 回复需填写必要信息