TCP プロキシ負荷分散のコンセプト

Google Cloud Platform(GCP)の TCP プロキシ負荷分散では、世界中のすべてのユーザーに対して単一の IP アドレスを使用できます。GCP の TCP プロキシ負荷分散では、ユーザーに最も近いインスタンスにトラフィックが自動的にルーティングされます。

グローバル負荷分散には、Network Service Tiers のうちデフォルトの階層であるプレミアム階層を使用する必要があります。プレミアム以外の階層を使用した場合、負荷分散はリージョン単位で処理されます。

Cloud TCP プロキシ負荷分散は、HTTP 以外のトラフィックを対象としています。HTTP トラフィックの場合は、代わりに HTTP 負荷分散を使用します。プロキシが使用される SSL トラフィックの場合は、SSL プロキシ負荷分散を使用してください。

TCP プロキシ負荷分散は、IPv4 アドレスと IPv6 アドレスのクライアント トラフィックに対応しています。クライアントの IPv6 リクエストは負荷分散層で終端され、IPv4 経由でバックエンドにプロキシされます。

目次

概要

TCP トラフィックに TCP プロキシ負荷分散を使用すると、負荷分散レイヤで顧客の TCP セッションを終端し、TCP または SSL を使用して仮想マシンのインスタンスにトラフィックを転送することが可能になります。

TCP プロキシ負荷分散は、グローバル負荷分散サービスとして構成できます。この構成では、インスタンスを複数のリージョンにデプロイできます。グローバル負荷分散では、ユーザーに最も近いリージョンに自動的にトラフィックが送られます。あるリージョンがその処理能力に達すると、ロードバランサによって処理能力がある別のリージョンに新しい接続が自動的に振り分けられます。既存のユーザー接続は現在のリージョンにそのまま残ります。

TCP プロキシ負荷分散の利点:

  • 高度なルーティング機能 - このロードバランサの場合、処理能力があるバックエンドのロケーションにリクエストをルーティングできます。一方、L3/L4 ロードバランサの場合は、利用可能な処理能力にかかわらず必ずリージョンのバックエンドにルーティングされます。さらに、より高度なルーティングを使用すれば、x*N ではなく、N+1 または N+2 でプロビジョニングできます。
  • セキュリティ パッチ - TCP スタックに脆弱性が発見された場合、Cloud Balancing によって自動的にロードバランサにパッチが適用されます。これにより、インスタンスが安全に保たれます。
  • TCP プロキシ負荷分散では、次のポートがサポートされています: 25、43、110、143、195、443、465、587、700、993、995、1883、5222。

コンポーネント

TCP プロキシのロードバランサのコンポーネントは次のとおりです。

転送ルールとアドレス

転送ルールは、IP アドレス、ポート、プロトコルに基づいて、ターゲット プロキシと 1 つ以上のバックエンド サービスからなる負荷分散構成にトラフィックを転送します。

各転送ルールでは、アプリケーションの DNS レコードで使用できる単一の IP アドレスを指定します。DNS ベースの負荷分散は必要ありません。使用する静的 IP アドレスを予約することも、Google Cloud Load Balancing で割り当てられたアドレスを使用することもできます。推奨されているのは静的 IP アドレスの予約です。静的アドレスを予約しない場合、転送ルールを削除して新しく作り直すたびに DNS レコードを編集して、新しく割り当てられたエフェメラル IP アドレスに直す必要があるからです。

ターゲット プロキシ

TCP プロキシ負荷分散では、クライアントからの TCP 接続を終端してインスタンスへの新しい接続を作成します。デフォルトでは、元のクライアントの IP アドレスとポート情報は保持されません。PROXY プロトコルを使用してこの情報を保持できます。ターゲット プロキシは、受信リクエストを直接バックエンド サービスに転送します。

バックエンド サービス

バックエンド サービスは、接続されているバックエンドの 1 つまたは複数に受信トラフィックを振り分けます。これらのバックエンドはそれぞれ、インスタンス グループまたはネットワーク エンドポイント グループと、処理能力を示すメタデータから構成されます。バックエンドの処理能力は、CPU または 1 秒あたりのリクエスト数(RPS)に基づいています。

各バックエンド サービスは、使用可能なインスタンスに対して実行するヘルスチェックを指定します。

ユーザーへの中断を最小限に抑えるために、バックエンド サービスの接続ドレインを有効にできます。このような中断は、インスタンスが停止したり、手動で削除されたり、オートスケーラーによって削除されたりした場合に発生することがあります。接続ドレインを使用してサービスの中断を最小限に抑える方法については、接続ドレインの有効化のドキュメントをご覧ください。

バックエンドへのプロトコル

