四时宝库

程序员的知识宝库

Jenkins基本功 - 分布式构建介绍(jenkins 集群部署方案)

在Jenkins上的分布式构建

在前面的章节中, 我们成功地介绍了以下主题:

  • 在不同环境中安装和设置Jenkins
  • 管理和保护 Jenkins 当安装在我们的环境中
  • 创建自由式项目并自定义带有视图的 Jenkins 界面
  • 使用参数化项目和生成触发器
  • 在不同阶段的Jenkins上创建管道

在本章中, 我们将开始探讨如何从我们的主 Jenkins 服务器卸载生成, 提高构建速度, 并横向扩展我们的 Jenkins 服务器.

到本章结束时, 您将能够:

  • 将代理连接到您的 Jenkins 大师, 并安全地访问他们
  • 配置要在代理上运行的自由式项目
  • 指示管道在生成环境中的不同代理上运行

设置我们的Slave机器

在讨论设置Slave之前, 快速了解 Jenkins 中分布式生成的更基本概念非常重要。

分布式构建

在计算中, 分布式术语是指由通过网络通信并相互传递消息和指令的不同组件组成的系统。系统的不同组件设置在同一网络上的不同服务器上, 理想情况下可以更快地进行通信。在 Jenkins 的上下文中, 分布式生成是指分配不同的节点 (从属) 来运行生成任务。反过来说, 我们也可以看到, 创建更多节点的成本很高, 可能会带来安全挑战, 因为您的节点必须通过网络进行通信。

The Master-Slave Model

主从模型允许我们在 Jenkins 上配置分布式构建。主节点基本上是安装 Jenkins 的节点。这是执行生成系统的大部分任务的管理节点。默认情况下, Jenkins 上的每个节点都有执行器(Executor)。Master默认有两个生成执行器。

正式的 Jenkins 文档将执行器定义为 "执行由管道或节点上的项目定义的工作的插槽。节点可能配置了零个或多个执行器, 这对应于能够在该节点上执行的并发项目或管道的数量。

我们可以把一个执行器看作是一个过程, 詹金斯从一个节点上开始执行任务或生成。在设置从属节点时, 可以配置该节点的执行器数。理想情况下, 资源 (RAM、CPU 等) 应指导您了解可以为从属节点配置多少个执行器, 以便您不会使节点不堪重负。某些设置更进一步, 通过将主服务器的执行器设置为0来完全卸载主服务器运行任何任务, 但不一定建议这样做, 因为它可能会在主服务器无法与从服务器通信的情况下创建长时间的生成队列。

在本章中, 我们将利用Vagrant and VirtualBox为我们的Jenkins设置创建一个网络和一个主和从设置。本书提供了本部分的代码文件。这些工具是跨平台的, 应在任何环境下工作。假设您安装了Vagrant and VirtualBox, 运行Vagrant --version, 以确认您的安装工作正常。在写这本书的时候, 最新的 Vagrant version is 2.1.1:

在继续之前, 还要确保您有一个Vagrant Cloud account, 并且在继续之前已在终端上运行该帐户。如果您已经这样做了, 您可以运行Vagrant登录-检查以确认您的登录会话仍处于活动状态。

我们要设置的设置如下图所示:

设置我们的节点

在本节中, 我们提供了一个 Vagrantfile。此文件描述此项目所需的计算机类型以及如何设置计算机。该文件的描述如下:

Vagrantfile 是在 Ruby 中定义的。在不深入了解语法的情况下, 我们将分解文件中线条的重要性。您会注意到此文件中的三个节点的重复很多, 它们是主节点、节点1和节点2。请注意, 在文件中, 我们使用 config.vm.define 然后使用第一个实例的定义名称来定义计算机的上下文。我们要使用的名称是 master。这三台机器有四个类似的指令: 框、主机名、网络和供应。让我们看看这些都能做什么。

主设置脚本如下所示:

该脚本安装 Java (Jenkins 依赖 Java), 然后安装 Jenkins 并启动 Jenkins 服务。最后, 它禁用来宾上的防火墙, 以允许端口转发。这不应该在任何生产环境中完成。理想情况下, 您应该只允许通过防火墙上的端口8080的通信, 以允许访问 Jenkins。

从属设置脚本如下所示:

在Slave上, 除了确保安装 Java 之外, 我们不需要做太多事情。应在从机上安装安装在主机上的相同版本。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接