Ubuntu上Jenkins如何进行集群配置
导读:Ubuntu 上 Jenkins 集群配置指南 一 架构与准备 架构要点:采用 Master–Agent 分布式架构,Master 负责调度与插件管理,Agent 负责实际构建;通过给 Agent 打 Label 实现按环境/工具调度,提...
Ubuntu 上 Jenkins 集群配置指南
一 架构与准备
- 架构要点:采用 Master–Agent 分布式架构,Master 负责调度与插件管理,Agent 负责实际构建;通过给 Agent 打 Label 实现按环境/工具调度,提升并发与资源利用率。常见连接方式包括 SSH 与 JNLP。为便于扩展与弹性,也可在 Kubernetes 上运行 Jenkins 代理(Jenkins on K8s)。
- 环境与端口:所有节点安装 Java 11/17(建议 OpenJDK 11 或 17);Master 默认 8080/TCP,Agent 入站通信默认 50000/TCP;如使用云主机或公司网络,需放通上述端口与安全组策略。
- 基础组件:建议安装常用插件(如 Pipeline、Credentials Binding、GitHub Integration 等),并为系统创建管理员账户、禁用匿名访问。
二 安装 Master 节点(Ubuntu 22.04/20.04)
- 安装 Java:
- Ubuntu 22.04/20.04 推荐 OpenJDK 11 或 17:
- sudo apt update & & sudo apt install -y openjdk-11-jdk 或 openjdk-17-jdk
- java -version
- Ubuntu 22.04/20.04 推荐 OpenJDK 11 或 17:
- 安装 Jenkins(官方 APT 仓库):
- wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io.key
- echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/” | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
- sudo apt update & & sudo apt install -y jenkins
- 启动与开机自启:
- sudo systemctl enable --now jenkins
- sudo systemctl status jenkins
- 防火墙放行:
- sudo ufw allow 8080/tcp
- sudo ufw allow 50000/tcp
- 初始化:
- 访问 http://< MASTER_IP> :8080,初始密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 完成安装向导,建议安装推荐插件并创建管理员账户。
三 添加 Agent 节点的两种方式
- 方式 A SSH 连接(推荐,Master 主动连接 Agent)
- 在 Agent 节点准备环境:
- sudo apt update & & sudo apt install -y openjdk-11-jdk
- sudo adduser --system --group --home /home/jenkins jenkins
- sudo -u jenkins ssh-keygen -t rsa -b 4096 -f /home/jenkins/.ssh/id_rsa
- 配置免密登录(Master → Agent):
- 在 Master 上复制公钥:cat ~/.ssh/id_rsa.pub
- 在 Agent 上追加到 jenkins 用户:sudo -u jenkins sh -c ‘echo “< MASTER_PUB_KEY> ” > > /home/jenkins/.ssh/authorized_keys’
- 权限修正:sudo chown -R jenkins:jenkins /home/jenkins/.ssh & & sudo chmod 700 /home/jenkins/.ssh & & sudo chmod 600 /home/jenkins/.ssh/authorized_keys
- 测试:sudo -u jenkins ssh jenkins@< AGENT_IP> echo ok
- 在 Master 添加节点:
- 进入 Manage Jenkins → Manage Nodes and Clouds → New Node,命名如 agent-01,类型选 Permanent Agent。
- 配置:
- # of executors:按 CPU 核数合理设置(如 2–4)
- Remote root directory:如 /home/jenkins
- Labels:如 linux java maven
- Launch method:选择 Launch agents via SSH
- Host:< AGENT_IP> ;Credentials:选择或新增 SSH Username with private key(用户名 jenkins,私钥为 Master 的私钥)
- 保存后点击 Launch agent,状态变为 Online 即成功。
- 在 Agent 节点准备环境:
- 方式 B JNLP 连接(Agent 主动连接 Master)
- 在 Master 创建节点(同上),Launch method 选 Launch agent by connecting it to the master,记录 Agent secret 与 Master 地址。
- 在 Agent 下载并启动(需已安装 Java):
- wget http://< MASTER_IP> :8080/jnlpJars/agent.jar
- java -jar agent.jar -url http://< MASTER_IP> :8080/ -secret < AGENT_SECRET> -name agent-01 -workDir /home/jenkins
- 如需后台常驻,可用 nohup/screen 或 systemd 单元托管。
- 快速验证:
- 在 Master 节点列表看到 agent-01 在线;在任意 Job 的 Restrict where this project can be run 填入 linux(或相应 Label)进行验证。
四 运行与调度优化
- 标签与并发:为同类环境/工具统一 Label(如 linux、java、docker、deploy),Job/Pipeline 通过 label 选择目标节点;合理设置 Executors 数量,避免单机过载。
- 调度策略:Jenkins 默认使用基于 一致性哈希 的调度;可安装 Least Load 等插件实现“最少负载优先”,提升队列吞吐与资源利用。
- 工作空间治理:为 Job 配置构建后 清理工作空间 策略,定期清理长期 workspace 残留,避免磁盘被占满导致构建失败。
- 流水线示例(按标签分阶段执行):
- pipeline { agent none stages { stage(‘Build’) { agent { label ‘linux’ } steps { sh ‘mvn -B -DskipTests clean package’ } } stage(‘Test’) { agent { label ‘test’ } steps { sh ‘mvn test’ } } stage(‘Deploy’) { agent { label ‘deploy’ } steps { sh ‘ansible-playbook deploy.yml’ } } } }
五 常见问题与扩展
- 常见问题排查
- 无法连接 Agent:检查 22/50000 端口与安全组、Agent 上 jenkins 用户与 authorized_keys 权限、Master 私钥是否匹配。
- 节点离线:查看 Master 系统日志 与 Agent 启动日志,确认 Java 版本兼容、工作目录可写、磁盘空间充足。
- 构建排队严重:增加 Executors、补充同 Label 的 Agent、启用 Least Load 插件、优化 Job 并发与清理策略。
- Docker 运行 Master(可选)
- 快速启动(映射 8080/50000,挂载数据卷与 Docker 套接字):
- docker run -d --name jenkins --restart=always
-p 8091:8080 -p 50000:50000
-v /home/jenkins_home:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
jenkinsci/blueocean
- docker run -d --name jenkins --restart=always
- 初始密码:docker logs -f jenkins | grep -A1 “initialAdminPassword”
- 快速启动(映射 8080/50000,挂载数据卷与 Docker 套接字):
- 扩展方向
- 在 Kubernetes 中动态按需创建 Jenkins Agent(Jenkins on K8s),实现弹性伸缩与隔离;适合大规模与多语言/多环境场景。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Jenkins如何进行集群配置
本文地址: https://pptw.com/jishu/789274.html
