外部パススルー ネットワーク ロードバランサのフェイルオーバーを構成する

このガイドでは、例を用いて、バックエンド サービスを使用する外部パススルー ネットワーク ロードバランサのフェイルオーバーを構成する方法について説明します。このガイドに進む前に、次の内容を理解しておいてください。

権限

このガイドを使用する前に、インスタンスを作成し、プロジェクト内のネットワークを変更しておく必要があります。そのためにはプロジェクトの所有者または編集者であるか、または次の Compute Engine IAM ロールをすべて持っている必要があります。

タスク 必要なロール
ロードバランサのコンポーネントの作成 ネットワーク管理者
ファイアウォール ルールの追加と削除 セキュリティ管理者
インスタンスの作成 Compute インスタンス管理者

詳細については、次のガイドをご覧ください。

設定

このガイドでは、フェイルオーバーを使用する外部パススルー ネットワーク ロードバランサを構成してテストする方法を説明します。このセクションでは、以下の構成方法について説明します。

  1. バックエンド VM:
    • ゾーン us-west1-a 内の非マネージド インスタンス グループ内の 1 つのプライマリ バックエンド
    • ゾーン us-west1-c 内の非マネージド インスタンス グループ内の 1 つのフェイルオーバー バックエンド
  2. バックエンド VM への受信接続を許可するファイアウォール ルール
  3. 接続をテストし、フェイルオーバーの動作を監視する 1 つのクライアント VM
  4. 次の外部パススルー ネットワーク ロードバランサのコンポーネント:
    • バックエンド サービスのヘルスチェック
    • バックエンド VM 間の接続分散を管理する us-west1 リージョン内のバックエンド サービス
    • ロードバランサのフロントエンド用の転送ルールと IP アドレス

この例のアーキテクチャは次のようになります。

外部パススルー ネットワーク ロードバランサを使用したフェイルオーバー。
外部パススルー ネットワーク ロードバランサを使用したフェイルオーバー(クリックして拡大)

バックエンド VM とインスタンス グループを作成する

この手順では、バックエンド VM と非マネージド インスタンス グループを作成します。

  • us-west1-a のインスタンス グループ ig-a は、2 つの VM を持つプライマリ バックエンドです。
    • vm-a1
    • vm-a2
  • us-west1-c のインスタンス グループ ig-c は、2 つの VM を持つフェイルオーバー バックエンドです。
    • vm-c1
    • vm-c2

プライマリ バックエンドとフェイルオーバー バックエンドは異なるゾーンに配置されることにより手順がわかりやすくなります。これにより、1 つのゾーンがダウンした際のフェイルオーバーが処理されます。

各プライマリ VM とバックアップ VM は、TCP ポート 80 で Apache ウェブサーバーを実行するように構成されています。デフォルトでは、Apache は任意の IP アドレスにバインドされます。ネットワーク ロードバランサは、宛先 IP を保持してパケットを配信します。

プライマリ VM とバックアップ VM で実行されているサーバー ソフトウェアによって、ロードバランサの転送ルールの IP アドレスがリッスンされるようにしてください。外部パススルー ネットワーク ロードバランサによってバックエンド VM に配信されるパケットの宛先 IP アドレスは、転送ルールの IP アドレスです。

手順を簡単にするため、すべてのプライマリ VM とバックアップ VM では Debian GNU / Linux 9 が実行されます。

Console

バックエンド VM の作成

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。[VM インスタンス] に移動
  2. 次の手順を繰り返し、4 つの VM を作成します。次の名前とゾーンの組み合わせを使用します。
    • 名前: vm-a1、ゾーン: us-west1-a
    • 名前: vm-a2、ゾーン: us-west1-a
    • 名前: vm-c1、ゾーン: us-west1-c
    • 名前: vm-c2、ゾーン: us-west1-c
  3. [インスタンスを作成] をクリックします。
  4. ステップ 2 に示したように [名前] を設定します。
  5. [リージョン] には、us-west1 を選択し、ステップ 2 に示したゾーンを選択します。
  6. [ブートディスク] セクションで、選択したイメージが Debian GNU/Linux 10 (buster) であることを確認します。必要に応じてイメージを変更するには、[選択] をクリックします。
  7. [詳細オプション] をクリックします。
  8. [ネットワーキング] をクリックして次のフィールドを構成します。
    1. [ネットワーク タグ] に「network-lb」と入力します。
  9. [管理] をクリックします。[起動スクリプト] フィールドに次のスクリプトを入力します。スクリプトの内容は 4 つの VM ですべて同じです。

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2
    
  10. [作成] をクリックします。

