5分钟搞懂Jenkins分布式架构

2022-12-28  本文已影响0人  DeepNoMind

Jenkins通常以单节点模式工作,但其也可以通过代理的方式实现多节点架构,从而能够横向扩展Jenkins系统,支持大规模CICD流水线。原文: Jenkins Distributed Architecture

Jenkins是最著名的持续集成工具,是实现DevOps的必要组件之一。

本文我们将研究如何基于Jenkins的主从配置实现Jenkins分布式架构。

Jenkins单节点架构

参考下图了解Jenkins单节点架构。

Jenkins单节点架构

对于某些特定场景,单节点不足以满足需求:

为了恢复并运行Jenkins基础设施,需要通过增加内存、CPU等来增强服务器,而这不具备可扩展性,必须根据需求维护和升级服务器。

在维护升级过程中,构建环境将被关闭,作业不得不停止,整个Jenkins基础设施将不可用。

这种单节点架构会造成系统经常处于idel状态,分配给Jenkins环境的资源在这种状态下也没法被充分利用。

单节点架构还会引入安全问题,因为Jenkins用户对所有资源和工作空间都拥有完全的权限。

由于所有这些原因,Jenkins支持分布式架构,其中构建项目的工作负载被委托给多个Jenkins代理。


Jenkins分布式架构

Jenkins代理是运行在远程服务器上并从主节点卸载工作的Java可执行文件。

Jenkins主节点(Master)的特点:

主节点负责:

  1. 调度构建作业。
  2. 将构建作业分发给代理实际执行。
  3. 监视从节点(Slave),并根据需要停止其工作。
  4. 如果所有Jenkins代理都被占用,也可以直接执行作业。
Jenkins代理的特点:

Jenkins代理负责:

  1. 从主节点接收请求或工作,代理的工作就是按命令行事。
  2. 可以将工作配置为始终在特定代理上执行。
  3. 主节点将利用其资源来处理HTTP请求和管理构建环境,构建的实际执行将委托给代理。

通过这种配置,可以横向扩展Jenkins架构,其中Jenkins将安装在单个节点上。

参考下图理解Jenkins的多节点或分布式架构。

Jenkins分布式架构

接下来我们在AWS EC2上设置Jenkins代理,并将其与Jenkins主节点集成。

第一步:

在一台服务器上运行Jenkins主节点。

第二步:

在Master和Agent之间建立连接有不同的方法:

  1. SSH Connector

  2. Inbound Connector

  3. 自定义脚本

第三步:

# Install Java
sudo apt-get update

sudo apt-get install default-jdk -y

# Install Maven
sudo apt-get install maven -y

# Create User as Jenkins
sudo useradd -m jenkins
sudo -u jenkins mkdir /home/jenkins/.ssh

第四步:

第五步:

第六步:

注意: Jenkins Agent的公网IP必须在Master安全组的白名单内。

第七步:

-----BEGIN RSA PRIVATE KEY-----
-----
-----END RSA PRIVATE KEY-----

第八步:

管理节点

第九步:

代理连接日志

第十步:


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

上一篇下一篇

猜你喜欢

热点阅读