ADC

GSLB でパーシスタンスを設定する方法

永続性により、特定のドメイン名に対する一連のクライアント要求は、負荷分散されずに同じデータセンターに送信されます。特定のドメインに永続性が設定されている場合は、設定されているGSLBメソッドよりも優先されます。パーシスタンスは、クライアントトランザクションに関連する情報が、最初のリクエストを処理したインスタンスにローカルに保存されるデプロイに使用できます。たとえば、ショッピングカートを使用する電子商取引の展開では、サーバーが接続の状態を維持してトランザクションを追跡する必要があります。NetScalerアプライアンスは、クライアント要求を処理するデータセンターを選択します。パーシスタンスを有効にすると、それ以降のすべてのドメインネームシステム (DNS) 要求に対して、選択したデータセンターの同じ IP アドレスを転送します。永続セッションがダウンしているデータセンターを指している場合、NetScalerアプライアンスは構成済みのGSLB方式を使用して新しいデータセンターを選択します。その後、クライアントからの後続のリクエストでも永続的になります。 GSLBで永続化するには、すべてのデータセンターのGSLB仮想サーバーで同じ永続性識別子(PersistID)のセットを設定する必要があります。GSLB モジュールは、パーシスタンス識別子を使用して GSLB 仮想サーバーを一意に識別します。GSLB 仮想サーバーでソース IP パーシステンスが有効になっている場合、パーシステンスセッションもメトリック交換の一部として交換されます。NetScalerアプライアンスがサイト間のパーシステンスをサポートするには、参加しているすべてのGSLBサイトでパーシステンス関連の構成を行う必要があります。Citrixでは、ステートフルアプリケーションにはGSLBでの永続化を推奨しています。この場合、クライアントは後続のリクエストに対して同じアプリケーションインスタンスに再接続する必要があります。

GSLB の永続性は次の方法で実現できます。

  • GSLB 仮想サーバーでの永続性
  • GSLB サービスのサイト永続性

GSLB 仮想サーバーでの永続性

DNSリクエスト中は、GSLB仮想サーバー上のパーシスタンスが使用されます。DNS リクエストのソース IP アドレスは、クライアントとデータセンター間のパーシスタンスセッションを作成するために使用されます。DNSクライアントは通常、(ISP内の)背後にある一連のクライアントをプロキシするローカルDNS(LDNS)またはDNSゲートウェイです。GSLB 仮想サーバー上のパーシスタンスは、アプリケーションプロトコルに依存しません。 一般に、クライアントネットワークには複数の DNS ゲートウェイまたはローカルドメインネームサーバー (LDNS) が設定されます。Citrixでは、適切なパーシステンスマスクを構成することをお勧めします。これは、ADCアプライアンスへの接続に使用されるアップストリームLDNSデバイスに関係なく、クライアントは以前のリクエストを処理したのと同じデータセンターに永続化できるためです。LDNS IP アドレスのパーシスタンスセッションが作成されると、その LDNS を使用して接続しているすべてのエンドクライアントに同じデータセンター IP アドレスが与えられます。

GSLB サービスのサイト永続性

サイトパーシスタンスは、アプリケーションリクエストの処理中に有効になります。サイト永続性は HTTP Cookie を使用して実現されるため、HTTP トラフィックと HTTPS トラフィックに対してのみ機能します。Cookie は HTTP クライアント (ブラウザ) 上で管理されるため、DNS ゲートウェイの背後にいるクライアントを可視化できます。Cookie を使用してクライアントの永続性を実現すると、受信クライアントごとに ADC アプライアンスでリソースが消費されることはありません。遅延時間を設定して GSLB サービスを停止させると、サービスはアウトオブサービス (TROFS) 状態に移行します。永続性は、サービスが UP または TROFS 状態である限りサポートされます。つまり、サービスが TROFS とマークされた後、指定された遅延時間内に同じクライアントが同じサービスに対するリクエストを送信した場合、同じ GSLB サイト (データセンター) がそのリクエストを処理します。

エイリアスを使用してアプリケーションにアクセスする場合は、CNAMEレコードがNetScalerアプライアンスでも構成されていることを確認してください。親子トポロジでは、エイリアスを介してアプリケーションにアクセスすると、サイトパーシスタンスは機能しません。

