このページでは、フェイルオーバー Cloud SQL の障害タイプを使用したテスト中に発生する内容について説明します。
フェイルオーバー Cloud SQL の障害の仕組み
フェイルオーバー Cloud SQL の障害は、Cloud SQL Admin API の failover メソッドを呼び出して、Cloud SQL インスタンスの高可用性(HA)フェイルオーバーをトリガーします。この障害の目的は、プライマリ Cloud SQL
インスタンスが同じリージョン内の別のゾーンのスタンバイ インスタンスに移行したときに、サービスの動作と復元力をテストできるようにすることです。
この障害のターゲットは Cloud SQL インスタンスです。
テストの実行中に発生する内容
テストが 状態を遷移するにつれて、 関連するリソースは次のように変化します。
リソース |
|
|
|
インスタンス |
なし |
HA スタンバイ インスタンスをプロモートする |
該当なし |
HA フェイルオーバーの検証と再試行
Fault Injection Testing バックエンドは、フェイルオーバーを開始する前に検証チェックを実行して、環境が適切であることを確認します。このプロセスは、sqladmin.instances.failover API 呼び出しを Cloud SQL コントロール プレーンに送信する前の INJECTING ステージで行われます。
- システムは、Cloud SQL インスタンス
の状態が
RUNNABLEであることを確認します。実行中のテスト中にインスタンスが別の状態になった場合、Fault Injection Testing から通知が届きます。 cloudsql.googleapis.com/database/available_for_failover指標がTRUEであることを確認します。
これらの条件が満たされない場合、フェイルオーバー リクエストは再試行のためにキューに登録されます。
障害対応
フェイルオーバーがすでに進行中であるか、エラーが発生した場合:
- 挿入中: フェイルオーバー呼び出しが Cloud SQL コントロール プレーンによって拒否された場合(スタンバイ インスタンスが正常でない場合など)、テストは
STOPPING状態に移行します。 - フェイルオーバー後のモニタリング: フェイルオーバー オペレーションが事前に設定された 10 分以内に
DONEステータスに達しない場合、Fault Injection Testing バックエンドはオペレーション エラーをクエリし、テストをSTOPPING状態に移行して、テストでエラーが発生したことを示します。
Fault Injection Testing は、信頼できる情報源として Cloud SQL コントロール プレーンに依存しています。スタンバイ インスタンスが正常でない場合、コントロール プレーンはフェイルオーバー試行を拒否します。Fault Injection Testing では、拒否後に自動再試行を試みるのではなく、事前チェックとステータス モニタリングを使用して、このような障害を回避または報告します。
手動フェイルバック
フェイルオーバーはステートフルな変更であるため、テストを停止しても、元のプライマリ インスタンスに自動的にフェイルバックされません(REVERTING
ステージの「該当なし」で示されています)。データベースはセカンダリ ゾーンで引き続き実行されます。
テストが完了した後、インスタンスを元のゾーンに戻すには、手動で別のフェイルオーバーを開始する必要があります。これには、 Google Cloud コンソールまたは
gcloud CLI を使用します。