jenkins持续集成从0入门到实战【十】jenkins集群多节点

简介: 在实际工作中,如果Job非常多且构建频繁,`jenkins`的服务在效率上很难够支持。所以这种情况下我们更多的是采用1主多从的方式去进行构建,master节点主要做任务分发和调度,实际构建job的是slave节点,这时候我们就需要创建主从节点。

多节点构建

环境配置:

IP jenkins角色 用户 环境
192.168.2.195 master jenkins:ci jenkins maven java8 git
192.168.2.194 slave jenkisn:ci maven java8 git

从节点要求

  1. 尽量选择干净的节点
  2. 同样需要支持Java构建相关的环境
  3. 主从节点间需要支持免密通信
  4. 不需要在从节点手动安装jenkins,由master节点自动进行控制
  5. 需要有maven jdk git环境,用于后续构建

    • yum install git

多节点服务间免密配置

做节点主从,我们就需要给参与构建的slave节点和master进行免密通信的配置,方便构建过程中的调度通信。

目标:实现master的jenkins用户—》免密连接slave的jenkins用户

  • master机器上使用jenkins用户生成秘钥

    $ su jenkins
    # 进入当前目录下,查看是否已经有.ssh目录以及目录下的公私钥
    $ cd ~
    $ ls -a
    
    # 如果不存在,则执行如下命令进行生成
    $ ssh-keygen -t rsa
    # 按3次回车

    运行后会在当前用户的根目录生成一个.ssh文件夹

    image.png

  • .ssh文件夹中的文件描述

    • id_rsa : 生成的私钥文件
    • id_rsa.pub : 生成的公钥文件
    • know_hosts : 已知的主机公钥清单

    接下来需要将公钥导入到认证文件中

    $ su jenkins
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    如果希望ssh公钥生效需满足至少下面两个条件:

    • .ssh目录的权限必须是700
    • .ssh/authorized_keys文件权限必须是600
  • 给对应文件授权

    $ chmod 700 ~/.ssh
    $ chmod 600 ~/.ssh/authorized_keys
  • authorized_keys文件拷贝到slave服务器的jenkins用户.ssh目录下

    # 使用root用户 在slave上创建jenkins用户
    $ groupadd ci
    $ useradd jenkins -g ci
    # 给创建一个密码 slave123
    $ passwd jenkins
    
    # 创建/home/jenkins/.ssh文件夹(如果存在则不用创建)
    $ su jenkins
    $ cd ~
    $ mkdir -p .ssh
    
    # 在master服务器上将jenkins用户.ssh/pub公钥文件拷贝到slave的jenkins用户的.ssh目录下,并命名为authorized_keys
    $ scp -p ~/.ssh/id_rsa.pub jenkins@192.168.2.194:/home/jenkins/.ssh/authorized_keys
  • 在master服务器上进行免密连接测试

    # 在jenkins服务器的/home/jenkins目录下创建filetest文件,并拷贝到应用服务器
    $ cd ~/
    $ touch filetest
    $ scp -p filetest jenkins@192.168.2.194:/home/jenkins/filetest
    # 进入到slave(192.168.2.194),检查/home/jenkins目录下是否出现filetest
    
    # 在jenkins服务器上使用ssh进行免密连接测试,成功后会出现Last Login的提示
    $ ssh jenkins@192.168.2.194
    Last login: Sun Sep 20 21:53:03 2022
    $ exit
  • 到此免密登录和拷贝实现成功,为接下来jar包部署提供了快捷的帮助

配置jenkins从节点凭据

image.png

image.png

image.png

image.png

从节点的指定

从节点需要支持:Git、Maven、Java,如果要执行Node环境,则需要配置node

image.png

image.png