接続プロキシがサイト永続化方法として指定されていて、LB 仮想サーバーにも永続性を設定する必要がある場合は、ソース IP 永続化はお勧めしません。接続がプロキシされる場合、クライアントの実際の IP アドレスではなく、ADC アプライアンスが所有する IP アドレスが使用されます。 Cookie パーシステンスやルールベースのパーシスタンスなど、HTTP (S) リクエストのソース IP を使用してクライアントを識別しない適切なパーシステンスを設定します。

送信元 IP アドレスに基づいてパーシステンスを設定

ソースIPパーシスタンスがGSLB仮想サーバーで設定されている場合、DNSリクエストのソースIPアドレスに対してパーシステンスセッションが作成されます。拡張クライアントサブネット (ECS) 機能に応じて、DNS リクエストの送信元 IP アドレスは次のいずれかから取得されます。

クライアントの永続セッションは、永続タイムアウトまで続きます。タイムアウト期間が終了すると、既存の永続セッションはクリアされます。後続のリクエストでは、新しい GSLB の決定が行われ、別の GSLB サービス IP アドレスが選択される可能性があります。 GSLB仮想サーバー上のソースIPパーシスタンスとGSLBサービスのサイトパーシスタンスは互いに補完し合っています。GSLB仮想サーバーでソースIPパーシスタンスが無効になっている場合、GSLB仮想サーバーはDNSが解決を試みるたびに異なるGSLBサービスを選択します。また、クライアントは別のGSLBサービスに接続し、アプリケーションリクエストを受信するデータセンターは、最初にクライアントにサービスを提供したデータセンターへの接続をプロキシします。これにより、レイテンシーが発生する可能性があります。そのため、GSLB仮想サーバーでソースIPパーシスタンスを有効にすることで、アプリケーションリクエストのこのような頻繁なマルチホップを回避できます。ソース IP パーシステンスセッションの有効期限が切れてからクライアントが再接続した場合、サイトパーシスタンスにより、クライアントは最初にクライアントにサービスを提供していたデータセンターに戻されます。また、クライアントが DNS ゲートウェイを経由して接続し直しても、設定されているパーシスタンスマスクの範囲に含まれない場合は、サイトパーシスタンスと同様に、クライアントが最初のリクエストを処理したデータセンターに留まるのにも役立ちます。

CLI を使用して送信元 IP アドレスに基づいてパーシステンスを設定するには

コマンドプロンプトで入力します。

set gslb vserver <name> -persistenceType (SOURCEIP|NONE) -persistenceId <positive_integer> [-persistMask <netmask>] –[timeout <mins>]
<!--NeedCopy-->

例:

set gslb vserver vserver-GSLB-1 -persistenceType SOURCEIP -persistenceId 23 -persistMask 255.255.255.255 –timeout 2
<!--NeedCopy-->

GUI を使用して送信元 IP アドレスに基づいてパーシステンスを設定するには

  1. [ トラフィック管理 ] > [ GSLB ] > [ 仮想サーバー ] に移動し、メソッドを変更するGSLB仮想サーバー(たとえば、Vserver-GSLB-1)をダブルクリックします。
  2. 持続性 」セクションをクリックし、「 持続性 」ドロップダウンリストから「 SOURCEIP 」を選択し、次のパラメータを設定します。
    • パーシスタンス ID — パーシスタンス ID
    • タイムアウト-タイムアウト
    • IPv4 ネットマスクまたは IPv6 マスク長-パーシステントマスク

HTTP クッキーに基づくサイトパーシステンスの設定

サイトの永続性は、HTTP Cookie (「サイトCookie」と呼ばれる) を使用してクライアントを同じサーバーに再接続することで実現されます。GSLBアプライアンスが選択したGSLBサイトのIPアドレスを送信してクライアントのDNS要求に応答すると、クライアントはそのGSLBサイトにHTTP要求を送信します。その GSLB サイトのアプリケーションエンドポイントは HTTP ヘッダーにサイト Cookie を追加し、サイト永続性が有効になります。 クライアントキャッシュの有効期限が切れた後にクライアントが DNS クエリを送信した場合、DNS 要求は別の GSLB サイトに送信される可能性があります。新しいGSLBサイトは、クライアントリクエストヘッダーにあるサイトCookie を使用して永続性を実装します。サイト永続化機能は次の条件で有効になります。

  • ホストヘッダーのドメイン名がいずれかのGSLBドメインと一致する場合
  • アプリケーショントラフィックを受信する仮想サーバーを表すGSLBサービスでサイト永続性が有効になっている場合。

