Cloud SQL のフェイルオーバー障害のリファレンス

このページでは、フェイルオーバー Cloud SQL の障害タイプを使用したテスト中に発生する内容について説明します。

フェイルオーバー Cloud SQL の障害の仕組み

フェイルオーバー Cloud SQL の障害は、Cloud SQL Admin API の failover メソッドを呼び出して、Cloud SQL インスタンスの高可用性(HA)フェイルオーバーをトリガーします。この障害の目的は、プライマリ Cloud SQL インスタンスが同じリージョン内の別のゾーンのスタンバイ インスタンスに移行したときに、サービスの動作と復元力をテストできるようにすることです。

この障害のターゲットは Cloud SQL インスタンスです。

テストの実行中に発生する内容

テストが 状態を遷移するにつれて、 関連するリソースは次のように変化します。

リソース

PREPARING

INJECTING

REVERTING

インスタンス

なし

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 を使用します。