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

目录
相关文章
|
1月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
143 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
1月前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
69 2
|
9天前
|
人工智能 数据可视化 JavaScript
NodeTool:AI 工作流可视化构建器,通过拖放节点设计复杂的工作流,集成 OpenAI 等多个平台
NodeTool 是一个开源的 AI 工作流可视化构建器,通过拖放节点的方式设计复杂的工作流,无需编码即可快速原型设计和测试。它支持本地 GPU 运行 AI 模型,并与 Hugging Face、OpenAI 等平台集成,提供模型访问能力。
72 14
NodeTool:AI 工作流可视化构建器,通过拖放节点设计复杂的工作流,集成 OpenAI 等多个平台
|
19天前
|
监控 jenkins Linux
从 Jenkins 持续集成出发:探究如何监控员工电脑屏幕
Jenkins 在企业信息化管理中用于自动化构建、测试和部署,提高开发效率。本文讨论了其重要性,并从技术角度探讨了屏幕监控的可能性,但明确反对非法监控,强调应合法合规地管理企业和尊重员工隐私。
63 12
|
24天前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
26 3
|
1月前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
1月前
|
jenkins Java 持续交付
Gitee+Jenkins+SonarQube代码上线的实战操作
通过以上步骤,就可以实现基于Gitee、Jenkins和SonarQube的代码上线流程,确保代码的质量和上线过程的自动化和可控性。在实际操作中,可以根据项目的具体需求和环境进行适当的调整和优化。
|
1月前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
82 4
|
2月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
2月前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
72 0

热门文章

最新文章