サイトCookie には、クライアントが常時接続している選択した GSLB サービスに関する情報が含まれています。Cookie が指すGSLBサービスがダウンしているか、GLSB構成から削除されている場合、トラフィックを受信する仮想サーバーは引き続きトラフィックを処理します。Cookie の有効期限は、NetScalerアプライアンスで設定されているCookie ータイムアウトに基づいています。仮想サーバー名がすべてのサイトで同じでない場合は、パーシスタンス識別子を使用する必要があります。挿入されたクッキーは RFC 2109 に準拠しています。

NetScalerは、次の2種類のサイト永続性をサポートしています。

  • 接続プロキシ
  • HTTP リダイレクト

接続プロキシ

サイトパーシステンスの接続プロキシモードでは、後続のアプリケーション要求を受信するデータセンターが次のタスクを実行して接続を確立します。

  1. サイトCookie を挿入したGSLBサイトへの接続を作成します。
  2. クライアントのリクエストを元のサイトにプロキシします。

    注:

    プロキシサーバーは、次の情報を使用して元のサイトとの接続を確立します。

    • 新しいサイトの SNIP が送信元 IP アドレスです。
    • 元のサイトのGSLBサービスのパブリックIPアドレスが宛先IPアドレスです。
    • エフェメラルポートは送信元ポートで、GSLB サービスポートは宛先ポートです。
    • GSLB サービスの種類に応じて、HTTP または HTTPS プロトコルのいずれかを使用します。
  3. 元のGSLBサイトから応答を受け取ります。
  4. その応答をクライアントに中継します。
  5. 接続を閉じます。

HTTP リダイレクト

GSLB 設定で HTTP リダイレクトパーシスタンスが使用されている場合、新しいサイトは Cookie を最初に挿入したサイトにリクエストをリダイレクトします。リダイレクト URL のドメイン名はサイトドメインです。Cookie と SSL 証明書の両方が GSLB ドメインとサイトドメインの両方に適用できることを確認してください。GSLB とサイトドメインの両方にCookie を適用するには、クッキードメインがサイト間 GSLB ドメインでなければなりません。SSL証明書をGSLBとサイトドメインの両方に適用するには、SSL仮想サーバーにバインドされた証明書がワイルドカード証明書である必要があります。

接続プロキシは、次の条件が満たされたときに発生します。

  • GSLB に参加しているドメインにリクエストが送信されます。ドメインは URL/Host ヘッダーから取得されます。
  • ローカルの GSLB サービスでは、接続プロキシが有効になっています。
  • リクエストには、アクティブなリモート GSLB サービスの IP アドレスを含む有効な Cookie が含まれています。

GSLBの親子構成では、GSLBサービスが子サイトで構成されていない場合でも、接続プロキシは意図したとおりに機能します。ただし、クライアント認証、クライアントIPアドレスの挿入、またはその他のSSL固有の要件などの追加の構成がある場合は、サイトに明示的なGSLBサービスを追加し、それに応じて構成する必要があります。

親子トポロジの詳細については、「 MEP プロトコルを使用した親子トポロジの展開」を参照してください。

CLIを使用してHTTPCookieに基づいて永続性を設定するには

コマンドプロンプトで入力します。

set gslb service <serviceName> -sitePersistence (ConnectionProxy [-sitePrefix <prefix>] | HTTPredirect -sitePrefix <prefix>)
<!--NeedCopy-->

例:

set gslb service service-GSLB-1 -sitePersistence ConnectionProxy
set gslb service service-GSLB-1 -sitePersistence HTTPRedirect -sitePrefix vserver-GSLB-1
<!--NeedCopy-->
  1. [ トラフィック管理 ] > [ GSLB ] > [ サービス ] に移動し、サイト永続性を設定するサービス (たとえば、Service-GSLB-1) を選択します。
  2. サイトパーシステンス 」セクションをクリックし、クッキーに基づいてパーシステンスを設定します。
GSLB でパーシスタンスを設定する方法