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 主从节点公钥

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 任务配置

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

相关推荐
小白的码BUG之路4 小时前
linux -- ssh两台机器相连
运维·服务器·ssh
聚美智数4 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
十年Java程序媛4 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
我是人✓4 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
土豆.exe5 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
缓慢更新5 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
小坏讲微服务6 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
续写烂尾6 小时前
贴片 SD NAND、eMMC、TF 卡规格怎么定?硬件工程师选型清单
运维·服务器·网络
迪康妍妍6 小时前
终端管控实操:封堵网盘与IM外发通道的落地思路
运维·网络·安全·架构·安全性测试
sxgzzn6 小时前
如何选择合适的开关柜在线监测工具?
运维·重构·无人机·开关柜局放在线监测·光伏运维管理系统