Ubuntu Jenkins如何进行集群管理
导读:Ubuntu 上 Jenkins 集群管理实战指南 一 架构与准备 架构要点:采用 Master–Agent 模式,Master 负责任务调度与监控,Agent 负责实际构建;通过给 Agent 设置 Labels 实现按标签定向分配任务...
Ubuntu 上 Jenkins 集群管理实战指南
一 架构与准备
- 架构要点:采用 Master–Agent 模式,Master 负责任务调度与监控,Agent 负责实际构建;通过给 Agent 设置 Labels 实现按标签定向分配任务,提升并发与资源隔离能力。
- 基础环境:所有节点安装 OpenJDK 11+,建议 Ubuntu 20.04/22.04 LTS;确保节点间网络互通。
- 端口规划:Master Web 访问 8080/TCP;Agent 通信端口 50000/TCP(JNLP);如需容器/代理通信可映射 50000。
- 防火墙放行(示例):
sudo ufw allow 8080/tcp
sudo ufw allow 50000/tcp
sudo ufw reload - 基础组件:安装 Jenkins(APT 官方仓库或 Docker),建议安装常用插件 Pipeline、SSH Slaves、Credentials Binding 等。
二 节点管理与连接方式
- 添加节点路径:Manage Jenkins → Manage Nodes and Clouds → New Node,类型选 Permanent Agent,关键参数:
- Remote root directory:如 /home/ubuntu/jenkins-agent;
- Labels:如 ubuntu、docker(任务据此定向);
- Usage:如 Use this node as much as possible;
- Number of executors:按 CPU/内存规划(如 2–4/核,视任务而定)。
- 连接方式(推荐 SSH):
- 在从节点准备 SSH 免密登录(Master 用私钥,Slave 放置公钥到 ~/.ssh/authorized_keys);
- Launch method 选 Launch agents via SSH,填写 Host、Credentials(SSH 私钥)。
- 备选方式(JNLP):
- Master 开启 TCP port for JNLP agents(50000);
- 在节点页面获取 Agent Command,在从节点执行:
java -jar agent.jar -jnlpUrl http://:8080/computer//slave-agent.jnlp -secret -workDir “/home/ubuntu/jenkins-agent”
- 验证:保存后节点状态应为 Idle/Online,控制台日志显示运行在目标节点。
三 任务分发与并行实践
- Freestyle 项目:勾选 Restrict where this project can be run,填写目标 Label/节点名 实现定向执行。
- Pipeline 项目(Jenkinsfile):
pipeline { agent { label ‘ubuntu’ } // 与节点标签一致 stages { stage(‘Info’) { steps { sh ‘echo “Running on ${ NODE_NAME} ”’ } } stage(‘Build’) { steps { sh ‘mkdir -p build & & echo “OK” > build/result.txt’ } } } post { always { archiveArtifacts artifacts: ‘build/result.txt’, fingerprint: true } } } - 并行与效率:在 Pipeline 中使用 parallel 拆分测试/构建,提高吞吐;按节点资源合理设置 Executors 与 Label,避免争用。
四 高可用与伸缩
- 入口层负载均衡(Nginx 示例):
upstream jenkins_cluster { server :8080; server :8080; }
server { listen 80; server_name jenkins.example.com;
location / { proxy_pass http://jenkins_cluster; 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; }
}
重启 Nginx:sudo systemctl restart nginx(可按需加入 Keepalived 做 VIP 漂移)。 - 容器化与动态伸缩:
- Master 启动示例:
docker run -d --name jenkins-master -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean:lts - Agent 启动示例(JNLP):
docker run -d --name jenkins-agent -e JENKINS_URL=http://:8080 -e JENKINS_SECRET= -e JENKINS_AGENT_NAME=agent-01 -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean:lts
提示:多 Master 场景需共享 JENKINS_HOME(如 NFS/云盘)并统一插件/配置,或使用 Kubernetes 插件实现自动扩缩容。
- Master 启动示例:
五 日常运维与安全加固
- 监控与排障:在 Manage Nodes and Clouds 查看 Online/Idle/Offline 与 Build History;任务日志通过 Console Output 确认执行节点与输出。
- JVM 与性能:编辑 /etc/default/jenkins 调整堆大小,例如:
JAVA_ARGS=“-Xms2g -Xmx4g -Djava.awt.headless=true”(避免过大堆导致 Full GC 停顿)。 - 安全建议:
- 使用 SSH 密钥 或 凭据绑定,禁用密码登录;
- 仅开放必要端口(8080/50000),限制来源 IP;
- 启用 RBAC(如 Role-Based Strategy),定期更新插件与系统补丁。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Jenkins如何进行集群管理
本文地址: https://pptw.com/jishu/784045.html
