スイッチオーバーとフェイルオーバー
Zilliz Cloud のグローバルクラスターでは、プライマリークラスターをホストするリージョンを変更する 2 つの操作がサポートされています。
-
スイッチオーバー: 同期されたセカンダリークラスターをプライマリーに昇格させる、計画されたゼロデータ損失の操作です。
-
フェイルオーバー: プライマリーリージョンで障害が発生した際に、セカンダリークラスターをプライマリーに昇格させる緊急復旧操作です。
このページでは、各操作の使用時期、実行方法、および操作中・操作後の挙動について説明します。
この機能は、ビジネスクリティカル プロジェクト内の Dedicated クラスターでのみ利用可能です。
概要
スイッチオーバーとフェイルオーバーの違い
以下の表は、2 つの操作を比較したものです。
スイッチオーバー | フェイルオーバー | |
|---|---|---|
使用時期 | 計画された操作:リージョンのローテーション、コンプライアンス要件、データレジデンシーの変更。 | プライマリーリージョンにおける予期せぬ停止または障害。 |
トリガー | すべてのプライマリーおよびセカンダリークラスターが実行中である場合に手動で開始されます。 | プライマリークラスターが異常状態になった際の復旧アクションとして手動で開始されます。 |
データ損失 (RPO) | 0 — データ損失はありません。完全なデータ同期が完了した後にのみ昇格が行われます。 | フェイルオーバー時点での同期遅延時間に相当します。 |
ダウンタイム (RTO) | ほぼゼロ。グローバルエンドポイントが自動的に再ルーティングされます。 | 通常、数分程度です。 |
前提条件 |
|
|
旧プライマリークラスターの扱い | セカンダリークラスターに降格されます。 | 破棄され、リサイクルビンに移動されます。新しいセカンダリーが自動的に作成されます。 |
アプリケーションの変更 | グローバルエンドポイントを使用している場合は不要です。ルーティングは自動的に更新されます。詳細については、Connect to グローバルクラスター をご覧ください。 | グローバルエンドポイントを使用している場合は不要です。ルーティングは自動的に更新されます。詳細については、Connect to グローバルクラスター をご覧ください。 |
クラステータスの遷移
以下の図は、スイッチオーバー、フェイルオーバー、および自動復旧操作中にクラスターステータスがどのように変化するかを示しています。

