負荷分散アルゴリズムとは?
ロードバランサーは、1つのサーバーが過負荷にならないようにするソフトウェアまたはハードウェア機器です。負荷分散アルゴリズムとは、サーバー間でネットワークトラフィックを分散するためにロードバランサーが使用するロジックです(アルゴリズムは、事前に定義されたルールのセットです)。
負荷分散には主要な二つのアプローチがあります。動的な負荷分散 は、各サーバーの現在の状態を考慮し、それに応じてトラフィックを分散させるアルゴリズムを使用します。 動的負荷分散では、トラフィックの分散にこのような調整は必要ありません。一部の静的アルゴリズムは、指定された順序(またはランダム)で、グループ内の各サーバーに同じ量のトラフィックを送信します。
負荷分散アルゴリズムの種類は?
動的負荷分散アルゴリズム
- 最小コネクション数:ある時点で開いているコネクション数が最も少ないサーバーをチェックし、そのサーバーにトラフィックを送信します。これは、すべての接続に必要な処理能力がほぼ同等であることを想定しています。
- 重み付き最小コネクション数:管理者は、あるサーバーが他のサーバーよりも多くの接続を処理できることを想定して、サーバーごとに異なる重みを割り当てることができます。
- 重み付き応答時間:各サーバーの平均応答時間と開いているコネクション数と組み合わせて、トラフィックの送信先を判断します。応答時間が最も早いサーバーにトラフィックを送信することで、ユーザーへのサービスを高速化するアルゴリズムです。
- リソースベース:ある時点でそれぞれのサーバーが利用可能なリソースに基づいて負荷分散を行います。それぞれのサーバー上で動作する専門ソフトウェア(「エージェント」と呼ばれる)がそのサーバーの利用可能なCPUとメモリを測定し、ロードバランサーはエージェントに問い合わせてからそのサーバーにトラフィックを分散します。
静的負荷分散アルゴリズム
- ラウンドロビン:ラウンドロビン式負荷分散では、Domain Name System(DNS)を用いてトラフィックをサーバーのリストに交互に分散します。権威ネームサーバーは、ドメインに対して異なるAレコードのリストを持ち、DNSクエリごとに異なる応答を返します。
- 重み付きラウンドロビン:管理者はそれぞれのサーバーに異なる重みを割り当てることができます。より多くのトラフィックを処理できると判断されたサーバーは、より多くのトラフィックを受け取ることになります。重み付けはDNSレコードで設定することができます。
- IPハッシュ:受信トラフィックの送信元と送信先のIPアドレスを組み合わせ、数学的関数を使用してハッシュ値に変換します。ハッシュ値に基づいて判断されたサーバーに接続が割り当てられます。
Cloudflare Load Balancingの仕組みは?
Cloudflare Load Balancingはヘルスチェック機能を利用して健全なサーバーにトラフィックを誘導します。また、管理者は、地理的なトラフィックをどこが処理するかをカスタマイズしてトラフィックの移動距離を短縮することができます。このアプローチは、広域負荷分散(GSLB)として知られています。