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

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

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

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 がアクティブ ノードの可用性の欠如を検出すると、アクティブ ノードはスタンバイ ノードにフェイルオーバーし、新しいアクティブ ノードとして機能します。データは新しいアクティブ ノードに再ルーティングされます。このプロセスはフェイルオーバーと呼ばれます。failover

始める前に

  • 使用している 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。

次のステップ