レイヤ4ロード バランシングとは何か

レイヤ4ロード バランシングでは、ネットワーキング トランスポート レイヤ(レイヤ4)で定義された情報を使用して、クライアントからの要求をサーバ グループ全体に分散する方法を決定します。特にインターネット トラフィックの場合、レイヤ4ロード バランサは、パケットのコンテンツを考慮せずに、パケット ヘッダーに記録された送信元と宛先のIPアドレスとポートに基づいてロード バランシングを決定します。

全部で7つのネットワーキング レイヤがあり、開放型システム間相互接続(OSI)参照モデルによって定義されています。詳細については、後述の「OSIおよびインターネット モデルのレイヤ」を参照してください。

ロード バランシングの詳細については、「NGINX Plusによるアプリケーションのロード バランシング」を参照してください。

レイヤ4ロード バランシングとNAT

現在、「レイヤ4ロード バランシング」という用語は、ロード バランサのIPアドレスがWebサイトまたはサービスに対してクライアントにアドバタイズされる(例えば、DNS経由の)導入を指すのが最も一般的です。その結果、クライアントは、ロード バランサのアドレスを要求の宛先IPアドレスとして記録します。

レイヤ4ロード バランサがリクエストを受信してロード バランシングの決定を行うと、要求パケットに対してネットワーク アドレス変換(NAT)も実行され、記録されている宛先IPアドレスが自身のIPアドレスから内部ネットワーク上で選択したコンテンツ サーバのIPアドレスに変更されます。同様に、サーバ応答をクライアントに転送する前に、ロード バランサはパケット ヘッダーに記録されている送信元アドレスをサーバのIPアドレスから自身のIPアドレスに変更します(パケットに記録されている宛先および送信元のTCPポート番号も同様に変更されることがあります)。

レイヤ4ロード バランサは、TCPストリームの最初の数パケットから抽出されたアドレス情報に基づいてルーティングを決定し、パケットのコンテンツを検査しません。レイヤ4ロード バランサは、多くの場合、ベンダーによって提供される専用のハードウェア デバイスであり、独自のロード バランシング ソフトウェアを実行します。また、NAT運用はソフトウェアではなく、専用のチップによって実行される場合があります。

レイヤ4ロード バランシングは、コモディティ ハードウェアが現在ほど強力ではなく、クライアントとアプリケーション サーバ間のやり取りがそれほど複雑ではなかった時代における、トラフィック処理の一般的なアーキテクチャ アプローチでした。レイヤ7などのより高度なロード バランシング方法よりも計算量が少なくて済みますが、CPUとメモリが今では十分に高速で安価になったため、レイヤ4ロード バランシングのパフォーマンス上の利点は、ほとんどの場合で、無視できる、または関連性のないものとなっています。

レイヤ4とレイヤ7のロード バランサの比較

レイヤ7ロード バランサは、OSIモデルの最上位レベルであるアプリケーション レイヤで動作します(インターネットでは、このレイヤの主なプロトコルはHTTPです)。レイヤ7ロード バランサは、HTTPヘッダーのさまざまな特性と、URL、データの種類(テキスト、ビデオ、グラフィックス)、Cookie内の情報などのメッセージの実際のコンテンツに基づいてルーティングを決定します。

転送される情報のさまざまな側面を考慮すると、レイヤ7ロード バランシングは、時間と必要なコンピューティング能力の点でレイヤ4よりも多くかかりますが、それでも全体的な効率性は向上します。例えば、レイヤ7ロード バランサは、クライアントが要求しているデータの種類(ビデオ、テキストなど)を特定できるため、ロード バランシング対象のすべてのサーバで同じデータを複製する必要がありません。

通常、NGINX Plusやオープン ソースのNGINXソフトウェアなどの最新の汎用ロード バランサはレイヤ7で動作し、完全なリバース プロキシとして機能します。NATを使用するレイヤ4ロード バランサのようにパケットごとにトラフィックを管理するのではなく、レイヤ7ロード バランシング プロキシは、要求と応答全体を読み取ることができます。クライアントとアプリケーション サーバ間のトランザクションを完全に理解した上で、トラフィックを管理および操作します。

一部のロード バランサは、サービスの性質に応じて、レイヤ4またはレイヤ7のロード バランシングを提供するように構成できます。前述したように、現代のコモディティ ハードウェアは一般に十分に強力であるため、レイヤ4ロード バランシングによるコンピューティング コストの節約は、レイヤ7ロード バランシングから得られる柔軟性と効率性向上のメリットを上回るほど大きくはありません。

NGINXがお手伝いできること

