特定の接続情報またはヘッダー情報のハッシュに基づく負荷分散方法は、Citrix ADCアプライアンスの負荷分散方式のほとんどを構成します。ハッシュは、基づいている情報よりも短く使いやすく、2つの異なる情報が同じハッシュを生成しないため、互いに混乱しないように十分な情報を保持しています。
ハッシュ負荷分散方法は、キャッシュがインターネットまたは指定したオリジンサーバーからの幅広いコンテンツを提供する環境で使用できます。リクエストをキャッシュすると、リクエストとレスポンスのレイテンシーが削減され、リソース(CPU)の使用率が向上し、頻繁に使用されるWebサイトやアプリケーションサーバーでキャッシュが普及します。これらのサイトは負荷分散の恩恵を受けるため、ハッシュ負荷分散方式は広く有用です。
NetScalerアプライアンスには次のハッシュメソッドがあります。
-
URLハッシュ方式
-
ドメインハッシュ法
-
宛先 IP ハッシュ方式
-
ソース IP ハッシュ方式
-
送信元 IP 宛先 IP ハッシュ方式
-
送信元 IP 送信元ポートのハッシュ方式
-
コール ID ハッシュメソッド
-
トークン方式
ほとんどのハッシュアルゴリズムは、次の 2 つのハッシュ値を計算します。
次に、Citrix ADCアプライアンスは、これらのハッシュ値の両方を使用して新しいハッシュ値を生成します。最後に、ハッシュ値が最も高いサービスにリクエストを転送します。アプライアンスは各リクエストのハッシュ値を計算し、要求を処理するサービスを選択すると、キャッシュが生成されます。同じハッシュ値を持つ後続の要求は、同じサービスに送信されます。次のフローチャートは、このプロセスを示しています。
Citrix ADCリリース13.0ビルド79.xから、プライム再シャッフルアシストCARP(PRAC)とジャンプテーブルアシストリングハッシュ(JAR)の一貫性のあるハッシュアルゴリズムがサポートされています。一貫性のあるハッシュアルゴリズムにより、ロードバランシングセットアップにサービスが追加または削除されたとき、またはロードバランシングセットアップでサービスフラップイベント中にサービスが中断される最小限に抑えられます。詳細については、「
一貫性のあるハッシュアルゴリズム」を参照してください。
図1:ハッシュメソッドによるリクエストの配布
ハッシュ方法は、IPv4 アドレスと IPv6 アドレスに適用できます。
3 つのサービス (サービス HTTP-1、サービス HTTP-2、サービス HTTP-3) が仮想サーバーにバインドされ、任意のハッシュ方式が設定され、ハッシュ値が Hash1 であるシナリオを考えてみましょう。設定されたサービスが UP になると、要求は Service-HTTP-1 に送信されます。Service-HTTP-1がダウンしている場合、NetScalerアプライアンスはサービス数の最後のログのハッシュ値を計算します。次に、アプライアンスは Service-HTTP-2 など、ハッシュ値が最も高いサービスを選択します。次の図は、このプロセスを示しています。
図2:ハッシュメソッドのエンティティモデル
Citrix ADCアプライアンスがハッシュ方式を使用してサービスを選択できない場合、デフォルトでは、着信要求のサービスを選択するための最小接続方法が使用されます。負荷分散設定のパフォーマンスに影響を与えずにキャッシュを再入力できるように、トラフィックが少ない時間帯にサービスを削除してサーバープールを調整します。