ロードバランサーとは

ロードバランサーは、アプリケーションを支えるために、ネットワークトラフィックをオンプレミスまたはクラウドのリソースに動的に分散します。

ロードバランサーは、トラフィックのプロキシとして機能し、ネットワークまたはアプリケーションのトラフィックを複数のサーバー上のエンドポイントに分散するソリューションです。ピーク時のトラフィックに応じて処理能力を分散し、アプリケーションの信頼性を高めるために使用されます。個々のサービスやクラウドの負荷を軽減してアプリケーション全体のパフォーマンスを向上させるとともに、異なるコンピューティング環境に需要を分散することで、アプリケーションとネットワークのセッション維持を支援します。

最新のアプリケーションは、数百万ものセッションを同時に処理し、適切なテキスト、動画、画像などのデータを各ユーザーに迅速かつ確実に返す必要があります。このような大量のトラフィックを処理するため、ほとんどのアプリケーションでは、同じデータを複製して保持する多数のリソースサーバーを使用しています。

ロードバランシングは、ネットワークトラフィックを、アプリケーションを支えるリソースのネットワーク全体に動的に分散します。ロードバランサーは、ユーザーとサーバーグループの間に配置されるデバイスまたはサービスです。目に見えない調整役として、すべてのリソースサーバーが均等に使用されるようにします。ロードバランサーは、利用や需要が集中する状況でも信頼性と可用性の向上に役立ち、稼働時間の延長とユーザーエクスペリエンスの向上を実現します。

場合によっては、クライアントが商品をショッピングカートに入れて購入を完了する場合など、セッション中にクライアントからのすべてのリクエストを同じサーバーに送信することが不可欠です。クライアントとサーバー間の接続を維持することを「セッション永続性」と呼びます。セッション永続性がない場合、サーバー間で情報を同期し、場合によっては同じ情報を複数回取得する必要があるため、パフォーマンスが低下します。

負荷分散のメリット

ユーザーや顧客は、ほぼリアルタイムで情報を検索し、取引を行えることを期待しています。需要や利用がピークに達する時間帯であっても、遅延や信頼性に欠ける一貫しない応答が発生すると、顧客が二度と戻ってこなくなる可能性があります。また、急激に増大したコンピューティング需要、つまり「負荷」を容易に処理できない場合、社内のサーバーやサーバーシステムに深刻な混乱をもたらすおそれがあります。

Advantages of using a ロードバランサーを使用する利点:

  • アプリケーションの可用性:社内外のユーザーがアプリケーションをいつでも利用できることが重要です。アプリケーションや機能が停止したり、遅延したり、フリーズしたりすると、貴重な時間が失われるだけでなく、ユーザーの不満を招き、競合他社への顧客流出につながる可能性があります。
  • アプリケーションのスケーラビリティ:チケット販売会社を運営しており、人気公演のチケットが特定の日時に発売されるとします。チケットを購入するために、数千人、場合によってはそれ以上の人がサイトにアクセスする可能性があります。ロードバランサーがなければ、サイトの処理能力は単一の初期サーバーで対応できる範囲に限られます。これほど需要が集中すると、十分に対応できない可能性が高くなります。一方、ロードバランサーでリクエストとトラフィックを利用可能な他のコンピューティングリソースに振り分ければ、このようなトラフィックの急増に備えられます。その結果、より多くのお客さまが希望するチケットを購入できるようになります。
  • アプリケーションセキュリティ:ロードバランシングにより、組織はセキュリティソリューションを拡張することもできます。主な方法の1つは、複数のバックエンドシステムにトラフィックを分散することです。これにより、攻撃対象領域を最小限に抑え、リソースの枯渇やリンクの飽和を起こりにくくします。また、いずれかのシステムに脆弱性がある場合や侵害された場合、ロードバランサーはトラフィックを別のシステムにリダイレクトできます。さらに、特定のサーバーに脆弱性が生じた場合にサーバー間でトラフィックを再ルーティングすることで、DDoS攻撃に対する保護レイヤーを追加できます。
  • アプリケーションパフォーマンス:ロードバランサーは、上記のすべてを行うことで、アプリケーションパフォーマンスを向上させます。セキュリティの強化、稼働時間の最適化、需要急増時のスケーラビリティの確保により、アプリケーションを設計どおりに、そしてお客さまとその顧客が望む形で稼働させ続けます。