NGINX PlusNGINXは、クラス最高レベルのロード バランシング ソリューションであり、Dropbox、Netflix、Zyngaなどの高トラフィックのWebサイトで使用されています。世界中で3億5,000万以上のWebサイトが、NGINX PlusとNGINX Open Sourceを利用してコンテンツを迅速に、確実に、そして安全に提供しています。

ソフトウェアベースのロード バランサであるNGINX Plusは、同様の機能を備えたハードウェアベースのソリューションよりもはるかに安価です。NGINX Plusの包括的なロード バランシング機能により、高度に最適化されたApplication Delivery Networkを構築できます。

NGINX Plusをサーバ ファームの前にロード バランサとして挿入すると、Webサイト全体の効率性、パフォーマンス、信頼性、拡張性が向上します。NGINX Plusは、顧客満足度とIT投資収益率の両方を最大限に高めるのに役立ちます。

OSIとインターネット モデルのレイヤ

インターネット トラフィックの場合、「レイヤ4」および「レイヤ7」ロード バランシングと呼ぶのは便利な表現であるためですが、厳密には正確ではありません。興味がある方は、読み進めてください。

7つのネットワーク レイヤという概念は、開放型システム間相互接続(OSI)参照モデルに由来しています。このモデルでは、ネットワーク機能を7つの抽象化されたレイヤに分け、通常はそれらの番号(レイヤ1~レイヤ7)で参照します。各レイヤには、データのパッケージ化方法と転送方法を定義する標準があります。特に標準では、要求または応答を構成するビット ストリームを、プロトコル データ ユニット(PDU)と呼ばれる個別のパッケージにセグメント化する方法が定義されています。また、標準では、ヘッダーの形式で各PDUに追加されるメタデータも定義されています。例えば、メタデータでは、送信元ホストと宛先ホストのアドレスを指定できます。

ネットワーク機能のさまざまな側面を異なるレイヤに割り当てると、各レイヤでの処理が簡素化されます。これは、プロトコルは自身のレイヤのPDUを処理する方法と、隣接するレイヤのプロトコルが独自のデータ セグメント化レベルでPDUを再パッケージ化できるようにヘッダーに含めるメタデータのみを把握できればよいためです。

World Wide Web上のトラフィック用の基本プロトコル(総称して、インターネット プロトコル(IP)スイート)間のネットワーク機能の分散は、OSIモデルに厳密には準拠していません。これは、1984年に最終的なOSIモデルが公開される前に、IPスイートが定義および実装されたためです。そのような状況でも、IPスイート内のさまざまなプロトコルは、OSIレイヤにほぼ対応する個別の機能を実行します。

各レベルでは複数のプロトコルが定義されていますが、Webサイト トラフィックのロード バランシングに関連するプロトコルとレベルは次のとおりです。

  • インターネット プロトコル(IP)は、インターネットワーク レイヤ(レイヤ3)で動作します。そのPDUはパケットと呼ばれ、IPはパケットを送信元ホストから宛先ホストにデリバリする役割を担っています。通常は、インターネットを構成する複数の小規模ネットワーク間の境界を越えてデリバリされます。インターネットに直接接続されている各デバイスには、パケットの受信者としてデバイスを特定するために使用される一意のIPアドレスがあります。
  • Transmission Control Protocol(TCP)は、トランスポート レイヤ(レイヤ4)で動作します。TCPは、ブラウザが動作しているホストとサーバ アプリケーションが動作しているホストの間に仮想接続を効果的に作成します。信頼性が低いというネットワークの性質により、IPパケットは失われたり、破損したり、順序が乱れたりする可能性があります。TCPには、これらのエラーを修正し、IPパケットのストリームを信頼性の高い通信チャネルに変換するメカニズムがあります。各アプリケーションには、多数のアプリケーションが動作しているホスト上の適切なアプリケーションにデリバリできるように、一意のTCPポート番号が割り当てられます。
  • Hypertext Transfer Protocol(HTTP)は、アプリケーション レイヤ(レイヤ7)で動作します。WebブラウザとWebサーバ(またはHTTPエンコードを認識する任意のアプリケーション)間の通信でデータがどのようにエンコードされるかを定義します。

このリストが明確に示すように、インターネット トラフィックの「レイヤ4ロード バランシング」とは便利な表現としてそう呼んでいますが、より正確な用語は「レイヤ3/4ロード バランシング」です。これは、ロード バランサが、送信元サーバと宛先サーバのIPアドレス(レイヤ3)とアプリケーションのTCPポート番号(レイヤ4)の両方に基づいて決定を行うためです。「レイヤ7ロード バランシング」のより正確な用語は、「レイヤ5~7ロード バランシング」です。HTTPはOSIレイヤ5、6、7の機能を組み合わせているためです。