複製のフェイルオーバー

フェイルオーバーにより、レプリケーションの役割が切り替わります。 レプリカが読み書き可能なソースとなり、元のソースは読み取り専用となることで、障害発生時にもデータの可用性が維持されます。

複製フェイルオーバーの概念

レプリカファイル共有を作成すると、レプリカはレプリケーションスケジュールに基づいて、ソースファイル共有からデータを取得します。 レプリカ・ファイル共有上のデータは読み取り専用に設定されます。 フェイルオーバーにより、複製関係が切り替えられます。 読み取り専用レプリカ・ファイル共有は読み取り/書き込みソース・ファイル共有になり、元の共有は読み取り専用になります。 これで、アクティブ・ファイル共有をマウントし、通常のファイル共有として管理することができます。

フェイルオーバーを開始するときに、フェイルオーバー操作が失敗またはタイムアウトになった場合の動作を選択できます。 デフォルトのタイムアウトは5分です。

  • 複製関係を保持することにした場合、システムはソース共有に「フォールバック」します。 操作が失敗しても、システムは次の予定時刻に再度データの複製を試みる。 このオプションは、1 次サイトが 定期保守 用にスケジュールされている場合に使用できます。 保守が完了し、サイトが再び安定したら、元の共有にフォールバックできます。 複製を再開できます。

  • 複製関係を削除することにした場合、システムは 2 つのファイル共有を分割し、それらのファイル共有は独立した読み取り/書き込みファイル共有になります。 このオプションは、アプリケーションをできるだけ迅速に始動することがより重要な場合に、 災害復旧 状況でのフェイルオーバーに使用できます。 そのため、レプリカ・サイトでは通常の操作を継続できますが、元のサイトの将来は不確定です。

ソースまたはレプリカのファイル共有に対して別の操作(たとえば、ファイル共有の容量拡張など)が実行されている間は、フェイルオーバー操作やレプリカの分割を行うことはできません。 スプリット操作またはフェイルオーバー操作は、もう一方の操作が完了するまでペンディングし続ける。

フェイルオーバー状況 には、操作の進行中、またはサービスが別の操作の完了を待機している間、 failover_pending が表示されます。

定期保守のフェイルオーバー

プライマリサイトでの定期メンテナンス時や、サイトに問題が発生した際には、フェイルオーバーを使用してください。 このプロセスは、以下のように機能します。

  • ゾーン A のソース・ファイル共用は、すべての読み取りおよび書き込み操作を拒否します。 次に、システムは、共有のデータの最終コピーをゾーン B のレプリカ共有にプルしようとします。
  • データはレプリカ・ファイル共有にコピーされます。レプリカ・ファイル共有は読み取り/書き込みになり、新しいソース・サイトと見なされます。 (複製関係は逆になります。)
  • サービスは、スケジュールに従って、ゾーン B のアクティブ・ソースからゾーン A の元の共有にデータを複製しようとします。 データ転送が失敗した場合、システムはスケジュールされた次の複製時刻に再試行します。
  • 保守が完了し、サイトが再び安定したら、元の共有にフォールバックできます。 あるいは、ソース共有としてレプリカ共有を保持することもできます。

災害復旧状態でのフェイルオーバー

フェイルオーバーは、災害復旧のオプションでもあります。 元のサイトが利用できないことが確認され、レプリカの場所でアプリケーションをできるだけ早く開始する必要がある場合は、レプリケーション関係を削除することを選択します。 レプリケーション関係の削除は、フェイルオーバーを開始するときのフォールバック・ポリシーのオプションです。 災害復旧のフェイルオーバーは、以下のように機能します。

  • ソース・サイトのファイル共有はすべての読み取りおよび書き込み操作を拒否し、システムは共有のデータの最終コピーをレプリカ・ファイル共有にプルしようとします。
  • データ・プルがタイムアウトになって失敗すると、ファイル・サービスは複製関係を中断します。 レプリカ・ファイル共有は読み取り/書き込みになり、独立ファイル共有として動作します。 通常のファイル共有としてマウントおよび管理することができます。
  • 複製関係を再確立できません。 ただし、サイトが再び操作可能になった場合は、元のサイトに新しいレプリカをセットアップすることができます。

災害復旧フェイルオーバーの性質上、最新のデータセットがコピーされなかった可能性があります。 その場合は、ソース・ファイル共有が再び使用可能になったときに、アプリケーションの状態を手動で調整することが必要になる可能性があります。 ソースファイルの共有ゾーンが再び利用可能になった場合、レプリカ共有からデータを取得し、インシデント発生時点から復旧時点までのデータを照合することができます。