TCP プロキシ ロードバランサのバックエンド サービスを構成する際には、バックエンド サービスがバックエンドと通信するために使用するプロトコルを設定します。SSL または TCP を選択できます。ロードバランサは、指定したプロトコルのみを使用し、他のプロトコルとの接続をネゴシエートしません。

バックエンド バケット

バックエンド バケットは、インスタンス グループではなく Google Cloud Storage バケットに受信トラフィックを転送します。

バケットはデータを保持するコンテナです。バケットは、VM インスタンス、Google App Engine、およびその他のクラウド サービスの間で共通のストレージとして使用できます。データが大量にあり、ローカルで 1 つの VM インスタンスに保存する必要がない場合は、ストレージ バケットをお使いください。

ファイアウォール ルール

ファイアウォール ルールを使用して、インスタンスに到達するトラフィックを許可します。ロードバランサとヘルス チェッカーからのトラフィックの両方を許可するファイアウォール ルールを構成する必要があります。

次の条件を満たす場合に、単一のファイアウォール ルールを使用できます。

  • グローバル転送ルールが使用するポートでトラフィックを許可する。
  • ヘルス チェッカーも同じポートを使用する。

ヘルスチェッカーが別のポートを使用する場合は、そのポートに対して別のファイアウォール ルールを作成する必要があります。

ファイアウォール ルールは、ネットワークのエッジではなく、インスタンス レベルでトラフィックのブロックまたは許可を行います。ロードバランサ自体へのトラフィックはブロックできません。

Google Cloud Platform が使用する IP アドレスは広範で、経時的に変化する点にも注意してください。ある特定の時点での外部 IP アドレスを判別する必要がある場合は、Google Compute Engine のよくある質問の手順に従ってください。

リターンパス

GCP では、VPC ネットワークで定義されていない特別なルートをヘルスチェックに使用します。詳細については、ロードバランサのリターンパスをご覧ください。

TCP プロキシ負荷分散の例

TCP プロキシの場合、1 つの TCP 接続上で受信されたトラフィックは負荷分散層で終端されてから、利用可能な最も近いインスタンス グループにプロキシされます。

この例では、アイオワとボストンのユーザーからのトラフィックの接続が負荷分散層で終端しています。この図では、その接続に 1a2a というラベルが付いています。選択されたバックエンド インスタンスに、ロードバランサから接続が個別に確立されています。これらの接続に 1b2b というラベルが付いています。

TCP 終端処理を使用した Google Cloud Load Balancing(クリックして拡大)
TCP 終端処理を使用した Google Cloud Load Balancing(クリックして拡大)

セッション アフィニティ

同じクライアントからのリクエストをすべて同じ仮想マシン インスタンスに送信するのが(そのインスタンスが正常で処理能力がある場合)、セッション アフィニティです。

TCP プロキシ負荷分散では、同じクライアント IP アドレスからのすべてのリクエストを同じインスタンスに転送する、というクライアント IP アフィニティを提供しています。

インターフェース

TCP プロキシ負荷分散サービスを構成および更新するには、次のインターフェースを使用します。

  • gcloud コマンドライン ツール: Cloud SDK に含まれているコマンドライン ツール。TCP プロキシ負荷分散のドキュメントに、このツールを使用したサンプルが提供されています。このツールの完全な概要については、gcloud ツールガイドをご覧ください。負荷分散に関連するコマンドは、gcloud compute コマンド グループに含まれます。

    すべての gcloud コマンドでは、--help フラグを使用して詳細なヘルプを表示できます。

    gcloud compute http-health-checks create --help
    
  • Google Cloud Platform Console: Google Cloud Platform Console からすべての負荷分散タスクを実行できます。

  • REST API: Google Cloud Load Balancing API は、すべての負荷分散タスクを実行できます。API リファレンス ドキュメントで、使用できるリソースとメソッドについて説明しています。

オープンポート

TCP プロキシ ロードバランサはリバース プロキシのロードバランサです。ロードバランサによって受信接続が終端され、ロードバランサからバックエンドへの新しい接続が開かれます。リバース プロキシ機能は、Google Front Ends(GFE)が提供します。

ファイアウォール ルールの設定では、GFE からバックエンドへのトラフィックをブロックしますが、GFE への受信トラフィックはブロックしません。

TCP プロキシのロードバランサには、同じアーキテクチャで実行される他の Google サービスをサポートしているオープンポートが多数あります。ロードバランサの外部 IP アドレスに対してセキュリティ スキャンまたはポートスキャンを実行すると、他のポートも開いているように見えます。

このことは、TCP プロキシのロードバランサには影響しません。SSL ロードバランサの定義で使用される外部の転送ルールでは、TCP ポート 25、43、110、143、195、443、465、587、700、993、995、1883、5222 だけが参照可能です。異なる TCP の宛先ポートのトラフィックはロードバランサのバックエンドには転送されません。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

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