CentOS Jenkins如何进行集群管理
小樊
38
2025-12-23 15:48:32
CentOS 上 Jenkins 集群管理与实践
一 架构与准备
- 架构选型:采用 Master–Agent(主从) 模式,构建任务在 Agent 上执行,Master 负责任务调度与界面管理;从节点无需安装完整 Jenkins,只需安装 Java 与构建所需工具(如 Git、Maven)。Jenkins 2.x 建议使用 Java 11+。为提升可用性,可在前端部署 Nginx/HAProxy 做负载均衡与故障转移。Agent 与主节点需网络互通,建议配置 SSH 免密 或固定凭据。为便于排障,建议统一 工具路径 与 环境变量。
二 节点接入与配置
- 添加节点路径:在 Master 管理界面进入 Manage Jenkins → Manage Nodes and Clouds → New Node,类型选择 Permanent Agent,填写节点名称。关键参数建议:
- Number of executors:并发构建数(依据 CPU/内存与 I/O 规划)。
- Remote root directory:如 /home/jenkins,确保目录可写。
- Labels:如 linux、maven、docker,用于任务定向与调度。
- Usage:常用“Use this node as much as possible”;若需严格隔离,可选“Only build jobs with label expressions matching this node”。
- 启动方式一(推荐)—SSH:选择 Launch agents via SSH,填写 Host、端口 22、凭据(用户名/密码或私钥),并设置 Host Key Verification Strategy。首次连接可手动信任主机密钥,生产环境建议使用 Manually trusted key Verification Strategy 并开启 Require manual verification of initial connection 以提升安全性。
- 启动方式二—JNLP:在从节点下载 agent.jar,通过命令连接:
- 命令示例:java -jar /tmp/agent.jar -jnlpUrl http:///computer//slave-agent.jnlp
- 需保证从节点 Java 在 PATH 中,且网络可达 Master 的 JNLP 端口(通常与 Master Web 端口一致)。
- 环境一致性:在各 Agent 安装与 Master 一致的 JDK、Git、Maven 等,并在 Jenkins 的 Node Properties → Environment variables / Tool Locations 中显式声明路径(如 JAVA_HOME、MAVEN_HOME、PATH),避免因路径不一致导致构建失败。
三 任务调度与负载均衡
- 标签调度:在 Job 配置中勾选 Restrict where this project can be run,用 标签表达式 指定节点,如 linux && maven 或 node-02 || node-03,实现按标签定向与弹性分发。
- 并发与隔离:为节点设置合理的 Executors,并在需要时使用“只允许绑定标签的任务”策略,避免与 Master 争用资源。
- 前端负载均衡(可选):部署 Nginx/HAProxy 对多个 Master 实例做轮询或最少连接分发,示例 Nginx 片段:
- upstream jenkins { server 192.168.1.1:8080; server 192.168.1.2:8081; }
- 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; } }
- 多实例方式适合需要更高可用与横向扩展的场景。
四 安全与运维要点
- 安全加固:在 Configure Global Security 启用 安全矩阵/登录认证,限制匿名访问;SSH 主机密钥建议 手动校验;凭据使用 Jenkins 凭据存储,避免明文。
- 日志与监控:定期收集 Master/Agent 日志,结合 Prometheus + Grafana 监控构建队列、执行时长、节点资源等指标,及时扩容或优化。
- 备份与恢复:定期备份 JENKINS_HOME(含 jobs、config.xml、credentials.xml、plugins 等),并进行恢复演练,确保灾难恢复能力。
- 常见问题速查:
- 节点离线:检查 Java 路径、SSH 连通性、凭据与主机密钥策略;必要时在节点页面点击 Launch agent 重试。
- AWT 错误(无头环境):在启动参数中添加 -Djava.awt.headless=true。
- 构建找不到工具:在 Node Properties → Tool Locations 显式设置 JAVA_HOME/MAVEN_HOME/PATH,或在 Agent 创建符号链接统一路径。
- 首次 SSH 连接告警:选择 Manually trusted key Verification Strategy 并确认指纹后再继续。