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

目录
相关文章
|
13天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
373 0
存储 jenkins 持续交付
195 2
|
3月前
|
缓存 监控 安全
电商API集成入门:从零开始搭建高效接口
在数字化电商时代,API集成成为企业提升效率、实现系统互联的关键。本文从零开始,逐步讲解如何搭建高效、可靠的电商API接口,适合初学者学习。内容涵盖API基础、认证安全、请求处理、性能优化等核心步骤,并提供Python代码示例与数学公式辅助理解。通过实践,读者可掌握构建优质电商API的技巧,提升用户体验与系统性能。
134 0
|
8月前
|
监控 jenkins Shell
jenkins结合gitlab实现CI(持续集成)
通过本文的介绍,我们详细了解了如何结合Jenkins和GitLab实现持续集成。从环境准备、插件配置到Pipeline任务创建和CI流程监控,每一步都提供了详细的操作步骤和示例代码。希望本文能帮助开发者快速搭建起高效的CI系统,提高项目开发效率和代码质量。
627 8
|
9月前
|
Java jenkins 持续交付
Jenkins集成Maven
通过以上步骤,可以在Jenkins中成功集成Maven,实现自动化构建和部署。通过定时构建、SCM轮询等方式,可以确保代码库中的最新变更能够及时构建和测试,提高开发效率和代码质量。这种集成方式在实际项目中具有广泛的应用前景,能够显著提升团队的协作效率。
219 8
|
10月前
|
人工智能 数据可视化 JavaScript
NodeTool:AI 工作流可视化构建器,通过拖放节点设计复杂的工作流,集成 OpenAI 等多个平台
NodeTool 是一个开源的 AI 工作流可视化构建器,通过拖放节点的方式设计复杂的工作流,无需编码即可快速原型设计和测试。它支持本地 GPU 运行 AI 模型,并与 Hugging Face、OpenAI 等平台集成,提供模型访问能力。
383 14
NodeTool:AI 工作流可视化构建器,通过拖放节点设计复杂的工作流,集成 OpenAI 等多个平台
|
10月前
|
监控 jenkins Linux
从 Jenkins 持续集成出发:探究如何监控员工电脑屏幕
Jenkins 在企业信息化管理中用于自动化构建、测试和部署,提高开发效率。本文讨论了其重要性,并从技术角度探讨了屏幕监控的可能性,但明确反对非法监控,强调应合法合规地管理企业和尊重员工隐私。
175 12
|
10月前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
224 3
|
11月前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
11月前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
319 0

推荐镜像

更多