温馨提示×

如何在CentOS上部署Jenkins集群

小樊
45
2025-12-31 10:29:34
栏目: 智能运维

在 CentOS 上部署 Jenkins 集群

一 架构与准备

  • 架构选型:采用 Master–Agent(控制器–代理) 模式,Master 负责任务调度与界面,Agent 负责实际构建;如需对外高可用,可在前端放置 Nginx/HAProxy 做负载均衡与健康检查。
  • 节点规划:至少准备 1 台 Master + 1 台以上 Agent;建议 JDK 11/17/21,各节点时间同步(如 chrony)。
  • 端口规划:Master 监听 8080(Web UI)与 50000(JNLP 代理通信);如部署负载均衡,VIP/域名指向 Master 或 Agent 前端。
  • 基础环境:关闭 SELinux 或配置放行策略,开放防火墙端口(8080、50000 及 SSH 22)。

二 安装 Master(CentOS 7/8)

  • 在线 YUM 安装(推荐)
    1. 安装 Java(示例为 OpenJDK 11
      sudo yum install -y java-11-openjdk-devel
    2. 添加 Jenkins 仓库并安装
      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
    3. 启动并设置开机自启
      sudo systemctl enable --now jenkins
    4. 访问 http://<master_ip>:8080,解锁并完成插件安装。
  • Docker 方式(便于快速搭建与迁移)
    sudo yum install -y docker
    sudo systemctl enable --now docker
    sudo docker run -d --name jenkins-master -p 8080:8080 -p 50000:50000 \ -v /var/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkins/jenkins:lts
    日志中获取初始管理员密码:docker logs jenkins-master。

三 添加 Agent 节点

  • 方式 A(推荐)—— SSH 启动 Agent
    1. 在 Master 生成密钥并免密登录 Agent:
      ssh-keygen
      ssh-copy-id <agent_user>@<agent_ip>
    2. 在 Master Web:Manage Jenkins → Manage Nodes and Clouds → New Node,填写名称、并发构建数、远程工作目录(如 /home/jenkins)、标签(如 linux、maven)。
    3. 启动方式选择 Launch agents via SSH,填写 Host、选择凭据(用户名/私钥或密码),保存后启动。
    4. 首次连接按提示 Trust SSH Host Key,确认 Agent 在线。
  • 方式 B —— JNLP 启动 Agent(Agent 上执行命令)
    1. 在 Master 节点页面下载 agent.jar 或复制节点页面的启动命令。
    2. 在 Agent 上执行(示例):
      wget http://<master_ip>:8080/jnlpJars/agent.jar -O /tmp/agent.jar
      java -jar /tmp/agent.jar \ -jnlpUrl http://<master_ip>:8080/computer/<agent_name>/slave-agent.jnlp \ -secret <agent_secret> -workDir “/home/jenkins”
  • 环境一致性:在 Agent 安装项目所需工具(如 git、maven、JDK、.NET SDK 等),并在 Master 的节点配置中设置 工具位置(如 git、jdk、maven 的绝对路径),确保与项目构建环境一致。

四 高可用与负载均衡

  • 对外高可用:在 Nginx/HAProxy 前放置 VIP/域名,后端指向多个 Master(或 Master+Agent 前端),开启 HTTP 健康检查会话保持(如基于源 IP 的 hash),避免单点故障。
  • 构建高可用:通过 标签(Label) 将 Job 绑定到具备相应环境的 Agent,Master 自动分发任务,单 Agent 故障不影响整体构建。
  • 数据与配置:确保 JENKINS_HOME(如 /var/jenkins_home)持久化;定期备份(插件、配置、任务与构建历史),变更前先演练恢复流程。

五 验证与运维

  • 验证:
    • 在 Master 节点列表确认 Agent 在线
    • 创建测试 Job,勾选 Restrict where this project can be run 并选择对应 Label,验证任务在目标 Agent 执行;
    • 观察系统负载、队列与日志,确认并发与分发正常。
  • 运维要点:
    • 调整 JVM 堆大小(如 -Xms/-Xmx)、并发构建数、工具路径;
    • 监控 节点健康、构建队列、磁盘与内存
    • 定期 备份与恢复演练,保持插件版本一致。

0