IBM Cloud Docs
复制故障转移

复制故障转移

如果源文件共享变为不可用,那么故障转移到副本文件共享将使数据可用。 故障转移会切换复制关系,以便副本文件共享成为源文件共享,而源共享成为只读副本文件共享。

复制故障转移概念

创建副本文件共享时,副本将根据复制调度从源文件共享中提取数据。 副本文件共享上的数据设置为只读。 故障转移会切换复制关系。 只读副本文件共享将成为读/写源文件共享,而原始共享将成为只读共享。 现在,您可以安装活动文件共享并将其作为常规文件共享进行管理。

启动故障转移时,可以选择在故障转移操作失败或超时时发生的情况。 默认超时为 5 分钟。

  • 如果您决定保留复制关系,那么系统将“回退”到源共享。 即使操作失败,系统也会尝试在下一个计划时间再次复制数据。 当调度主站点进行 例程维护 时,可以使用此选项。 当维护完成且站点再次稳定时,您可以回退到原始共享。 可以恢复复制。

  • 如果您决定除去复制关系,那么系统会将两个文件共享分割开,并使它们成为独立的读/写文件共享。 当尽快启动应用程序更重要时,此选项可用于 灾难恢复 情境中的故障转移。 因此您可以在副本站点上继续正常操作,而原始站点的未来是不确定的。

在对源或副本文件共享执行另一操作 (例如,正在扩展文件共享大小) 时,无法执行故障转移操作或副本分割。 拆分或故障转移操作继续挂起,直到其他操作完成。

故障转移状态 在操作正在进行或服务正在等待另一个操作完成时显示 failover_pending

例程维护的故障转移

将故障转移用于主站点上的例程维护,或者在站点出现问题时使用故障转移。 流程如下

  • 区域 A 中的源文件共享拒绝所有读和写操作。 然后,系统尝试将共享数据的最终副本拉取到区域 B 中的副本共享。
  • 将数据复制到副本文件共享,这将变为读/写,并被视为新的源站点。 (复制关系相反)
  • 服务尝试按调度将数据从区域 B 中的活动源复制到区域 A 中的原始共享。 如果数据传输失败,那么系统会在下一次调度的复制时间再次尝试。
  • 当维护完成并且站点再次稳定时,您可以回退到原始共享。 或者,可以保留副本共享作为源共享。

灾难恢复情境中的故障转移

故障转移也是灾难恢复的一个选项。 如果已确认原始站点不可用,并且需要尽快在副本位置上启动应用程序,请选择删除复制关系。 删除复制关系是启动故障转移时备用策略的一个选项。 灾难恢复的故障转移按以下方式工作:

  • 源站点上的文件共享会拒绝所有读和写操作,并且系统会尝试将共享数据的最终副本拉取到副本文件共享。
  • 当数据拉出超时并失败时,文件服务会中断复制关系。 副本文件共享变为读/写,并作为独立文件共享运行。 可以将其作为常规文件共享进行安装和管理。
  • 无法重新建立复制关系。 但是,当站点再次变为可操作时,您可以在原始站点上设置新副本。

由于灾难恢复故障转移的性质,您可能会发现最新数据集未被复制。 在这种情况下,当源文件共享再次可用时,您可能需要手动协调应用程序的状态。 如果源文件共享区域再次变为可用,那么可从副本共享获取数据,以便从事件发生时到恢复点进行协调。

限制

执行故障转移时,这些限制适用。

  • 成功故障转移的缺省超时为 5 分钟。 您可以在 启动故障转移 选项时修改此值。

  • 当对源文件共享执行其他操作 (例如,扩展共享大小) 时,故障转移仍处于暂挂状态。 操作完成后,将恢复故障转移。

在控制台中启动故障切换

  1. 浏览至所有文件共享的列表。 在 IBM Cloud 控制台中,单击导航菜单图标菜单图标 > 基础架构 VPC 图标 > 存储 > 文件存储共享

  2. 单击副本文件共享的名称以打开其详细信息页面。

  3. 操作 菜单 "操作" 图标 中,选择 执行故障转移。 在故障转移之前,将执行文件的最终同步,以确保故障转移共享具有最新内容。 故障转移完成后,副本文件共享将成为新的源文件共享。 先前的源共享将成为新的只读副本共享。

  4. 要设置超时值,请选中 超时 (可选) 下的框并指定时间值。 此值指定完成故障转移的绝对时间限制。 根据您可以使文件共享脱机的时间设置超时。

  5. 故障转移策略下,如果故障转移操作未成功或超时,请选择保留复制关系或对其进行更改:

    • 保留复制关系-不会对副本文件共享或源文件共享进行任何更改。
    • 除去复制关系-此操作将创建两个单独的读/写文件共享。 由于关系已中断,因此对一个文件共享的更改不会影响另一个文件共享。

    你断了关系之后,就不能重新建立了。

  6. 单击 执行故障转移。 将显示指示已请求故障转移并且正在执行故障转移的消息。

文件共享详细信息页面已更新,复制关系将副本文件共享显示为新的源文件共享。

从 CLI 启动故障转移

在使用 CLI 之前,您必须安装 IBM Cloud CLI 和 VPC CLI 插件。 有关更多信息,请参阅 CLI 先决条件

  1. 通过使用 ibmcloud is shares 命令列出区域中的所有文件共享,找到要故障转移到的副本文件共享

    ibmcloud is shares
    
    Listing shares in all resource groups and region us-south under account Test Account as user test.user@ibm.com...
    ID                                          Name                    Lifecycle state   Zone         Profile   Size(GB)   Resource group   Replication role   Accessor binding role   Snapshot count   Snapshot size   
    r006-a8d6af48-0c97-4c6b-bab1-fbefdc1e1e03   my-file-share           stable            us-south-2   dp2       10         defaults         none               none                    0                0   
    r006-aaf4bfe9-358c-4faa-a4ec-0b955090b940   my-file-share-2         stable            us-south-2   dp2       10         defaults         none               none                    0                0   
    r006-a60bfa90-a893-40ad-be34-28ab51a963f9   replica-dal-2           stable            us-south-2   dp2       10         defaults         replica            none                    0                0   
    r006-3f21e3c3-e12d-425f-ab77-810cabfde8df   source-dal-1            stable            us-south-1   dp2       10         defaults         source             none                    0                0   
    r006-455b601c-8fc1-4476-8771-4708c49c8ef7   my-replica-share-dal-1  stable            us-south-1   dp2       10         defaults         replica            none                    0                0   
    r006-4dadac27-cd17-42df-a5fe-1388705d33e0   my-source-share-dal-2   stable            us-south-2   dp2       10         defaults         source             none                    0                0   
    
    
  2. 运行 ibmcloud is share-replica-failover 命令并指定 fallback-policy 属性。 可以为此属性指定 failsplit

    • 以下示例为 fallback-policy 属性指定 fail。 如果故障转移操作失败或达到超时,那么故障转移操作将失败。 源共享保持活动状态,复制将按计划恢复。
    ibmcloud is share-replica-failover r006-a60bfa90-a893-40ad-be34-28ab51a963f9 --fallback-policy fail
    
    The file share r006-a60bfa90-a893-40ad-be34-28ab51a963f9 failover request was accepted under account Test Account as user test.user@ibm.com...
    The file share failover request was accepted.
    
    • 以下示例为 fallback-policy 属性指定 split。 如果故障转移操作失败,那么将从源文件共享拆分副本共享。 如果故障转移失败,那么结果是两个独立的读/写文件共享。
    ibmcloud is share-replica-failover my-source-share-dal-2 --fallback-policy split
    
    The file share r006-4dadac27-cd17-42df-a5fe-1388705d33e0 failover request was accepted under account Test Account as user test.user@ibm.com...
    The file share failover request was accepted.
    

有关命令选项的更多信息,请参阅 ibmcloud is share-replica-failover

使用 API 启动故障转移

发出 POST /shares/{share_id}/failover 请求并指定 timeoutfallback_policy 属性。 最小超时为 300 秒,最大超时为 3600 秒。 此请求启动源文件共享到副本共享 (由副本文件共享标识指定) 的故障转移。

fallback_policy 属性可以具有以下值: splitfail。 指定 fail 时,如果故障转移操作失败或达到超时,那么故障转移操作将失败。 复制关系保持不变。

如果对 fallback_policy 属性指定 split,那么每当故障转移操作失败时,将从源共享拆分副本共享。 结果是两个独立的读/写文件共享。 在这种情况下,由于最终文件同步未完成,因此副本共享可能不包含源文件共享的所有数据。 如果已知无法访问源文件共享,请将此选项用于灾难恢复。

如果未在请求中指定 fallback_policy 属性,那么当故障转移操作失败时,系统缺省为 split

此示例为 fallback_policy 属性指定 failtimeout 属性是可选的。 可以使用默认超时。

curl -X POST \
"$vpc_api_endpoint/v1/shares/$replica_id?/failover?version=2023-08-08"\
-H "Authorization: $iam_token"\
-d '{
     "fallback_policy": "fail",
      "timeout": 600
    }'

成功响应指示已接受文件共享故障转移请求。

您可以使用 API 来验证复制故障转移是否成功,暂挂或失败。 发出 GET /shares/{replica_id} 调用。 查看 latest_job 属性。 有关更多信息,请参阅 使用 API 验证复制

使用 Terraform 启动故障转移

执行故障转移时,副本共享将成为源,而源共享将成为副本。 需要修改 Terraform 配置以匹配此更改。 fallback_policy 定义在接受故障转移请求但无法执行或超时时要采取的操作。 接受的值为 splitfail。 如果指定 split 并且故障转移失败,那么系统将中断复制关系,并且两个文件共享将彼此独立。

resource "ibm_is_share_replica_operations" "test" {
  share_replica = ibm_is_share.replica.id
  fallback_policy = "split"
  timeout = 500
}

有关自变量和属性的更多信息,请参阅 ibm_is_share_replica_operations

后续步骤

管理复制