インスタンス·グループの作成

  1. Google Cloud コンソールの [インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. 次の手順を繰り返し、それぞれ 2 つの VM を持つ 2 つの非マネージド インスタンス グループを作成します。以下の組み合わせを使用します。

    • インスタンス グループ: ig-a、ゾーン: us-west1-a、VM: vm-a1vm-a2
    • インスタンス グループ: ig-c、ゾーン: us-west1-c、VM: vm-c1vm-c2
  3. [インスタンス グループを作成] をクリックします。

  4. [新しい非マネージド インスタンス グループ] をクリックします。

  5. ステップ 2 に示したように [名前] を設定します。

  6. [ロケーション] セクションで、[リージョン] に us-west1 を選択し、ステップ 2 で示したように [ゾーン] を選択します。

  7. [ネットワーク] に「default」と入力します。

  8. [VM インスタンス] セクションに、ステップ 2 で示した VM を追加します。

  9. [作成] をクリックします。

gcloud

  1. VM-NAMEZONE の 4 つの組み合わせを使用して、次のコマンドを 4 回実行して 4 つの VM を作成します。スクリプトの内容は 4 つの VM ですべて同じです。

    • vm-a1VM-NAMEus-west1-aZONE
    • vm-a2VM-NAMEus-west1-aZONE
    • vm-c1VM-NAMEus-west1-cZONE
    • vm-c2VM-NAMEus-west1-cZONE
    gcloud compute instances create VM-NAME \
        --zone=ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=network-lb \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    
  2. 各ゾーンに次の 2 つの非マネージド インスタンス グループを作成します。

    gcloud compute instance-groups unmanaged create ig-a \
        --zone us-west1-a
    gcloud compute instance-groups unmanaged create ig-c \
        --zone us-west1-c
    
  3. 適切なインスタンス グループに VM を追加します。

    gcloud compute instance-groups unmanaged add-instances ig-a \
        --zone us-west1-a \
        --instances vm-a1,vm-a2
    gcloud compute instance-groups unmanaged add-instances ig-c \
        --zone us-west1-c \
        --instances vm-c1,vm-c2
    

ファイアウォール ルールの構成

外部トラフィックがバックエンド インスタンスに到達できるようにファイアウォール ルールを作成します。

コンソール

  1. Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。

    [ファイアウォール ポリシー] に移動

  2. [ファイアウォール ルールを作成] をクリックして、任意の送信元からのトラフィックを許可するルールを作成します。次の値を使用します。

    1. 名前: allow-network-lb
    2. ネットワーク: default
    3. 優先度: 1000
    4. トラフィックの方向: 上り(内向き)
    5. 一致したときのアクション: 許可
    6. ターゲット: 指定されたターゲットタグ
    7. ターゲットタグ: network-lb
    8. ソースフィルタ: IPv4 の範囲
    9. 送信元 IPv4 範囲: 0.0.0.0/0。任意の送信元からのトラフィックが許可されます。これにより、外部トラフィックとヘルスチェック プローブの両方がバックエンド インスタンスに到達できるようになります。
    10. プロトコルとポート: [指定したプロトコルとポート] を選択します。[TCP] チェックボックスをオンにして、ポート「80」を入力します。
  3. [作成] をクリックします。

  4. [ファイアウォール ルールを作成] をもう一度クリックして、インスタンスへの受信 SSH 接続を許可するルールを作成します。次の値を使用します。

    1. 名前: allow-ssh
    2. ネットワーク: default
    3. 優先度: 1000
    4. トラフィックの方向: 上り(内向き)
    5. 一致したときのアクション: 許可
    6. ターゲット: 指定されたターゲットタグ
    7. ターゲットタグ: network-lb
    8. ソースフィルタ: IPv4 の範囲
    9. 送信元 IPv4 範囲: 0.0.0.0/0
    10. プロトコルとポート: [指定したプロトコルとポート] を選択します。[TCP] チェックボックスをオンにして、ポート「22」を入力します。
  5. [作成] をクリックします。

gcloud

gcloud compute firewall-rules create allow-network-lb \
    --target-tags network-lb \
    --allow tcp:80
gcloud compute firewall-rules create allow-ssh \
    --target-tags network-lb \
    --allow tcp:22

ロードバランサのコンポーネントを構成する

以下では、次の外部パススルー ネットワーク ロードバランサのコンポーネントを構成します。

  • ヘルスチェック: この例では、HTTP 200(OK)レスポンスを単純にチェックする HTTP ヘルスチェックを使用しています。

  • バックエンド サービス: サンプルでは、HTTP トラフィックがロードバランサに渡されるため、この構成では UDP ではなく TCP を指定します。フェイルオーバーの状態を示すバックエンド サービスのフェイルオーバー率の値は 0.75 です。

  • 転送ルール: この例では、転送ルールを 1 つ作成します。

コンソール

構成を開始する

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. [ロードバランサを作成] をクリックします。
  3. [ロードバランサの種類] で [ネットワーク ロードバランサ(TCP / UDP / SSL)] を選択し、[次へ] をクリックします。
  4. [プロキシまたはパススルー] で [パススルー ロードバランサ] を選択し、[次へ] をクリックします。
  5. [インターネット接続または内部] で [インターネット接続(外部)] を選択し、[次へ] をクリックします。
  6. [構成] をクリックします。

バックエンドの構成

  1. [Create external passthrough Network Load Balancer] ページで、新しいロードバランサの tcp-network-lb の [名前] を入力します。
  2. [バックエンドの構成] をクリックします。前に入力したロードバランサの名前が表示されますが、変更できません。
  3. [バックエンドの構成] をクリックして、次の変更を行います。
    1. [リージョン] で us-west1 を選択します。
    2. [バックエンド] で、[インスタンス グループ] プルダウン メニューを使用して [ig-a] を選択します。[完了] をクリックします。
    3. [バックエンドを追加] をクリックし、この手順を繰り返して ig-c を追加します。[このインスタンス グループをバックアップ用のフェイルオーバー グループとして使用する] チェックボックスを選択します。
    4. [ヘルスチェック] で、[ヘルスチェックを作成] または [別のヘルスチェックを作成] を選択して、次の情報を入力します。
      • 名前: hc-http-80
      • プロトコル: TCP
      • ポート: 80
    5. [保存して次へ] をクリックします。
    6. [詳細構成] をクリックします。
    7. [フェイルオーバー率] に「0.75」と入力します。
    8. 続行する前に、[バックエンドの構成] の隣に青いチェックマークがあることを確認します。

フロントエンドの構成

  1. [フロントエンドの構成] をクリックします。
  2. [名前] に「network-lb-forwarding-rule」を入力します。
  3. [IP] にあるプルダウン メニューをクリックして、[IP アドレスを作成] を選択します。
    1. [新しい静的 IP アドレスの予約] 画面で、名前に「network-lb-ip」と入力します。
    2. [予約] をクリックします。
  4. [単一] を選択して、ポート番号に「80」を入力します。
  5. [完了] ボタンをクリックします。

    [フロントエンドの設定] の左側にある青い丸のチェックマークが表示されていれば、設定に成功しています。

構成を確認する

  1. [確認と確定] ボタンをクリックして、ロードバランサのすべての構成設定を確認します。
  2. 設定が正しい場合は、[作成] をクリックします。ロードバランサの作成には数分かかります。

    [負荷分散] 画面で、新しいロードバランサの [バックエンド] 列に緑色のチェックマークが表示されていれば、新しく作成したロードバランサは正常な状態です。

gcloud

  1. ロードバランサに使用する静的外部 IP アドレスを作成します。

    gcloud compute addresses create network-lb-ip \
        --region us-west1
    
  2. 新しい HTTP ヘルスチェックを作成して、ポート 80 で VM との TCP 接続をテストします。

    gcloud compute health-checks create http hc-http-80 \
        --region us-west1 \
        --port 80
    
  3. HTTP トラフィックのバックエンド サービスを作成します。

    gcloud compute backend-services create network-lb-backend-service \
        --protocol tcp \
        --region us-west1 \
        --health-checks hc-http-80 \
        --health-checks-region us-west1 \
        --failover-ratio 0.75
    
  4. プライマリ バックエンドをバックエンド サービスに追加します。

    gcloud compute backend-services add-backend network-lb-backend-service \
        --region us-west1 \
        --instance-group ig-a \
        --instance-group-zone us-west1-a
    
  5. フェイルオーバー バックエンドをバックエンド サービスに追加します。

    gcloud compute backend-services add-backend network-lb-backend-service \
        --region us-west1 \
        --instance-group ig-c \
        --instance-group-zone us-west1-c \
        --failover
    
  6. バックエンド サービスの転送ルールを作成します。ステップ 1 で予約した IP アドレスをロードバランサの静的外部 IP アドレスとして使用します。

    gcloud compute forwarding-rules create network-lb-forwarding-rule \
        --region us-west1 \
        --load-balancing-scheme external \
        --address network-lb-ip\
        --ports 80 \
        --backend-service network-lb-backend-service
    

テスト

これらのテストでは、ロードバランサの構成を検証し、想定される動作を確認する方法を示します。

ロードバランサにトラフィックを送信する

この手順により、ロードバランサに外部トラフィックが送信されます。この手順は、後ほど他のテストを完了するために使用します。

  1. クライアント VM インスタンスに接続します。

    gcloud compute forwarding-rules describe network-lb-forwarding-rule \
        --region us-west1
    
  2. curl を使用して IP アドレスに接続するロードバランサへのウェブ リクエストを作成します。

    curl http://IP_ADDRESS
    
  3. curl コマンドを実行して戻された値の文字列をメモします。レスポンスを生成するバックエンド VM の名前が文字列内に表示されます(たとえば、Page served from: vm-a1)。

初期状態のテスト

サンプルのロードバランサを構成した後は、通常、4 つのバックエンド VM すべてが正常に動作するようになります。

  • 2 つのプライマリ VM(vm-a1vm-a2
  • 2 つのバックアップ VM(vm-c1vm-c2

テスト手順を行い、トラフィックをロードバランサに送信します。2 つ目のステップを数回繰り返します。想定される動作は、2 つのプライマリ VM(vm-a1vm-a2)が両方とも正常になりトラフィックが正常に提供されることです。このロードバランサでセッション アフィニティが構成されていないため、約半分のレスポンスが各プライマリ VM によって処理されます。

フェイルオーバーのテスト

このテストでは、vm-a1 の障害をシミュレートしてフェイルオーバーの動作を確認できます。

  1. vm-a1 VM に接続します。

    gcloud compute ssh vm-a1 --zone us-west1-a
    
  2. Apache ウェブサーバーを停止します。10 秒後、Google Cloud はこの VM を正常ではないと認識します(セットアップで作成した hc-http-80 ヘルスチェックでは、デフォルトのチェック間隔は 5 秒とされ、連続で 2 回のプローブの失敗が異常しきい値として使用されます)。

    sudo apachectl stop
    
  3. テスト手順を行い、トラフィックをロードバランサに送信します。2 つ目のステップを数回繰り返します。想定される動作は、2 つのバックアップ VM(vm-c1vm-c2)によってトラフィックが正常に提供されることです。正常なプライマリ VM(vm-a2)は 1 つのみであるため、正常なプライマリ VM のすべてのプライマリ VM に対する割合は 0.5 になります。この数はフェイルオーバーしきい値の 0.75 よりも小さいため、Google Cloud によってバックアップ VM を使用するようにロードバランサのアクティブプールが再構成されます。このロードバランサでセッション アフィニティが構成されない限り、約半分のレスポンスが各バックアップ VM によって処理されます。

フェイルバックのテスト

このテストでは、vm-a1 上の Apache サーバーを再起動してフェイルバックをシミュレートします。

  1. vm-a1 VM に接続します。

    gcloud compute ssh vm-a1 --zone us-west1-a
    
  2. Apache ウェブサーバーを起動し、10 秒待ちます。

    sudo apachectl start
    
  3. クライアント テスト手順に沿って進めます。2 つ目のステップを数回繰り返します。想定される動作は、2 つのプライマリ VM(vm-a1vm-a2)によりトラフィックが正常に提供されることです。両方のプライマリ VM が正常な場合、すべてのプライマリ VM に対する正常なプライマリ VM の割合は 1.0 になります。この値は、フェイルオーバーしきい値 0.75 よりも大きい値であるため、プライマリ VM が再び使用されるように Google Cloud によってアクティブプールが構成されます。

バックエンド VM の追加

このセクションでは、ロードバランサにさらにプライマリ VM とバックアップ VM を追加してサンプルの構成例を拡張します。同じリージョン内の複数のゾーンにプライマリ VM とバックアップ VM を分散できることを示す 2 つのバックエンド インスタンス グループを作成します。

  • 第 3 のインスタンス グループ(us-west1-cig-d)は、2 つの VM を持つプライマリ バックエンドとして動作します。
    • vm-d1
    • vm-d2
  • 第 4 のインスタンス グループ(us-west1-aig-b)は、次の 2 つの VM を持つフェイルオーバー バックエンドとして動作します。
    • vm-b1
    • vm-b2

この例の修正されたアーキテクチャは次のようになります。

マルチゾーンの外部パススルー ネットワーク ロードバランサのフェイルオーバー。
マルチゾーンの外部パススルー ネットワーク ロードバランサのフェイルオーバー(クリックして拡大)

追加の VM とインスタンス グループを作成する

追加のプライマリ VM とバックアップ VM、および対応する非マネージド インスタンス グループを作成します。

コンソール

バックエンド VM の作成

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

    [VM インスタンス] に移動

  2. 次の手順を繰り返し、4 つの VM を作成します。次の名前とゾーンの組み合わせを使用します。

    • 名前: vm-b1、ゾーン: us-west1-a
    • 名前: vm-b2、ゾーン: us-west1-a
    • 名前: vm-d1、ゾーン: us-west1-c
    • 名前: vm-d2、ゾーン: us-west1-c
  3. [インスタンスを作成] をクリックします。

  4. ステップ 2 に示したように [名前] を設定します。

  5. [リージョン] には、us-west1 を選択し、手順 2 に示したゾーンを選択します。

  6. [ブートディスク] セクションで、選択したイメージが Debian GNU/Linux 9 Stretch であることを確認します。必要に応じてイメージを変更するには、[選択] をクリックします。

  7. [詳細オプション] をクリックします。

  8. [ネットワーキング] をクリックして次のフィールドを構成します。

    1. [ネットワーク タグ] に「network-lb」と入力します。
  9. [管理] をクリックします。[起動スクリプト] フィールドに次のスクリプトを入力します。スクリプトの内容は 4 つの VM ですべて同じです。

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2
    
  10. [作成] をクリックします。

インスタンス·グループの作成

  1. Google Cloud コンソールの [インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

  2. 次の手順を繰り返し、それぞれが 2 つの VM を持つ 2 つの非マネージド インスタンス グループを作成します。以下のような組み合わせを使用します。

    • インスタンス グループ: ig-b、ゾーン: us-west1-a、VM: vm-b1vm-b2
    • インスタンス グループ: ig-d、ゾーン: us-west1-c、VM: vm-d1vm-d2
  3. [インスタンス グループを作成] をクリックします。

  4. [新しい非マネージド インスタンス グループ] をクリックします。

  5. ステップ 2 に示したように [名前] を設定します。

  6. [ロケーション] セクションで、[リージョン] に us-west1 を選択し、ステップ 2 で示したように [ゾーン] を選択します。

  7. [ネットワーク] に「default」と入力します。

  8. [VM インスタンス] セクションに、ステップ 2 で示した VM を追加します。

  9. [作成] をクリックします。

gcloud

  1. VM-NAMEZONE の 4 つの組み合わせを使用して、次のコマンドを 4 回実行して 4 つの VM を作成します。スクリプトの内容は 4 つの VM ですべて同じです。

    • vm-b1VM-NAMEus-west1-aZONE
    • vm-b2VM-NAMEus-west1-aZONE
    • vm-d1VM-NAMEus-west1-cZONE
    • vm-d2VM-NAMEus-west1-cZONE
    gcloud compute instances create VM-NAME \
        --zone=ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=network-lb \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    
  2. 各ゾーンに次の 2 つの非マネージド インスタンス グループを作成します。

    gcloud compute instance-groups unmanaged create ig-b \
        --zone us-west1-a
    gcloud compute instance-groups unmanaged create ig-d \
        --zone us-west1-c
    
  3. 適切なインスタンス グループに VM を追加します。

    gcloud compute instance-groups unmanaged add-instances ig-b \
        --zone us-west1-a \
        --instances vm-b1,vm-b2
    gcloud compute instance-groups unmanaged add-instances ig-d \
        --zone us-west1-c \
        --instances vm-d1,vm-d2
    

プライマリ バックエンドの追加

この手順は、既存の外部パススルー ネットワーク ロードバランサのバックエンド サービスに非マネージド インスタンス グループをプライマリ バックエンドとして追加する際に使用できます。この構成例では、インスタンス グループ ig-d をプライマリ バックエンドとして network-lb ロードバランサに追加する方法を示します。

Console

ロードバランサの構成を編集して、プライマリ バックエンドを追加します。

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. 変更するロードバランサをクリックします。

  3. [編集] をクリックします。

  4. [バックエンドの構成] をクリックして、次の変更を行います。

    1. [バックエンド] で、[バックエンドの追加] をクリックします。
    2. プルダウンから、プライマリ バックエンドとして追加するインスタンス グループを選択します。この場合は ig-d です。
    3. [完了] をクリックします。
    4. 続行する前に、[バックエンドの構成] の隣に青いチェックマークがあることを確認します。

構成を確認する

  1. [確認と確定] ボタンをクリックして、[バックエンド] の下に新しいプライマリ バックエンドが表示されていることを確認します。
  2. 設定が正しい場合は、[作成] をクリックします。ロードバランサの作成には数分かかります。

    [負荷分散] 画面で、新しいロードバランサの [バックエンド] 列に緑色のチェックマークが表示されていれば、新しく作成したロードバランサは正常な状態です。

gcloud

既存の外部パススルー ネットワーク ロードバランサのバックエンド サービスにプライマリ バックエンドを追加するには、次の gcloud コマンドを使用します。

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION

ここで

  • BACKEND_SERVICE_NAME は、ロードバランサのバックエンド サービスの名前です。たとえば、network-lb-backend-service を使用します。
  • INSTANCE_GROUP_NAME は、プライマリ バックエンドとして追加するインスタンス グループの名前です。たとえば、ig-d を使用します。
  • INSTANCE_GROUP_ZONE は、インスタンス グループが定義されているゾーンです。 たとえば、us-west1-c を使用します。
  • REGION は、ロードバランサのリージョンです。たとえば、us-west1 を使用します。

フェイルオーバー バックエンドの追加

この手順は、既存の外部パススルー ネットワーク ロードバランサのバックエンド サービスに非マネージド インスタンス グループをフェイルオーバー バックエンドとして追加する際に使用できます。この構成例では、インスタンス グループ ig-b をフェイルオーバー バックエンドとして network-lb ロードバランサに追加する方法を示します。

Console

ロードバランサの構成を編集して、プライマリ バックエンドを追加します。

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. 変更するロードバランサをクリックします。

  3. [編集] をクリックします。

  4. [バックエンドの構成] をクリックして、次の変更を行います。

    1. [バックエンド] で、[バックエンドの追加] をクリックします。
    2. プルダウンから、フェイルオーバー バックエンドとして追加するインスタンス グループを選択します。この場合は ig-b です。
    3. [このインスタンス グループをバックアップ用のフェイルオーバー グループとして使用する] チェックボックスを選択します。
    4. [完了] をクリックします。
    5. 続行する前に、[バックエンドの構成] の隣に青いチェックマークがあることを確認します。

構成を確認する

  1. [確認と確定] ボタンをクリックして、[バックエンド] の下に新しいプライマリ バックエンドが表示されていることを確認します。
  2. 設定が正しい場合は、[作成] をクリックします。ロードバランサの作成には数分かかります。

    [負荷分散] 画面で、新しいロードバランサの [バックエンド] 列に緑色のチェックマークが表示されていれば、新しく作成したロードバランサは正常な状態です。

gcloud

既存の外部パススルー ネットワーク ロードバランサのバックエンド サービスにフェイルオーバー バックエンドを追加するには、次の gcloud コマンドを使用します。

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --failover

ここで

  • BACKEND_SERVICE_NAME は、ロードバランサのバックエンド サービスの名前です。たとえば、network-lb-backend-service を使用します。
  • INSTANCE_GROUP_NAME は、フェイルオーバー バックエンドとして追加するインスタンス グループの名前です。たとえば、ig-b を使用します。
  • INSTANCE_GROUP_ZONE は、インスタンス グループが定義されているゾーンです。 たとえば、us-west1-a を使用します。
  • REGION は、ロードバランサのリージョンです。たとえば、us-west1 を使用します。

プライマリ バックエンドまたはフェイルオーバー バックエンドの変換

外部パススルー ネットワーク ロードバランサのバックエンド サービスからインスタンス グループを削除せずに、プライマリ バックエンドをフェイルオーバー バックエンドに変換すること(またはその逆)ができます。

gcloud

既存のプライマリ バックエンドをフェイルオーバー バックエンドに変換するには、次の gcloud コマンドを使用します。

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --failover

既存のフェイルオーバー バックエンドをプライマリ バックエンドに変換するには、次の gcloud コマンドを使用します。

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --no-failover

ここで

  • BACKEND_SERVICE_NAME は、ロードバランサのバックエンド サービスの名前です。
  • INSTANCE_GROUP_NAME はインスタンス グループの名前です。
  • INSTANCE_GROUP_ZONE は、インスタンス グループが定義されているゾーンです。
  • REGION は、ロードバランサのリージョンです。

フェイルオーバー ポリシーの構成

このセクションでは、外部パススルー ネットワーク ロードバランサのバックエンド サービスのフェイルオーバー ポリシーを管理する方法について説明します。フェイルオーバー ポリシーは次のように構成されます。

  • フェイルオーバー率
  • すべてのバックエンド VM が正常でない場合のトラフィックの廃棄
  • フェイルオーバー時にコネクション ドレインを行う

フェイルオーバー ポリシーのパラメータについて詳しくは、以下をご覧ください。

フェイルオーバー ポリシーの定義

次の手順は、既存の外部パススルー ネットワーク ロードバランサのフェイルオーバー ポリシーを定義する方法について説明します。

gcloud

フェイルオーバー ポリシーを定義するには、gcloud CLI を使用してロードバランサのバックエンド サービスを更新します。

gcloud compute backend-services update BACKEND_SERVICE_NAME \
   --region REGION \
   --failover-ratio FAILOVER_RATIO \
   --connection-drain-on-failover \
   --connection-draining-timeout=CONNECTION_DRAINING_TIMEOUT \
   --drop-traffic-if-unhealthy

ここで

  • BACKEND_SERVICE_NAME は、ロードバランサのバックエンド サービスの名前です。たとえば、network-lb を使用します。
  • REGION は、ロードバランサのリージョンです。たとえば、us-west1 を使用します。
  • FAILOVER_RATIO は、フェイルオーバー率です。可能な値は、0.01.0 です。たとえば、0.75 を使用します。
  • CONNECTION_DRAINING_TIMEOUT を使用すると、コネクション ドレインのタイムアウトまではアクティブ プール内にない VM でも TCP 接続を保持できます。

フェイルオーバー ポリシーの表示

次の手順は、外部パススルー ネットワーク ロードバランサの既存のフェイルオーバー ポリシーを表示します。

gcloud

フェイルオーバー ポリシーの設定を一覧表示するには、gcloud CLI で次のコマンドを使用します。フェイルオーバー ポリシーで定義されていない設定は、デフォルトのフェイルオーバー ポリシーの値を使用します。

gcloud compute backend-services describe BACKEND_SERVICE_NAME \
   --region REGION \
   --format="get(failoverPolicy)"

ここで

  • BACKEND_SERVICE_NAME は、ロードバランサのバックエンド サービスの名前です。たとえば、network-lb-backend-service を使用します。
  • REGION は、ロードバランサのリージョンです。たとえば、us-west1 を使用します。

次のステップ