レイヤ4負荷分散とレイヤ7負荷分散: 違いは何か、どちらが必要か?

投稿日

Web アプリケーションの負荷分散は、スタッフ、クライアント、そして顧客に優れたアプリケーションエクスペリエンスを提供するために不可欠です。これは、Web アプリケーションが組織内で使用されるか、クライアントやビジネスパートナー向けに外部提供されるかに関係なく当てはまります。

負荷分散について調べていると、レイヤ4負荷分散レイヤ7負荷分散、という用語をよく目にします。これらの用語は何を意味し、レイヤ4とレイヤ7はどう使い分けるべきでしょうか?例えば、常にレイヤ7負荷分散の実装を目指すべきでしょうか。このブログでは、用語について簡単に説明し、これらの疑問に答えます。

負荷分散とは?

負荷分散は、ロードバランシングとも呼ばれ、クライアントからのアプリケーションへのアクセス要求をバックエンドサーバーまたはクラウドサーバーのプール全体に分散させる仕組みです。負荷分散ソフトウェアは、様々なアルゴリズムとネットワークの状態に基づいて、リクエストをサーバープール全体で均等になるよう最適に振り分けます。また、ロードバランサーはプール内のサーバーのヘルスチェックやステータス監視も行い、クライアントのリクエストが処理できないサーバーに送られないようにします。

負荷分散アルゴリズムは、ネットワークスタックの概念的なレイヤに対応する技術を用いて動作します。この目的で最も広く使われているのが、7層からなる OSI 参照モデルです。多くのロードバランサーの機能は、この OSI 参照モデルのレイヤ4とレイヤ7での処理に対応しています。

レイヤ4 負荷分散とレイヤ7 負荷分散

OSI 参照モデルとは別に、広く使われているネットワークモデルとして4層の TCP/IP モデルがあります。ただし本ブログでは、ロードバランサーの機能を説明する上で、OSI モデルのレイヤ4とレイヤ7の方が適しているので、TCP/IP モデルは考慮していません。IT業界全体でも OSI モデルがより一般的に使用されています。

レイヤ4負荷分散とは?

OSI 参照モデルのレイヤ4は、トランスポート層とも呼ばれます。その名前が示すように、この層ではネットワーク上でのデータの転送に関する処理が行われます。ネットワーク上のノード (ノードとはデータの送受信が可能なあらゆる機器) 間のデータ転送は、パケットと呼ばれるフラグメント単位で行われます。

これらのデータパケットには、送信元のIPアドレス、送信先のIPアドレス、そして受信側でどのプロトコルやポートで処理すべきかといった情報が含まれています。ここで使われるプロトコルやポートは、主に TCP または UDP です。

レイヤ4負荷分散は、これらのパケットのヘッダー情報 (IP アドレスやポート番号) の範囲までしか内容を把握できません。つまり、パケットの中身までは見ません。しかし、多くの用途においてはこれで十分であり、レイヤ4負荷分散は実用的な手法とされています。

レイヤ4負荷分散はどう使用されるか?

レイヤ4負荷分散は、データパケットの中身を確認せずに、どのサーバーにリクエストやネットワークトラフィックを振り分けるかを判断できる状況で使用されます。レイヤ4負荷分散は処理が軽いため、パケットのルーティングが高速に行えるという利点があり、これは特定の状況では非常に重要です。レイヤ4負荷分散は、UDP ベースのアプリケーション、たとえばビデオストリーミング、音声通話、および DNS、SNMP、DHCP といったインターネットの基盤となるアプリケーションでよく使用されます。

もし、高速なパケットの負荷分散が必要であり、かつデータの内容に基づいた振り分けが不要であれば、レイヤ4負荷分散で十分対応できるでしょう。

レイヤ7負荷分散とは?

データのタイプに基づいてロードバランシングを決定する必要がある場合は、レイヤ7負荷分散が最適です。OSI 参照モデルのレイヤ7は、アプリケーション層とも呼ばれます。

アプリケーション層で動作する負荷分散アルゴリズムは、ネットワーク上を流れるデータパケットの内容を検査できます。これにより、トランスポート層の機能を強化し、ネットワークパケットの内容に基づいたパケットルーティングを実現します。LoadMaster などの最新のロードバランサーは、TLS 機能を使用して暗号化されたネットワークパケットを開封し、データを検査してから、再度暗号化して転送することも可能です。