属性详解

  • 名称:填节点名称,如slave1
  • 描述:节点描述,如:这是第一个从节点
  • 并发构建数(Number of executors):看着填数字,如:3
  • 远程工作目录 填写从节点上jenkins agent的工作目录,推荐只用绝对路径,如/home/jenkins/jk。注意jenkins要有该目录的读写权限
  • 标签:随意填写。jenkins可以通过标签指定一组从服务器运行某个构建任务
  • 用法:可以指定什么情况下使用该从节点,建议选择第二种。

    • 尽可能使用该节点
    • 只允许运行绑定到这台机器的Job:任务指定了使用该节点时,才用该节点运行
  • 启动方法:选择launch slave agents via SSH

    • 主机:填写从服务器的ip或域名
    • Credentials:填写SSH认证信息,可用户密码认证或SSH密钥认证方式
    • Host Key Verification Strategy 选择 Manually Trusted Key Verification Strategy,这会在完成配置后,第一次连接从节点时要求我们手动确认当前连接的从节点的身份。Host Key 验证是用来防止中间人攻击
    • 选中Require manual verification of initial connection
  • 可用性Availability:不修改
  • 高级

    • java路径 填写从主机上的java的路径,可以使用which java 查看。如果这里不填,jenkins会扫描一些特定路径,如果扫描不到java,就会报错,所以建议填写
    • 环境变量 勾选上,并填写运行构建任务所需要的环境变量。建议填上JAVA_HOME,免得jenkins运行构建任务时找不到java。
  • 工具位置

    image.png

  • 环境变量

    image.png

填完之后,点击【保存】 ,并启动代理

从节点你指定的远程目录下就会生成slave.jar文件

从节点发布

image.png

目录
相关文章
|
9天前
|
人工智能 自然语言处理 API
快速集成GPT-4o:下一代多模态AI实战指南
快速集成GPT-4o:下一代多模态AI实战指南
188 101
|
13天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
372 0
存储 jenkins 持续交付
194 2
|
2月前
|
人工智能 自然语言处理 分布式计算
AI 驱动传统 Java 应用集成的关键技术与实战应用指南
本文探讨了如何将AI技术与传统Java应用集成,助力企业实现数字化转型。内容涵盖DJL、Deeplearning4j等主流AI框架选择,技术融合方案,模型部署策略,以及智能客服、财务审核、设备诊断等实战应用案例,全面解析Java系统如何通过AI实现智能化升级与效率提升。
205 0
|
3月前
|
缓存 监控 安全
电商API集成入门:从零开始搭建高效接口
在数字化电商时代,API集成成为企业提升效率、实现系统互联的关键。本文从零开始,逐步讲解如何搭建高效、可靠的电商API接口,适合初学者学习。内容涵盖API基础、认证安全、请求处理、性能优化等核心步骤,并提供Python代码示例与数学公式辅助理解。通过实践,读者可掌握构建优质电商API的技巧,提升用户体验与系统性能。
134 0
|
4月前
|
缓存 监控 安全
通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》
本文档详细介绍了基于通义大模型的CRM系统集成架构设计与优化实践。涵盖混合部署架构演进(新增向量缓存、双通道同步)、性能基准测试对比、客户意图分析模块、商机预测系统等核心功能实现。同时,深入探讨了安全防护体系、三级缓存架构、请求批处理优化及故障处理机制,并展示了实时客户画像生成和动态提示词工程。通过实施,显著提升客服响应速度(425%)、商机识别准确率(37%)及客户满意度(15%)。最后,规划了技术演进路线图,从单点集成迈向自主优化阶段,推动业务效率与价值持续增长。
154 7
|
5月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
328 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
5月前
|
JSON JavaScript API
MCP 实战:用配置与真实代码玩转 GitHub 集成
MCP 实战:用配置与真实代码玩转 GitHub 集成
1212 4
|
8月前
|
监控 jenkins Shell
jenkins结合gitlab实现CI(持续集成)
通过本文的介绍,我们详细了解了如何结合Jenkins和GitLab实现持续集成。从环境准备、插件配置到Pipeline任务创建和CI流程监控,每一步都提供了详细的操作步骤和示例代码。希望本文能帮助开发者快速搭建起高效的CI系统,提高项目开发效率和代码质量。
627 8
|
9月前
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
157 9

推荐镜像

更多