复制故障转移

故障转移会切换复制角色。 副本成为读写源,而原始源则变为只读,从而在系统中断期间确保数据可用性。

复制故障转移概念

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

启动故障转移时,可以选择在故障转移操作失败或超时时发生的情况。 默认超时时间为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: Bearer $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

后续步骤

管理复制