跳转到主要内容

这是本节的多页打印视图。 .

返回本页常规视图.

批处理框架

说明

版本范围: SILO 20261109 与 mcli 20261109 实现了下述授权、Object Lock 与恢复规则。Server 20261026 不包含这些服务端规则,单独升级 mcli 也不会更新服务端作业执行逻辑。

概述

MinIO 批处理框架允许使用 YAML 格式的作业定义文件(“batch file”)来创建、管理、监控和执行作业。 批处理作业直接在 MinIO 部署上运行,从而利用服务端处理能力,而不受运行 MinIO Client 的本地机器限制。

一个批处理文件定义一个作业任务。

启动后,MinIO 会开始处理该作业。 完成所需时间取决于部署可用的资源。

普通作业故障遵循定义中的重试次数上限。SILO 20261109 区分授权拒绝与临时暂停,详见下文。

MinIO 批处理框架支持以下作业类型:

作业类型 说明
replicate 执行一次性复制流程,将数据从一个 MinIO 位置复制到另一个 MinIO 位置。
keyrotate 执行一次性流程,轮换对象上的 sse-s3 or sse-kms 加密密钥。
expire 对存储桶中的对象执行一次性立即过期操作。

SILO 20261109:授权与重试

SILO 20261109 在创建作业时将本地批处理操作绑定到已认证提交者,并在执行全程强制校验提交者的数据权限(#310、#311)。作业定义中的凭据仅用于授权远端连接,不会授予本地服务器权限。SILO 在每次执行动作前都会重新评估当前 IAM 状态:

  • 显式拒绝、凭据过期/禁用/撤销,或凭据密钥、会话令牌、父级身份发生变更时,作业会以 failureReason 结束。
  • 保留提交者凭据本身的身份元数据编辑(如描述或延后过期时间)与 LDAP 组刷新不会中断作业;每次检查都会重新解析当前状态、组与策略(#318–#320)。
  • 策略评估会跳过 IAM 映射仍引用但已删除的策略;依赖后台作业无法获取的请求上下文的 Allow 语句不会授予任何权限,仅当可能适用的 Deny 语句需要批处理执行无法提供的请求时上下文时才拒绝该作业(#318–#320)。
  • 批处理作业在过期、密钥轮换与拉取复制中均保留 Object Lock 保护,跳过受保留期或法定保留保护的版本而非绕过保护;当仍有受保护版本或被拒绝键留存时,作业终态为 complete-with-skips(#310、#311)。
  • 多存储池 keyrotate 作业按目标存储池限定复制操作范围,使其他存储池中的对象副本保持可读(#312)。

IAM 尚未加载、策略资料暂时不可用、授权插件无法给出有效决定,都属于临时故障。提交阶段无法决定授权时返回 503。过期和密钥轮换作业通过 pausedReason 记录暂停,保留已完成进度,并在当前进程内通过有上限的指数退避与随机抖动重试(#313)。列举在开始时或流中途失败,也会暂停这两类作业。密钥轮换选中的源位于正在迁移的存储池时先暂停,冲突解除后继续。每次重试都会重新解析当前身份与权限。等待或暂停的作业不是完成或失败报告,不会被终态报告清理器删除。管理员取消优先于队列和重试。

Push、Pull 和 Snowball 复制作业在必要的授权依赖或报告读取暂时不可用时(包括对象处理过程中发生的故障)也会通过 pausedReason 进入暂停,并在重试时从头重新扫描源端(#324);详见批量复制。复制中途的其他故障遵循作业定义中的有限对象重试上限,可能以失败结束。

启动发现作业时,清单列举或存储读取失败会按有上限的退避重试(#314),并恢复未完成作业(包括运行中的复制作业,#324)。发现过程会记住当前轮次已经入队的清单,避免后续扫描重新执行在等待期间已经结束的作业;取消状态会阻止旧扫描结果重新入队。已经不存在、格式损坏或版本不受支持的清单不会入队,后两类保留在磁盘上供检查。启动发现期间的存储故障恢复后,无需再次重启即可继续发现作业。

已完成作业——包括已完成的 expire 过期作业(#315)、旧格式作业以及完成后提交者凭据过期或变更的作业——在服务重启后仍保持完成状态。来自不记录提交者绑定的旧版本、且尚未完成的作业需要重新提交。新绑定定义和已授权进度报告采用旧执行器会拒绝的格式。这可以阻止旧程序接管这些记录,但不能保证混合版本集群安全:旧节点仍能接收和执行自己的旧格式作业。切换版本前停止提交,并排空或取消旧作业;仍有等待执行的授权作业时不要降级。

20261109 升级与回退

此版本对批处理记录有意设置了格式边界:新作业清单使用 SILO-BATCH v2 封装,已授权的进度报告也使用 v2;20261026 不能执行或恢复这些记录。这不改变普通 S3 对象的格式,但批处理作业不能随二进制无缝降级。

  1. 升级前停止向所有节点提交新作业,用 mcli batch list ALIAS 和 mcli batch status ALIAS JOBID 盘点作业。等待运行中、等待中和暂停中的作业结束,或用 mcli batch cancel ALIAS JOBID 取消;保留原始 YAML 定义和已完成工作的记录。
  2. 升级全部节点后再恢复提交。旧格式未完成作业不会自动获得新授权绑定,需要用有相应数据权限的身份重新提交。先核对已完成的部分,避免重新扫描产生不需要的重复工作;旧作业已完成则无需重交。
  3. 混合版本期间不要运行批处理:旧节点仍能接收并执行自己的旧格式作业,不受新版本的提交者授权约束。
  4. 回退前同样停止提交,排空或取消全部新作业,包括暂停的作业。不要指望 20261026 接续新作业的进度,也不要手工剥除格式头或编辑授权记录。保留证据,在兼容版本上核对结果后再决定是否重交。

使用 mcli batch status(20261109)区分暂停、终态失败和仍有受保护工作未处理的完成结果。infraAdmin 仍有其他基础设施管理能力,这些作业检查不把该角色变成严格的数据隔离边界。

MinIO 批处理 CLI

mc batch 命令包括:

命令 说明
mc batch generate 为指定作业类型创建基础 YAML 格式模板文件。
mc batch start 根据批处理作业 YAML 定义文件启动批处理作业。
mc batch list 输出部署上当前正在进行的批处理作业列表。
mc batch status 输出服务器上作业事件的汇总信息。
mc batch describe 输出指定作业 ID 的作业定义。
mc batch cancel 停止正在进行的批处理作业。
说明

变更: mc RELEASE.2024-07-03T20-17-25Z

mc batch status 会显示活动且正在进行的作业,以及过去三(3)天内完成的任意批处理作业的汇总信息。

mc batch 的访问权限

提交身份需要相应的管理动作权限,以及作业需要的本地 数据权限。定义中的凭据还必须具备远端操作所需的权限。20261109 的具体规则见上文。

执行批处理作业的用户必须具有以下权限。 也可以通过阻止或限制对这些操作的访问,来限制用户使用这些功能:

admin:ListBatchJobs

授予用户查看当前正在处理的批处理作业的能力。

admin:DescribeBatchJob

授予用户查看当前正在处理的批处理作业定义详情的能力。

admin:StartBatchJob

授予用户启动批处理作业的能力。 该作业还可能受到其用于访问源部署或目标部署的凭证进一步限制。

admin:CancelBatchJob

允许用户停止当前正在进行的批处理作业。

可以将这些操作中的任意一个单独分配给用户,也可以任意组合分配。

内置的 ConsoleAdmin 策略包含执行所有这些类型批处理作业操作所需的充分访问权限。

Local 部署

可通过向 mc batch 命令传递一个 alias,对特定部署运行批处理作业。 命令中指定的部署会在该批处理作业的上下文中成为 local 部署。