首页主机资讯Ubuntu上Jenkins如何进行集群配置

Ubuntu上Jenkins如何进行集群配置

时间2026-01-22 00:04:03发布访客分类主机资讯浏览1312
导读:Ubuntu 上 Jenkins 集群配置指南 一 架构与准备 架构要点:采用 Master–Agent 分布式架构,Master 负责调度与插件管理,Agent 负责实际构建;通过给 Agent 打 Label 实现按环境/工具调度,提...

Ubuntu 上 Jenkins 集群配置指南

一 架构与准备

  • 架构要点:采用 Master–Agent 分布式架构,Master 负责调度与插件管理,Agent 负责实际构建;通过给 Agent 打 Label 实现按环境/工具调度,提升并发与资源利用率。常见连接方式包括 SSHJNLP。为便于扩展与弹性,也可在 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-jdkopenjdk-17-jdk
      • java -version
  • 安装 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)
    1. 在 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
    2. 配置免密登录(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
    3. 在 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 即成功。
  • 方式 B JNLP 连接(Agent 主动连接 Master)
    1. 在 Master 创建节点(同上),Launch methodLaunch agent by connecting it to the master,记录 Agent secret 与 Master 地址。
    2. 在 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
    3. 如需后台常驻,可用 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 logs -f jenkins | grep -A1 “initialAdminPassword”
  • 扩展方向
    • Kubernetes 中动态按需创建 Jenkins Agent(Jenkins on K8s),实现弹性伸缩与隔离;适合大规模与多语言/多环境场景。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上Jenkins如何进行集群配置
本文地址: https://pptw.com/jishu/789274.html
Jenkins在Ubuntu中的任务调度 Jenkins在Ubuntu中的日志管理

游客 回复需填写必要信息