Citrix ADC

仮想サーバー間での永続性のためのハッシュアルゴリズムのカスタマイズ

Citrix ADCアプライアンスは、仮想サーバー間の永続性を維持するために、ハッシュベースのアルゴリズムを使用します。デフォルトでは、ハッシュベースの負荷分散方式では、サービスの IP アドレスとポート番号のハッシュ値が使用されます。同じサーバー上の異なるポートでサービスが使用可能になった場合、アルゴリズムは異なるハッシュ値を生成します。したがって、異なる負荷分散仮想サーバーは、同じアプリケーションに対する要求を異なるサービスに送信し、疑似永続性を破る可能性があります。

ポート番号を使用してハッシュ値を生成する代わりに、サービスごとに一意のハッシュ識別子を指定できます。サービスの場合、すべての仮想サーバで同じハッシュ識別子値を指定する必要があります。物理サーバーが複数のタイプのアプリケーションを提供する場合、各アプリケーションタイプには一意のハッシュ識別子が必要です。

サービスのハッシュ値を計算するアルゴリズムは、次のように動作します。

  • デフォルトでは、グローバル設定では、ハッシュ計算でポート番号の使用が指定されます。
  • サービスのハッシュ識別子を構成すると、そのハッシュ識別子が使用され、ポート番号はグローバル設定に関係なく使用されません。
  • ハッシュ識別子を設定せず、グローバル設定のデフォルト値を変更してポート番号の使用を指定しない場合、ハッシュ値はサービスの IP アドレスだけに基づきます。
  • ハッシュ識別子を構成しない場合、またはポート番号を使用するようにグローバル設定のデフォルト値を変更しない場合、ハッシュ値はサービスの IP アドレスとポート番号に基づきます。

CLI を使用してサービスをサービスグループにバインドするときに、ハッシュ ID を指定することもできます。設定ユーティリティでは、サービスグループを開き、[Members] タブでハッシュ識別子を追加できます。

CLI を使用して use-port-number グローバル設定を変更するには

コマンドプロンプトで、次のように入力します。

lb パラメータの設定-使用ポートハッシュLb (はい) NO)

例:

> set lb parameter -usePortForHashLb NO
 Done
>show lb parameter
Global LB parameters:
        Persistence Cookie HttpOnly Flag: DISABLED
        Use port for hash LB: NO
 Done

GUI を使用して use-port-number グローバル設定を変更するには

  1. 「トラフィック管理」>「ロードバランシング」>「ロードバランシングパラメータの設定」に移動します。
  2. [ハッシュベースの LB メソッドにポートを使用] を選択または選択解除します。

CLI を使用して新しいサービスを作成し、サービスのハッシュ識別子を指定するには

コマンドプロンプトで次のコマンドを入力して、ハッシュ ID を設定し、設定を確認します。

add service < name > (< ip > < serverName >) < serviceType > < port > -hashId < positive_integer >
show service <name>

例:

> add service flbkng 10.101.10.1 http 80 -hashId 12345
 Done
>show service flbkng
        flbkng (10.101.10.1:80) - HTTP
        State: DOWN
        Last state change was at Thu Nov  4 10:14:52 2010
        Time since last state change: 0 days, 00:00:15.990
        Server Name: 10.101.10.1
        Server ID : 0   Monitor Threshold : 0

        Down state flush: ENABLED
        Hash Id: 12345

1)      Monitor Name: tcp-default
                State: DOWN     Weight: 1

 Done

CLI を使用して既存のサービスのハッシュ識別子を指定するには

set service コマンド、サービスの名前、 -hashID の後に ID 値を入力します。

サービスグループメンバーの追加時にハッシュ ID を指定するには

グループに追加する各メンバーのハッシュ識別子を指定し、設定を確認するには、コマンドプロンプトで次のコマンドを入力します (各メンバーに一意の hashID を指定してください。 ):

bind servicegroup <serviceGroupName> <memberName> <port> -hashId <positive_integer>

show servicegroup <serviceGroupName>

例:

 bind servicegroup http_svc_group 10.102.27.153 80 -hashId 2222222

>show servicegroup SRV
        SRV - HTTP
        State: ENABLED  Monitor Threshold : 0
        …

        1)         1.1.1.1:80   State: DOWN     Server Name: 1.1.1.1    Server ID: 123  Weight: 1
        Hash Id: 32211

                Monitor Name: tcp-default       State: DOWN
        …

        2)         2.2.2.2:80   State: DOWN     Server Name: 2.2.2.2    Server ID: 123  Weight: 1
        Hash Id: 12345

                Monitor Name: tcp-default       State: DOWN
        …
Done

GUI を使用してサービスのハッシュ識別子を指定するには

  1. [ トラフィック管理 ] > [ ロードバランシング ] > [ サービス] に移動します。
  2. 新しいサービスを作成するか、既存のサービスを開いてハッシュ ID を指定します。

GUI を使用して、すでに設定されているサービスグループメンバーのハッシュ ID を指定するには

  1. 「 トラフィック管理 」>「 ロードバランシング 」>「 サービスグループ 」に移動します。
  2. メンバーを開き、一意のハッシュ ID を入力します。