プライマリ インスタンスまたはセカンダリ インスタンスを手動でフェイルオーバーする

このドキュメントでは、プライマリ インスタンスまたはセカンダリ インスタンスを手動でフェイルオーバーする方法について説明します。

プライマリ インスタンスとセカンダリ インスタンスの高可用性

AlloyDB for PostgreSQL は、プライマリ インスタンスとセカンダリ インスタンスの両方で高可用性をサポートしています。

プライマリ インスタンスの高可用性

高可用性(HA)を確保するため、すべての AlloyDB プライマリ インスタンスには、異なるゾーンに配置されたアクティブ ノードとスタンバイ ノードの両方があります。アクティブ ノードが使用できなくなった場合、AlloyDB はプライマリ インスタンスをスタンバイ ノードに自動的にフェイルオーバーし、新しいアクティブ ノードにします。

アクティブ ノードが想定どおりに動作している場合でも、プライマリ インスタンスをスタンバイ ノードに手動でいつでもフェイルオーバーできます。手動フェイルオーバーを開始すると、AlloyDB は次の処理を行います。

  1. プライマリ ノードをオフラインにします。

  2. スタンバイ ノードを新しいアクティブ ノードに変換します。

  3. 以前のアクティブ ノードを新しいスタンバイ ノードとして再び有効にします。

手動フェイルオーバーでは、プライマリ インスタンスのノードのアクティブ ロールとスタンバイ ロールが入れ替わります。この交換を必要をする際にはいつでも、手動フェイルオーバーをトリガーできます。

たとえば、アクティブ ノードとスタンバイ ノードがそれぞれ us-central1-a ゾーンと us-central1-b ゾーンにあるプライマリ インスタンスがあるとします。us-central1-a の停止により自動フェイルオーバーがトリガーされ、us-central1-b ゾーンがアクティブ ノードをホストします。アクティブ ノードを us-central1-a ゾーンに保持する場合は、手動フェイルオーバーを開始して、AlloyDB がプライマリ インスタンス ノードを停止前のロケーションに戻すようにします。

メンテナンス オペレーション中、HA プライマリ インスタンスと基本インスタンスでは、通常、メンテナンス ダウンタイムは 1 秒未満の最小限に抑えられます。手動フェイルオーバーは意図的で制御された手順であるため、予期しないハードウェアやネットワーク障害をシミュレートするためのものではありません。代わりに、フォールト インジェクションを使用してプライマリ インスタンスの高可用性をテストできます。

セカンダリ インスタンスの高可用性

AlloyDB では、セカンダリ インスタンスで HA が提供されるため、障害復旧をサポートし、セカンダリ インスタンスが使用できなくなったときのダウンタイムを短縮できます。

デフォルトでは、HA はセカンダリ インスタンスに構成されます。

AlloyDB セカンダリ インスタンスには、次のノードが含まれます。

  • リクエストに応答するアクティブなセカンダリ ノード
  • スタンバイ セカンダリ ノード

アクティブ ノードとスタンバイ ノードは、リージョン内の 2 つの異なるゾーンに配置されます。AlloyDB がアクティブ ノードが使用できないことを検出すると、アクティブ ノードはスタンバイ ノードにフェイルオーバーして、新しいアクティブ ノードとして機能します。データは新しいアクティブ ノードに再ルーティングされます。このプロセスはフェイルオーバーと呼ばれます。

始める前に

  • 使用している Google Cloud プロジェクトで AlloyDB へのアクセスが有効になっている必要があります。
  • 使用している Google Cloud プロジェクトに、次のいずれかの IAM ロールが必要です。
    • roles/alloydb.admin(AlloyDB 管理者の IAM 事前定義ロール)
    • roles/owner(オーナーの IAM 基本ロール)
    • roles/editor(編集者の IAM 基本ロール)

    これらのロールが付与されていない場合は、アクセス権を付与するよう組織管理者に依頼してください。

プライマリ インスタンスで手動フェイルオーバーを実行する

コンソール

  1. [クラスタ] ページに移動します。

[クラスタ] に移動

  1. [リソース名] 列で、クラスタ名をクリックします。

  2. [クラスタ内のインスタンス] セクションで、プライマリ インスタンスの [インスタンスの操作メニュー] を開きます。

  3. [フェイルオーバー] をクリックします。

  4. 表示されるダイアログで、インスタンスの ID を入力します。

  5. [フェイルオーバーをトリガー] をクリックします。

gcloud

gcloud alloydb instances failover コマンドを実行します。

gcloud alloydb instances failover INSTANCE_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID

次のように置き換えます。

  • INSTANCE_ID: インスタンスの ID。
  • REGION_ID: インスタンスが配置されるリージョン。
  • CLUSTER_ID: インスタンスが配置されているクラスタの ID。
  • PROJECT_ID: クラスタが配置されるプロジェクトの ID。

フェイルオーバーが機能したことを確認する手順は次のとおりです。

  1. フェイルオーバーを実行する前に、プライマリ インスタンスのノードのゾーンをメモします。

  2. フェイルオーバーを実行したら、2 つのノードの新しいゾーンをメモします。

  3. アクティブ ノードとスタンバイ ノードのゾーンが入れ替わっていることを確認します。

セカンダリ インスタンスで手動フェイルオーバーを実行する

セカンダリ インスタンスを手動でフェイルオーバーする手順は、プライマリ インスタンスを手動でフェイルオーバーする手順と似ています。

セカンダリ クラスタを手動でフェイルオーバーする手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで [クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列でセカンダリ クラスタの名前をクリックします。

  3. [概要] ページで、[クラスタ内のインスタンス] セクションに移動し、セカンダリ インスタンスを選択して [フェイルオーバー] をクリックします。

  4. 表示されたダイアログでインスタンスの ID を入力し、[フェイルオーバーをトリガー] をクリックします。

gcloud

gcloud CLI を使用するには、Google Cloud CLI をインストールして初期化するか、Cloud Shell を使用します。

gcloud alloydb instances failover コマンドを使用して、セカンダリ インスタンスのスタンバイへの強制フェイルオーバーを行います。

 gcloud alloydb instances failover SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --project=PROJECT_ID

次のように置き換えます。

  • SECONDARY_INSTANCE_ID: フェイルオーバーするセカンダリ インスタンスの ID。
  • SECONDARY_CLUSTER_ID: セカンダリ インスタンスが関連付けられているセカンダリ クラスタの ID。
  • REGION_ID: セカンダリ インスタンスのリージョンの ID。例: us-central1
  • PROJECT_ID: セカンダリ クラスタのプロジェクトの ID。

次のステップ