如何在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 安装(推荐)
- 安装 Java(示例为 OpenJDK 11)
sudo yum install -y java-11-openjdk-devel
- 添加 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
- 启动并设置开机自启
sudo systemctl enable --now jenkins
- 访问 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
- 在 Master 生成密钥并免密登录 Agent:
ssh-keygen
ssh-copy-id <agent_user>@<agent_ip>
- 在 Master Web:Manage Jenkins → Manage Nodes and Clouds → New Node,填写名称、并发构建数、远程工作目录(如 /home/jenkins)、标签(如 linux、maven)。
- 启动方式选择 Launch agents via SSH,填写 Host、选择凭据(用户名/私钥或密码),保存后启动。
- 首次连接按提示 Trust SSH Host Key,确认 Agent 在线。
- 方式 B —— JNLP 启动 Agent(Agent 上执行命令)
- 在 Master 节点页面下载 agent.jar 或复制节点页面的启动命令。
- 在 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)、并发构建数、工具路径;
- 监控 节点健康、构建队列、磁盘与内存;
- 定期 备份与恢复演练,保持插件版本一致。