負荷分散アルゴリズム

ロードバランシングアルゴリズムは、動作方式によって静的と動的の2種類に分けられます。静的ロードバランシングでは、分散ネットワーク内の既存サーバーの処理能力情報を持つアルゴリズムを使用して、サーバーへの受信負荷を測定します。動的ロードバランシングでは、実行時に軽減すべき負荷量と、その負荷を担うシステムを動的に特定できます。受信負荷の変動が大きいシステム向けに設計されています。

一般的なロードバランシングアルゴリズムには、次のような種類があります。

  • ラウンドロビン:このアルゴリズムは、Domain Name System(DNS)を使用して、サーバーのリストにトラフィックを順番に送信します。(注:DNSロードバランシングは、動的なソリューションとしても使用できます。)
  • しきい値:このアルゴリズムは、管理者が設定したしきい値に基づいてタスクを分散します。
  • 2つの選択肢によるランダム:「power of two」アルゴリズムは、2台のサーバーをランダムに選択します。その後、設定に応じてLeast ConnectionsアルゴリズムまたはLeast Timeアルゴリズムを適用し、選択されたサーバーにリクエストを送信します。
  • 最小接続数: 新しいリクエストは、現在のクライアント接続数が最も少ないサーバーに送信されます。接続数が最も少ないサーバー、または帯域幅やリソースの使用量が最も少ないサーバーを決定する際には、各サーバーの相対的な処理能力が考慮されます。
  • 最短時間: このアルゴリズムでは、最速の応答時間と最少のアクティブ接続数を組み合わせた式によって選択されたサーバーにリクエストが送信されます。
  • URLハッシュ:このアルゴリズムは、クライアントリクエストに含まれるURLに基づいてハッシュ値を生成します。リクエストは、そのハッシュ値に基づいてサーバーに転送されます。ロードバランサーはURLのハッシュ値をキャッシュするため、同じURLを使用する後続のリクエストではキャッシュヒットが発生し、同じサーバーに転送されます。
  • 送信元IPハッシュ:このアルゴリズムは、クライアントの送信元IPアドレスと宛先IPアドレスを使用して一意のハッシュキーを生成し、クライアントを特定のサーバーに関連付けます。セッションが切断されてもキーを再生成できるため、再接続リクエストを以前と同じサーバーにリダイレクトできます。
  • コンシステントハッシュ:このアルゴリズムでは、クライアントとサーバーの両方をリング構造にマッピングし、各サーバーの容量に応じてリング上の複数のポイントを割り当てます。クライアントからリクエストを受信すると、リング上のポイントにハッシュ化し、そこから時計回りで次に利用可能なサーバーへ動的にルーティングします。

ロードバランシングの仕組み

ロードバランシングでは、ユーザーからのリクエストに静的または動的に応答し、そのリクエストを処理可能なバックエンドサーバーのいずれかに振り分けます。いずれかのサーバーが停止した場合、ロードバランサーは稼働中の残りのサーバーにトラフィックをリダイレクトします。

ロードバランサーの図

負荷分散の例

静的負荷分散の例:ある企業が、コンテンツの大部分が静的なWebサイトをホストしているとします。この場合、トラフィックの需要が予測可能で安定しているため、静的ロードバランサーの利用が適しています。企業は同一構成のWebサーバーを2台以上使用し、静的ロードバランサーでトラフィックを分散できます。

