1.3. 自动化控制器的主要工作负载
自动化控制器的主要工作负载包括:
- 通过自动化控制器项目管理自动化内容
- 通过执行作业来启动自动化
1.3.1. 自动化控制器项目同步 复制链接链接已复制到粘贴板!
用户在自动化控制器项目(如 Ansible Playbook)中定义自动化内容的来源。这些项目的主要工作负载是同步的。API 中的项目更新作业管理同步。这些作业也称为 UI 中的源控制更新。
项目更新作业仅在 OpenShift Container Platform 中的 control plane 和任务 pod 上运行。其角色是从其定义的源(如 Git 存储库)使用最新的自动化内容更新自动化控制器。
更新项目并不对性能敏感,只要它们仅存储 playbook 和 Ansible 相关的文本文件。但是,当项目变得过大时,可能会出现问题。不要在一个项目中存储大量二进制数据。如果作业需要访问其他数据,请从 playbook 范围内的对象存储或文件存储检索此数据。
1.3.2. 作业和自动化工作负载 复制链接链接已复制到粘贴板!
作业是自动化控制器的主要工作负载,并在执行平面上运行。它们包括以下作业类型:
- 标准作业
- 工作流、分片和批量作业
- 系统作业
1.3.2.1. 标准作业 复制链接链接已复制到粘贴板!
标准作业涉及从项目中针对清单中一组主机执行 Ansible Playbook。作业由控制节点启动,然后流、进程和存储作业结果。
其性能敏感部分是 playbook 输出的处理。输出被捕获并序列化为自动化控制器的作业事件。针对主机运行的单个 Ansible 任务通常生成多个作业事件(例如:任务启动、特定于主机的详细信息和任务完成)。
事件卷因 playbook 配置的详细程度而异。例如,在一个主机上打印 Hello World 的简单调试任务可能会在详细程度 1 中生成 6 个作业事件,并增加至 34 个作业事件的详细程度 3。
分配程序和回调接收器协作来处理、传输和存储作业事件。这些操作有助于使用平台的存储和处理。作业事件在 control plane 上处理,并存储在数据库中。分配程序处理作业事件,回调接收器存储它们。
1.3.2.2. 工作流、Sliced 和 Bulk 作业 复制链接链接已复制到粘贴板!
要启用复杂的自动化和编配,请使用以下作业类型来扩展标准作业:
- 分片作业:复制针对并行清单分片运行的作业
- 批量作业:在单个请求中启动多个作业
- 工作流作业:协调多个作业模板
这些作业类型协调多个底层标准作业的启动和管理。它们会影响作业调度,它们发生在 control plane 中,否则不会对其服务有严重影响。
1.3.2.3. 系统作业 复制链接链接已复制到粘贴板!
系统作业涉及内部维护任务,如清理旧的作业事件数据。系统作业的执行频率由计划管理。系统作业在 control plane 上运行,因为它们运行与数据库交互的管理命令。这些工作负载包括关键平台活动。减少系统作业的频率,或增加作业保留数据的天数可能会降低数据库性能。通常,我们建议尽可能多地保留几天的数据,并使用外部日志记录功能进行长期审计数据存储。在数据库中存储更多数据可能会使扫描大型表的昂贵的查询更加昂贵。