ネットワーク負荷分散

このガイドでは、Compute Engine インスタンス上に複数のウェブサーバーがあり、この間でトラフィックを分散する基本的な負荷分散のシナリオを示します。このシナリオでは、正常に動作しているインスタンスの間で HTTP トラフィックを分散させるように、レイヤ 3 負荷分散を設定します。また、正常なインスタンスにだけトラフィックが送信されるように、基本的な HTTP ヘルスチェックを構成します。

ネットワーク負荷分散の詳細については、ネットワーク負荷分散の設定をご覧ください。

前提条件

事前準備のページの説明に沿って、gcloud コマンドライン ツールをインストールします。

ロードバランサに使用する静的外部 IP アドレスを作成する必要があります。Compute Engine で提供されるイメージを使用する場合は、この IP アドレスを処理するようにインスタンスが自動的に設定されます。その他のイメージを使用する場合は、このアドレスを eth0 のエイリアスまたは各インスタンスのループバックとして設定する必要があります。

gcloud コマンドライン ツールをまだ一度も実行したことがない場合は、まず gcloud init を実行して認証を行います。

このガイドは、bash の知識があることを前提としています。

Compute Engine の設定

この負荷分散のシナリオでは、3 つの Compute Engine インスタンスを作成し、それぞれに Apache をインストールします。また、HTTP トラフィックがインスタンスに到達できるようにファイアウォール ルールを追加します。

次のコマンドはすべてローカル システムで実行し、bash コマンド プロンプトを使用することを前提としています。

  1. 指定したゾーンで 3 つの新しい仮想マシンを作成し、それらすべてに同じタグを設定します。この例では、ゾーンを us-central1-b に設定します。tags フィールドを設定すると、ファイアウォール ルールと同じように、これらのインスタンスを同時に参照できます。これらのコマンドにより、各インスタンスに Apache もインストールされ、インスタンスごとに固有のホームページが提供されます。

    gcloud compute instances create www1 \
        --image-family debian-8 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags network-lb-tag \
        --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install apache2 -y
          sudo service apache2 restart
          echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html
          EOF"
    
    gcloud compute instances create www2 \
        --image-family debian-8 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags network-lb-tag \
        --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install apache2 -y
          sudo service apache2 restart
          echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html
          EOF"
    
    gcloud compute instances create www3 \
        --image-family debian-8 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags network-lb-tag \
        --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install apache2 -y
          sudo service apache2 restart
          echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html
          EOF"
    
  2. 外部トラフィックがこれらの仮想マシン インスタンスに到達できるように、ファイアウォール ルールを作成します。

    gcloud compute firewall-rules create www-firewall-network-lb \
        --target-tags network-lb-tag --allow tcp:80
    
  3. インスタンスの外部 IP アドレスを取得します。

    gcloud compute instances list
    
  4. 各インスタンスが実行中であることを確認します。

    $ curl http://[EXTERNAL_IP_ADDRESS]
    

負荷分散サービスの設定

次に、負荷分散サービスをセットアップします。

  1. 負荷分散に使用する静的外部 IP アドレスを作成します。

    gcloud compute addresses create network-lb-ip-1 \
        --region us-central1
    

    仮想マシン インスタンスは、この IP アドレスに送信されたパケットを受信します。Compute Engine で提供されるイメージを使用する場合は、この IP アドレスを処理するようにインスタンスが自動的に設定されます。その他のイメージを使用する場合は、このアドレスを eth0 のエイリアスまたは各インスタンスのループバックとして設定する必要があります。

  2. HTTP ヘルスチェック オブジェクトを追加します。

    gcloud compute http-health-checks create basic-check
    

    この例では、ヘルスチェック メカニズムのデフォルト設定を使用しますが、独自にカスタマイズすることもできます。

  3. 仮想マシン インスタンスと同じリージョンにターゲット プールを追加します。このターゲット プールに対して、前のステップで作成したヘルスチェックを使用します。ターゲット プールが機能するには、ヘルスチェック サービスが必要です。

    gcloud compute target-pools create www-pool \
        --region us-central1 --http-health-check basic-check
    
  4. インスタンスをターゲット プールに追加します。

    gcloud compute target-pools add-instances www-pool \
        --instances www1,www2,www3 \
        --instances-zone us-central1-b
    

    ターゲット プール内のインスタンスは同じリージョンに属している必要がありますが、同じリージョン内の異なるゾーンにまたがっていてもかまいません。たとえば、ゾーン us-central1-f のインスタンスとゾーン us-central1-b のインスタンスは同じリージョン us-central1 にあるため、同じターゲット プール内に含めることができます。

  5. 外部 IP およびポート範囲の代わりに機能し、ターゲット プールを送信先とする転送ルールを追加します。--address フィールドには数値 IP アドレスまたは完全修飾名を使用します。

    gcloud compute forwarding-rules create www-rule \
        --region us-central1 \
        --ports 80 \
        --address network-lb-ip-1 \
        --target-pool www-pool
    

負荷分散サービスの設定が完了したので、転送ルールへのトラフィックの送信を開始することができます。また、別のインスタンスに分散されるトラフィックを監視することができます。

インスタンスへのトラフィックの送信

  1. 転送ルールの外部 IP アドレスを検索します。

    gcloud compute forwarding-rules describe www-rule --region us-central1
    
  2. curl コマンドを使用して、IP アドレスにアクセスします。レスポンスは 3 つのインスタンスの間でランダムに変わります。最初のレスポンスで失敗した場合は、構成が完全に読み込まれてインスタンスが正常であるとマークされるまで最大 30 秒待ってから、もう一度やり直してください。

$ while true; do curl -m1 [IP_ADDRESS]; done
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント