搜索

第 21 章 作业分片

download PDF

分片作业指的是分布式作业的概念。分布式作业用于在大量主机上运行作业,允许您运行多个 ansible-playbooks,各自在清单的子集上运行,它们可以在集群中并行调度。

默认情况下,Ansible 从单个控制实例运行作业。对于不需要跨主机编配的作业,作业分片可以利用自动化控制器将工作分发到集群中的多个节点。

作业分片的工作原理方法是添加一个作业模板字段 job_slice_count,它指定要将 Ansible 运行分片到的作业数量。当这个数字大于 1 时,自动化控制器会从作业模板而不是作业生成工作流。清单在分片作业之间平均分配。然后,工作流作业启动,并像正常工作流一样继续。

在启动作业时,API 将返回作业资源(如果 job_slice_count = 1)或工作流作业资源。对应的用户界面(UI)重定向到适当的屏幕,以显示运行的状态。

21.1. 作业分片注意事项

在设置作业分片时,请考虑以下几点:

  • 分片作业会创建一个工作流作业,然后创建作业。
  • 作业分片由作业模板、清单和分片计数组成。
  • 执行后,分片作业会将每个清单分成多个"分片大小"块。然后,它将 ansible-playbook 的作业排队在相应清单的每个块上运行。引入 ansible-playbook 的清单是原始清单的简化版本,仅包含该特定片段中的主机。作业列表中显示的已完成分片作业会相应地标记,以及已运行的分片作业数量:

    分片作业列表视图
  • 这些分片作业遵循常规调度行为(fork 数量,根据容量进行排队,根据清单映射分配给实例组)。

    注意

    作业分片旨在水平扩展作业执行。在作业模板上启用作业分片会将清单划分成在启动时配置的分片数量,然后为每个分片启动作业。

    通常,分片的数量等于或小于自动化控制器节点的数量。设置大量作业分片(如数千作业分片)可能会导致性能下降,因为作业调度程序不会同时调度数千个工作流节点,这是分片作业已变得是什么。

    • 带有提示或额外变量的分片作业模板的行为与标准作业模板相同,将所有变量和限制应用到生成的工作流作业集合。但是,当将限制传递给分片作业时,如果限制导致分片没有分配主机,则这些分片将失败,从而导致整个作业失败。
    • 计算分布式作业的作业分片作业状态的方式与工作流作业相同。如果其子作业中存在未处理的失败,则会失败。
  • 任何计划在多个主机间编配(而不是只对单个主机应用更改)的作业都不能配置为分片作业。
  • 任何作业都可能会失败,自动化控制器也不会试图发现或考虑作为分片作业运行时失败的 playbook。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.