当前位置: 首页 > article >正文

Jenkins-基于 SSH 实现 Jenkins 分布式

工作原理

  • 主节点与从节点通信

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

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

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

1. 机器准备

gitlab10.0.0.201
jenkins-master10.0.0.200
jenkins-slaves110.0.0.205
jenkins-slaves2

10.0.0.206 

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

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


http://www.kler.cn/a/415041.html

相关文章:

  • Qt读写Usb设备的数据
  • 【C语言篇】探索 C 语言结构体:从基础语法到数据组织的初体验
  • Windows 11 搭建 Docker 桌面版详细教程
  • 【Maven】继承和聚合
  • 【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?
  • HDU Go Running(最小点覆盖 + 网络流优化)
  • 远程视频验证如何改变商业安全
  • 面试手撕题积累
  • 林业产品推荐系统:Spring Boot优化策略
  • 计算机网络:网络安全
  • helm手动部署Kafka集群
  • 高级java每日一道面试题-2024年11月25日-JVM篇-说说Java对象创建过程?
  • 前端安全和解决方案
  • 在Android上使用MD工业相机的开发示例
  • Rust学习笔记_03——元组
  • 【大模型】基于LLaMA-Factory的模型高效微调
  • 高效赋能游戏业务:全面解析游戏托管服务的价值与实践
  • 基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现八
  • Vue3 常用指令解析:v-bind、v-if、v-for、v-show、v-model
  • uniapp对接蓝牙
  • 二刷代码随想录第16天
  • UE5 Switch Has Authority 节点
  • AI赋能电商:打造高效销售与卓越用户体验的新引擎
  • C语言第十三周课——重点考点知识
  • python实现TCP服务端,支持对所有客户端的数据收发,支持终端自定义命令操作,提供clear命令一键断开所有的客户端连接
  • 在 Spring Boot 中实现多种方式登录(用户名、手机号、邮箱等)的不正经指南