動的負荷分散の例:企業では、トラフィックが急増、急減することがあります。予測できる場合もあれば、できない場合もあります。このような組織には、動的負荷分散が役立ちます。たとえば、ブラックフライデーの営業時間と日程を発表するEコマース小売業者、季節性ワクチンのオンライン予約受付を開始した医療機関、失業保険の受給者に毎週特定の曜日に給付申請を行うよう求める政府の失業保険機関、自然災害に対してオンラインで迅速に対応する必要が生じる可能性のある救援団体などが挙げられます。こうしたトラフィックや需要の急増には、事前に対応を計画できるものもあれば、できないものもあります。このような状況では、動的負荷分散アルゴリズムにより、顧客やユーザーが最も必要とするときにアプリやリソースへアクセスできるよう支援します。

ロードバランサーの種類

さまざまな機能を備えた各種ロードバランサーは、開放型システム間相互接続(OSI)モデルと呼ばれるアーキテクチャの各層に配置されます。このモデルは7つの層で構成されています。ネットワークファイアウォールはレイヤー1~3(L1:物理層、L2:データリンク層、L3:ネットワーク層)で機能します。一方、負荷分散はレイヤー4~7(L4:トランスポート層、L5:セッション層、L6:プレゼンテーション層、L7:アプリケーション層)で行われます。ロードバランサーは通常、レイヤー4とレイヤー7で使用されます。

  • レイヤー4ロードバランサーは、ネットワーク層およびトランスポート層のプロトコル(IP、TCP、FTP、UDP)から得られるデータに基づいてトラフィックを振り分けます。IP層での負荷分散とは、WebサイトのロードバランサーのIPアドレスをクライアントに公開し、そのアドレスを宛先アドレスとして記録する構成を指します。ロードバランサーはリクエストを受信すると、記録された宛先IPアドレスを、選択したコンテンツサーバーのIPアドレスに変更します。
  • レイヤー7ロードバランサーは、アプリケーション層プロトコルに含まれるデータに基づいてリクエストを分散します たとえば、HTTPヘッダー、Cookie、URI(Uniform Resource Identifier)、SSLセッションID、HTMLフォームデータなどです。また、特定のパラメーターの値など、アプリケーションメッセージ自体に含まれるデータに基づいてルーティングを決定できます。レイヤー7では、ロードバランシングにコンテンツスイッチングが加わります。

クラウドベースのロードバランサー

クラウドベースのロードバランサーは、トラフィックの急増に対応し、サーバー利用を最適化するためのトラフィック制御だけにとどまりません。クラウドネイティブのロードバランサーは、予測分析によって、トラフィックのボトルネックを発生前に可視化することもできます。これにより、企業がITソリューションを最適化するうえで役立つ、実用的なインサイトが得られます。

アプリケーション負荷分散:企業にとってアプリケーションのパフォーマンスと可用性がますます重要になる中、アプリケーション負荷分散は、拡張性の向上、運用の効率化、コスト削減に役立ちます。

グローバルサーバーロードバランシング:世界各地にユーザーや顧客を抱える企業は、グローバルサーバーロードバランシングを利用することで、ユーザーを最寄りのエンドポイントに転送し、負荷処理の可用性を高めることができます。

DNSロードバランシング:ドメインに対するユーザーリクエストが複数のサーバーマシンに分散されるよう、ドメインネームシステム(DNS)でドメインを構成する手法を「DNSロードバランシング」と呼びます。

ネットワーク負荷分散:物理サーバーのプロキシとして機能する物理または仮想アプライアンスであるアプリケーションデリバリーコントローラー(ADC)は、アプリケーションやネットワークの機能を管理し、それらを支えるネットワーク負荷分散ソリューションを利用します。また、ADCは、キャッシュ、圧縮、SSL処理のオフロードなどの手法も使用して、Webアプリケーションのパフォーマンスを向上させます。一般的な構成では、ADCはWebサーバーとアプリケーションサーバーのグループの前段に配置され、これらのサーバーとクライアント間のリクエストとレスポンスを仲介します。これにより、エンドユーザーにはサーバーグループ全体が1台の仮想サーバーのように見えます。

HTTP(S)ロードバランシング:リソース使用率を最適化するために、複数のWebサーバーまたはアプリケーションサーバーのグループにトラフィックを分散する手法を「HTTP(S)ロードバランシング」と呼びます。