制約事項

これらの制限は、フェイルオーバーの実行時に適用されます。

  • 正常なフェイルオーバーのデフォルトのタイムアウトは 5 分です。 この値は、 フェイルオーバーの開始 時に変更できます。

  • ソースのファイル共有に対して、共有サイズの拡張など、他の操作が行われている間は、フェイルオーバーは保留状態のままとなります。 操作が完了すると、フェイルオーバーが再開されます。

コンソールでフェイルオーバーを開始する

  1. すべてのファイル共有のリストにナビゲートします。 IBM Cloud コンソールで、 ナビゲーション メニューアイコン> インフラストラクチャVPC アイコン> ストレージ > ファイル ストレージ共有をクリックします。

  2. レプリカファイル共有の名前をクリックすると、その詳細ページが開きます。

  3. 「アクション」 メニュー 「アクション」アイコン から、 「フェイルオーバーの実行」 を選択します。 フェイルオーバーの前に、フェイルオーバー先の共有に最新のコンテンツが確実に反映されるよう、ファイルの最終同期が行われます。 フェイルオーバーが完了すると、レプリカ・ファイル共有が新しいソース・ファイル共有になります。 以前のソース共有は、新しい読み取り専用レプリカ共有になります。

  4. タイムアウト値を設定するには、 「タイムアウト (オプション)」 の下のボックスにチェック・マークを付け、時間値を指定します。 この値は、フェイルオーバーが完了するまでの絶対時間制限を指定します。 ファイル共有をオフラインにできる期間に基づいてタイムアウトを設定します。

  5. フェイルオーバー・ポリシーで、フェイルオーバー操作が成功しないかタイムアウトになる場合は、複製関係を保持するか変更するかを選択します。

    • 複製関係の維持 - レプリカ・ファイル共有またはソース・ファイル共有は変更されません。
    • レプリケーション関係を削除する - この操作により、2つの独立した読み取り専用および書き込み可能なファイル共有が作成されます。 関係が壊れているため、一方のファイル共有に対する変更が他方のファイル共有に影響を与えることはありません。

    一度関係を断ち切ってしまうと、それを元に戻すことはできません。

  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 プロパティーを指定します。 このプロパティーには、 fail または split を指定できます。

    • 以下の例では、 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 を指定しています。 フェイルオーバー操作が失敗した場合、レプリカ共有はソース・ファイル共有から分割されます。 フェイルオーバーが失敗した場合、結果は 2 つの独立した読み取り/書き込みファイル共有になります。
    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 要求を作成し、timeout プロパティーと fallback_policy プロパティーを指定します。 最小のタイムアウトは 300 秒で、最大のタイムアウトは 3600 秒です。 この要求は、レプリカ・ファイル共有 ID で指定されたレプリカ共有へのソース・ファイル共有のフェイルオーバーを開始します。

fallback_policy プロパティーの値は、 split または fail のいずれかです。 fail が指定されている場合、フェイルオーバー操作が失敗したり、タイムアウトに達したりすると、フェイルオーバー操作は失敗となります。 複製関係は変更されません。

fallback_policy プロパティーに split を指定すると、フェイルオーバー操作が失敗するたびに、レプリカ共有がソース共有から分割されます。 その結果、2つの独立した読み書き可能なファイル共有が作成されます。 この場合、最終的なファイルの同期が完了しなかったため、レプリカ共有にはソースファイル共有のすべてのデータが含まれていない可能性があります。 このオプションは、ソース・ファイル共有が到達不能であることが分かっている場合に災害復旧に使用します。

要求に fallback_policy プロパティーが指定されていない場合、フェイルオーバー操作が失敗すると、システムはデフォルトで split になります。

この例では、 fallback_policy プロパティーに fail を指定しています。 timeout プロパティーはオプションです。 デフォルトのタイムアウトを使用できます。

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 では、フェイルオーバー要求が受け入れられたものの、実行できない場合やタイムアウトした場合に実行するアクションを定義します。 受け入れられる値は、 split または fail です。 split を指定した場合、フェイルオーバーが失敗すると、システムは複製関係を中断し、2 つのファイル共有は相互に独立した状態になります。

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

引数および属性について詳しくは、 ibm_is_share_replica_operationsを参照してください。

次のステップ

複製の管理