レイヤ7負荷分散はどう使用されるか?

レイヤ7負荷分散は、パケットに含まれるデータの種類を判断することで、アクセス要求の割り当てに関する判断を行うことができます。例えば、ビデオ視聴リクエストは、ビデオストリーミングに最適化されたサーバーノード群にルーティングされ、負荷分散されることがあります。他の種類の専用サーバーも、パケットデータの種類に基づいてリクエストの受信先として指定できます。

レイヤ7負荷分散により、アプリケーションのセキュリティも強化されます。Web アプリケーションファイアウォール (WAF) は、現代のサイバーセキュリティ保護戦略に不可欠です。WAF はレイヤ7で動作し、ネットワークデータパケットを検査してその内容を確認できます。レイヤ7のデータパケットを検査できるということは、WAF 対応ロードバランサーがネットワークセキュリティインフラの重要な構成要素となることを意味します。パケットを開封して悪意のあるコンテンツがないかチェックしたり、疑わしいパケットとして識別してバックエンドサーバーへの到達をブロックしたりすることで、被害を及ぼす前に対処できます。

レイヤ7負荷分散を使用すると、入ってくるアクセスリクエストとその後のエンドポイントデバイスとサーバー間のデータフローのルーティング方法を決定する際に、より豊富なアルゴリズムセットを使用できます。

レイヤ4か、レイヤ7か、どちらが必要か?

現代のネットワークおよびアプリケーション配信インフラの多くにおいて、この問いに対する答えは「どちらも必要です」というのが一般的であることに、驚きはないかもしれません。(実際には、OSI 参照モデルのレイヤ2と3でもロードバランシング機能が必要になる場合がありますが、それは別の話になります。)

ただ、もし選択しなければならないとしたら、留意すべきポイントはあります。例えば、ロードバランサーがパケット内のデータについて何も知る必要がなく、リクエストをできるだけ早くアプリケーションサーバーに割り当てたい場合は、レイヤ4負荷分散とそのレベルで動作するアルゴリズムで十分です。

一方、より複雑なユースケースではレイヤ7が必要になります。例えば、受信したデータパケットを、特定のデータタイプに最適化されたアプリケーションサーバーにルーティングする必要がある場合 (先ほどのビデオストリーミングの例が典型的です)、レイヤ7は不可欠です。

レイヤ7負荷分散のその他の一般的なユースケースとしては、エンドポイントデバイスとバックエンドのショッピングアプリケーションサーバー間のセッションパーシステンス (セッション持続性) が挙げられます。パーシステンス機能で、顧客のショッピングカートの内容が接続セッション中およびセッション間で一貫して保持されます。これは、Cookie パーシステンス、またはサーバーアフィニティと呼ばれることもあります。レイヤ7負荷分散では、データパケットの内容にアクセスできるのでデータのキャッシュも可能であり、一部のアクセスリクエストを高速化するのに役立ちます。

レイヤ7ロードバランサーを有効にするには?

LoadMaster はレイヤ4とレイヤ7を区別します。LoadMaster ロードバランサーで Cookie パーシステンス、TLS アクセラレーション、またはコンテンツスイッチングオプションを有効にすると、トラフィックは自動的にレイヤ7になります。LoadMaster のドキュメントでは、設定ガイドの「L7 Configuration」のセクションでレイヤ7機能を有効にする方法が記述されています。

レイヤ7負荷分散を行いたい場合、役に立つサイトはありますか?

Progress Kemp の Web サイトには、LoadMaster を評価し、自社のニーズに適したソリューションかどうかを判断するための多くのリソースがあります。「なぜ Kemp が選ばれるのか」は、レイヤ7負荷分散をどう選ぶか迷っている人にとっては、良い出発点です。LoadMaster の多くの機能の概要と、各機能に関する詳細な情報へのリンクがあります。

メニューから、LoadMaster の各製品の情報やその他の情報をチェックすることができます。

ご質問がある場合は、お問い合わせページをご利用ください。

投稿日

Doug Barney

Doug Barney は、Redmond Magazine、Redmond Channel Partner、Redmond Developer News、Virtualization Review の創刊編集者でした。また、Network World の編集長、AmigaWorld の編集長、Network Computing の編集長も務めました。