内部負荷分散:内部ロードバランサーは内部ロードバランサープライベートサブネットに割り当てられ、パブリックIPを持ちません。通常はサーバーファーム内で動作します。

Diameter:Diameterロードバランサーは、ネットワーク内の複数のサーバーにシグナリングトラフィックを分散します。これを実現するうえで特に費用対効果の高い方法の1つは、データ転送レイヤーではなくDiameter制御プレーンをスケーリングすることです。(Diameterロードバランシングには、静的方式と動的方式もあります。)

ロードバランサー技術

ロードバランサーソリューションにはほかにも種類があり、単独で使用することも、クラウドネイティブなロードバランサーと組み合わせてネットワーク内で使用することもできます。主な種類は次のとおりです。

ハードウェアロードバランサー:ハードウェアロードバランサーは、通常オンプレミス環境で、複数のアプリケーションサーバーにWebトラフィックを分散するようプログラムできる専用オペレーティングシステムを搭載した物理デバイスです。

ソフトウェアロードバランサー:ソフトウェアロードバランサーは物理ロードバランサーと同様に動作しますが、ソフトウェアプログラム上で稼働します。このソフトウェアは、静的および動的な負荷分散を使用して単一障害点を排除し、さまざまなトラフィック需要がある状況でもアプリの可用性を維持します。

仮想ロードバランサー:ハードウェアロードバランサーとソフトウェアロードバランサーを組み合わせたタイプのロードバランサーです。アプリケーションデリバリーコントローラーソフトウェアを使用して、ハードウェアのバックエンドサーバー間でネットワークトラフィックの負荷を分散します。

F5が提供できる支援

  • 組織のニーズに適したロードバランサーを選ぶことは、システムの可用性と最適な状態を維持し、データへのアクセスを確保して、ユーザーとお客さまの満足度を高めるうえで極めて重要です。
  • F5は、静的なソリューションから、ハードウェア、ソフトウェア、クラウドベースのロードバランサーの強みを組み合わせた統合型のグローバルソリューションまで、お客さまの組織における個別のロードバランサーのニーズに対応できます。グローバルソリューションF5は、お客さま固有のビジネスニーズに適した負荷分散アルゴリズムまたはソリューションを提供します。
  • F5 NGINX PlusとNGINXは、Dropbox、Netflix、Zyngaなどの高トラフィックなWebサイトで使用されている、クラス最高水準の負荷分散ソリューションです。世界中で3億5,000万を超えるWebサイトが、コンテンツを迅速かつ確実、安全に配信するためにNGINX PlusとNGINX Open Sourceを利用しています。ソフトウェアベースのアプリケーションデリバリーコントローラー兼ロードバランサーであるNGINX Plusは、同等の機能を備えたハードウェアソリューションよりも大幅に低コストです。Webサーバー、負荷分散、キャッシュ、メディア配信などの機能を統合しており、アプリケーション配信の制御に最適です。
  • BIG-IPアプリケーションサービスは、デジタルアプリケーションサービスの管理、拡張、最適化を実現する統合ソリューションを提供します。また、BIG-IP Local Traffic Manager (LTM)は、単一障害点を排除するための静的および動的な負荷分散機能を備えています。F5 BIG-IP DNSは、アプリケーション間の負荷分散をグローバルに適用し、アプリケーションを稼働状態に保つことで、お客さまのニーズに応えられるようにします。
  • F5 Distributed Cloud DNS Load Balancerは、信頼性の高いディザスタリカバリを備えたシンプルな負荷分散ソリューションを提供します。これにより、開発チームはビジネスのイノベーション促進に注力できます。
  • F5 Distributed Cloud App Connectは、エッジを含むあらゆる種類の環境にわたってアプリとサービスを安全に接続し、負荷分散の実現を支援します。
  • F5は、アプリ、トラフィック、データ、コンピューティング環境を最適な状態に保つための包括的なロードバランシングソリューション群を提供します。