跳到主要内容

DisasterOperation

DisasterOperation 是长流程动作的统一载体。用户点击一次按钮,Server 通常会创建一个 DisasterOperation,operator 再按步骤执行。

Failover 流程图

可编辑图源:failover-flow.excalidraw

操作类型

支持的 operationType 包括:

  • failover
  • reprotect
  • pause
  • resume
  • synconce
  • syncdata
  • syncresource
  • undo
  • cancel
  • drill
  • drill-cleanup

操作状态

status.state 包括:

  • Pending
  • Running
  • Completed
  • Failed

status.steps 记录每个步骤的名称、状态、开始时间、完成时间和 message。

Failover 步骤

默认步骤:

  1. PreCheck
  2. PauseSchedules
  3. FinalSync
  4. ScaleDownSource
  5. ScaleUpTarget
  6. CheckReplicas
  7. SwitchRoles

当前实现将 FinalSync 放在 ScaleDownSource 前,原因是源端 Pod 仍运行时更适合读取文件系统备份数据;之后再缩容源端以降低脑裂风险。

补偿

当 failover 在关键步骤失败时,状态机会根据失败位置进入自动补偿分支,例如直接回滚或创建 cancel 路径。补偿状态通过 autoCancelStatusautoCancelModeautoCancelTriggerStep 等字段观察。