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

目录
相关文章
|
8天前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
26天前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
61 0
|
14天前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
27 0
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
41 2
zabbix agent集成percona监控MySQL的插件实战案例
|
2月前
|
监控 Devops 测试技术
DevOps实践: 持续集成和持续部署(CI/CD)的入门指南
【9月更文挑战第10天】在快速迭代的软件开发世界中,DevOps已经成为加速产品交付、提升软件质量和团队协作的关键策略。本文将深入浅出地介绍DevOps的核心组成部分——持续集成(Continuous Integration, CI)与持续部署(Continuous Deployment, CD)的基本概念、实施步骤以及它们如何革新传统的软件开发流程。你将学习到如何通过自动化工具简化开发流程,并理解为什么CI/CD是现代软件开发不可或缺的一环。
|
26天前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
75 0
|
3月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
68 1
|
2月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
72 0
|
3月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
69 0
|
3月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
173 0