ネットワーク負荷分散のフェイルオーバーの構成

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

権限

このガイドを使用する前に、インスタンスを作成し、プロジェクト内のネットワークを変更しておく必要があります。そのためにはプロジェクトの所有者または編集者であるか、または次の 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 Console の [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 9 Stretch であることを確認します。イメージを変更するには、[選択] をクリックします。
  7. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックし、次の変更を行います。

    • [ネットワーク] をクリックして、ネットワーク タグ network-lb を追加します。
    • [管理] をクリックします。[起動スクリプト] フィールドに、次のスクリプトの内容をコピーして貼り付けます。スクリプトの内容は 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://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. [作成] をクリックします。

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

  1. Google Cloud Console の [インスタンス グループ] ページに移動します。
    [インスタンス グループ] ページに移動
  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-9 \
        --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://169.254.169.254/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
    

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

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

Console

  1. Google Cloud Console の [ファイアウォール] ページに移動します。
    [ファイアウォール] ページに移動
  2. [ファイアウォール ルールを作成] をクリックして、任意の送信元からのトラフィックを許可するルールを作成します。次の値を使用します。
    1. 名前: allow-network-lb
    2. ネットワーク: default
    3. 優先度: 1000
    4. トラフィックの方向: 上り(内向き)
    5. 一致したときのアクション: 許可
    6. ターゲット: 指定されたターゲットタグ
    7. ターゲットタグ: network-lb
    8. ソースフィルタ: IP ranges
    9. ソース IP の範囲: 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. ソースフィルタ: IP ranges
    9. 送信元 IP 範囲: 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 つ作成します。

Console

  1. Google Cloud Console で [ロードバランサの作成] ページに移動します。
    [ロードバランサの作成] ページに移動
  2. [TCP 負荷分散] で [構成を開始] をクリックします。

  3. [インターネット接続または内部専用] で [インターネットから自分の VM へ] を選択します。

  4. [マルチリージョンまたはシングル リージョン] で [シングル リージョンのみ] を選択します。

  5. [バックエンド タイプ] で [バックエンド サービス(ベータ版)] を選択します。

  6. [続行] をクリックします。

バックエンドの構成

  1. 新しい TCP ロードバランサの画面で、新しいロードバランサの [名前] に「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、および対応する非マネージド インスタンス グループを作成します。

Console

バックエンド VM の作成

  1. Google Cloud Console の [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. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] をクリックし、次の変更を行います。

    • [ネットワーク] をクリックして、ネットワーク タグ network-lb を追加します。
    • [管理] をクリックします。[起動スクリプト] フィールドに、次のスクリプトの内容をコピーして貼り付けます。スクリプトの内容は 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://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  8. [作成] をクリックします。

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

  1. Google Cloud Console の [インスタンス グループ] ページに移動します。
    [インスタンス グループ] ページに移動
  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-9 \
        --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://169.254.169.254/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 Console の [Cloud Load Balancing] ページに移動します。
    [Cloud Load Balancing] ページに移動
  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 Console の [Cloud Load Balancing] ページに移動します。
    [Cloud Load Balancing] ページに移動
  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 コマンドライン ツールを使用してロードバランサのバックエンド サービスを更新します。

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 コマンドライン ツールで次のコマンドを使用します。フェイルオーバー ポリシーで定義されていない設定は、デフォルトのフェイルオーバー ポリシーの値を使用します。

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

ここで

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

次のステップ