Jenkins-基于 SSH 实现 Jenkins 分布式

工作原理

  • 主节点与从节点通信

    • 主节点通过 SSH 登录到从节点,并启动 Jenkins Agent 程序(Agent.jar
    • Agent 程序通过主节点指定的端口(默认为 50000)与主节点保持通信
  • 任务分发

    • 主节点根据任务配置和负载,将构建任务分发到从节点执行
    • 从节点完成任务后,将结果返回给主节点
  • 持续连接

    • SSH 会保持一个持久连接,确保主节点可以实时监控从节点的状态和任务进展

1. 机器准备

|-----------------|------------|
| gitlab | 10.0.0.201 |
| jenkins-master | 10.0.0.200 |
| jenkins-slaves1 | 10.0.0.205 |
| jenkins-slaves2 | 10.0.0.206 |
| web | 10.0.0.202 |

2. gitlab 配置

主机配置dns解析

root@gitlab \~\]#**apt update \&\& apt install -y bind9 bind9-utils bind9-host bind9-dnsutils** \[root@gitlab \~\]#**vim /etc/bind/named.conf.default-zones** ...... zone "lly.org" IN { type master; file "/etc/bind/lly.org.zone"; }; \[root@gitlab \~\]#**vim /etc/bind/lly.org.zone** $TTL 1D @ IN SOA master admin ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.201 gitlab A 10.0.0.201 \[root@gitlab \~\]#**chgrp bind /etc/bind/lly.org.zone** \[root@gitlab \~\]#**systemctl enable named** \[root@gitlab \~\]#**systemctl restart named** 工具添加 jenkins 主从节点公钥 ![](https://i-blog.csdnimg.cn/direct/d03a8ed08a7848d49e29d2f9c48d0f09.png)

3. jenkins-master 配置

dns 指向201主机

root@jenkins \~\]#**vim /etc/netplan/01-netcfg.yaml** ...... nameservers: addresses: \[10.0.0.201

安装 jenkins 和 jdk

root@jenkins \~\]#**apt update \&\& apt -y install openjdk-17-jdk** \[root@jenkins \~\]#**ls** jenkins_2.479.1_all.deb \[root@jenkins \~\]#**dpkg -i jenkins_2.479.1_all.deb** \[root@jenkins \~\]#**systemctl status jenkins.service**

工具配置

安装插件


ssh 连接 gitlab 下载源码则需以下配置(Manage Jenkins-security)


添加凭据(用户名密码填写为从节点主机的用户名密码)

添加从节点配置

执行程序数量可以选择填写cpu个数

可定义多个标签,空格分隔

用法可选择"尽可能使用这个节点"或"只允许运行绑定到这台机器的job"

启动方式可选择"通过将代理连接到控制器来启动代理"或"通过ssh启动代理"


添加完成后,刷新节点列表,显示主从时间已同步即可


检查主从是否连接成功

root@jenkins \~\]#**ss -nt** State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 \[::ffff:10.0.0.200\]:57704 \[::ffff:10.0.0.**205**\]:22 ESTAB 0 0 \[::ffff:10.0.0.200\]:37734 \[::ffff:10.0.0.**206**\]:22

4. jenins-slaves 配置(两台从节点配置一致)

dns 指向201主机

root@jenkins-slave1 \~\]#**vim /etc/netplan/01-netcfg.yaml** ...... nameservers: addresses: \[10.0.0.201

安装与主节点相同版本的 jdk

root@jenkins-slave1 \~\]#**apt update \&\& apt install -y openjdk-17-jdk** 复制公钥到 web 主机上(如果需要 ssh key 连接的话) \[root@jenkins-slave1 \~\]#**ssh-copy-id 10.0.0.202** 将主节点的脚本拷贝到从节点上 \[root@jenkins \~\]#**scp -r /data/ 10.0.0.205:/** \[root@jenkins \~\]#**scp -r /data/ 10.0.0.206:/**

5. Jenkins 任务配置

勾选限制项目的运行节点,填写合适的标签

相关推荐
阿杰同学2 分钟前
Java NIO 面试题及答案整理,最新面试题
java·开发语言·nio
视觉装置在笑7134 分钟前
awk 基础知识和进阶用法
linux·运维·服务器·正则表达式
无线图像传输研究探索9 分钟前
国标28181平台与TCP对讲:从“不支持”到“实现路径”的完整解析(5G单兵图传、布控球)
运维·服务器·网络·5g·无人机·单兵图传·无人机图传
没有bug.的程序员14 分钟前
GC日志解析:从日志看全流程
java·网络·jvm·spring·日志·gc
WZTTMoon15 分钟前
开发中反复查的 Spring Boot 注解,一次性整理到位
java·spring boot·后端
葡萄城技术团队17 分钟前
Excel 文件到底是怎么坏掉的?深入 OOXML 底层原理讲解修复策略
android·java·excel
小糖学代码21 分钟前
LLM系列:1.python入门:1.初识python
服务器·开发语言·人工智能·python·ai
慎独41323 分钟前
重塑价值分配:从土地、机器到数据的生产关系革命
大数据·运维·人工智能
照物华23 分钟前
MySQL 软删除 (Soft Delete) 与唯一索引 (Unique Constraint) 的冲突与解决
java·mysql
mjhcsp23 分钟前
C++ 后缀自动机(SAM):原理、实现与应用全解析
java·c++·算法