-
スイッチオーバー:
-
スイッチオーバーにより、ターゲットとなるセカンダリーが現在のプライマリーと同期している間、クラスターの状態は RUNNING から SWITCHING に遷移します。同期が完了すると、ターゲットのセカンダリーが新しいプライマリーに昇格し、元のプライマリーはセカンダリーに降格します。両方のクラスターは新しい役割で RUNNING に戻ります。
-
タイムアウト期間内に同期が完了しない場合、スイッチオーバーはロールバックされます。両方のクラスターは元の役割を保ったまま RUNNING に戻ります。
-
-
フェイルオーバー:
-
障害や停止によりプライマリークラスターが ABNORMAL 状態になると、フェイルオーバーをトリガーできます。ターゲットのセカンダリーが新しいプライマリーに昇格し、旧プライマリーは破棄されてリサイクルビンに移動されます。
-
フェイルオーバーが完了すると、Zilliz Cloud は自動的に新しいセカンダリークラスターを作成して完全なトポロジーを復元します。新しいセカンダリーおよび残りのすべてのセカンダリークラスターは CREATING 状態で開始され、プロビジョニングとデータ同期が完了すると RUNNING に遷移します。作成に失敗した場合、クラスターは REBUILD_FAILED 状態になります。再構築を再試行するか、お問い合わせ ください。
-
フェイルオーバー自体が失敗した場合、クラスターは ABNORMAL 状態のままになります。フェイルオーバーを再試行するか、お問い合わせ ください。
-
-
自動復旧:
プライマリークラスターの問題が自然に解決された場合、クラスターは手動介入なしに ABNORMAL から RUNNING に戻ります。この場合、フェイルオーバーは不要です。
スイッチオーバーの実行
計画されたリージョンのローテーションのために、セカンダリークラスターをプライマリー役割に昇格させるスイッチオーバーを実行できます。
開始前の準備
-
グローバルクラスター内のすべてのクラスターが RUNNING 状態である必要があります。
-
同期遅延は 30 秒以下である必要があります。この閾値を超えた場合、スイッチオーバーは拒否されます。グローバルトポロジー タブで遅延を確認してください。
-
Query CU またはレプリカの スケール 操作が進行中であってはなりません。
手順
以下のデモは、スイッチオーバーの実行方法を示しています。
グローバルクラスター ページに移動します。
スイッチオーバー or フェイルオーバー をクリックします。
昇格させるターゲットのセカンダリークラスターを選択します。
スイッチオーバーを選択します。
ダイアログで操作を確認します。
スイッチオーバーを開始すると、Zilliz Cloud はターゲットのセカンダリーが現在のプライマリーと完全に同期するのを待ち、その後それを新しいプライマリーに昇格させます。
スイッチオーバー後
-
元のプライマリーはセカンダリークラスターになり、新しいプライマリーから複製されたデータの受信を開始します。
-
グローバルエンドポイントのルーティングが自動的に更新され、書き込みが新しいプライマリーに向けられます。
-
新しい グローバルトポロジー ビューを確認できます。すべてのクラスターは RUNNING 状態に戻るはずです。
-
新しいプライマリークラスターでバックアップポリシーを再設定してください。バックアップポリシーは自動的に新しいプライマリーに引き継がれません。
フェイルオーバーの実行
プライマリーリージョンで停止が発生し、プライマリークラスターが ABNORMAL 状態にある場合にフェイルオーバーを使用します。
フェイルオーバーは緊急操作です。スイッチオーバーとは異なり、完全なデータ同期を待ちません。プライマリーでコミットされたが、ターゲットのセカンダリーにまだ複製されていない書き込みは失われます。データ損失量は、フェイルオーバー時点での同期遅延時間に相当します。
開始前の準備
-
プライマリークラスターが到達不能であり、ABNORMAL 状態であることを確認します。
-
昇格させるセカンダリークラスターを特定します。複数のセカンダリーが利用可能な場合は、同期遅延が最も小さい(プライマリーの最新状態に最も近い)ものを選択します。
手順
以下のデモは、フェイルオーバーの実行方法を示しています。
グローバルクラスター ページに移動します。
スイッチオーバー or フェイルオーバー をクリックします。
昇格させるターゲットのセカンダリークラスターを選択します。
フェイルオーバーを選択します。
ダイアログで操作を確認します。
フェイルオーバーが失敗した場合、クラスターは ABNORMAL 状態のままになります。フェイルオーバー操作を再試行するか、サポートチケットを作成してください。
フェイルオーバー後
-
元のプライマリーは破棄され、リサイクルビンに移動されます。もはや グローバルトポロジー ビューには表示されません。
-
完全なグローバルトポロジーを復元するために、新しいセカンダリークラスターが自動的に作成されます。新しいセカンダリーのプロビジョニング中は、グローバルトポロジーからは見えません。代わりに、グローバルクラスターページにバナーが表示されます:"新しいセカンダリークラスターが作成され、まもなく利用可能になります。"
-
残りのセカンダリークラスターも再構築のために CREATING 状態に遷移し、再構築が完了すると RUNNING になります。
-
グローバルエンドポイントが更新され、書き込みが新しいプライマリーに向けられます。
-
新しいプライマリークラスターでバックアップポリシーを再設定してください。バックアップポリシーは自動的に新しいプライマリーに引き継がれません。
ルーティング動作
以下の表は、各操作中および操作後にグローバルエンドポイントとパブリックエンドポイントがどのように動作するかをまとめたものです。
エンドポイントタイプ | スイッチオーバー中 | フェイルオーバー中 | 完了後 |
|---|---|---|---|
グローバルエンドポイント |
|
|
|
パブリックエンドポイント |
|
|
|
進行中のタスクへの影響
以下の表は、スイッチオーバーおよびフェイルオーバー中に進行中のタスクがどのように処理されるかをまとめたものです。
タスク | スイッチオーバー中 | フェイルオーバー中 |
|---|---|---|
バックアップ | タスクは失敗します。スイッチオーバー完了後、新しいプライマリーで自動的に再試行されます。 | タスクは失敗します。フェイルオーバー完了後、新しいプライマリーで自動的に再試行されます。 |
Query CU スケーリング | スケーリングが進行中の間、スイッチオーバーはブロックされます。 | タスクは失敗します。フェイルオーバー完了後に再試行されます。 |
レプリカスケーリング | スケーリングが進行中の間、スイッチオーバーはブロックされます。 | タスクは失敗します。フェイルオーバー完了後に再試行されます。 |