Ingress NetScaler でセッションアフィニティまたはパーシステンスを設定する
Ingress NetScaler のセッションアフィニティまたはパーシステンス設定により、グループ内のどの仮想サーバーがクライアント要求を受信しても、クライアント要求を同じ選択されたサーバーに転送できます。パーシステンスの構成時間が期限切れになると、グループ内の任意の仮想サーバーが受信クライアント要求に対して選択されます。
パーシステンスが設定されている場合、サーバーが選択されるとロードバランシングメソッドを上書きします。これにより、その仮想サーバーによって表されるサーバー上の接続の状態が維持されます。NetScaler は、サーバーの初期選択には構成されたロードバランシングメソッドを使用しますが、同じクライアントからの後続のすべての要求は同じサーバーに転送します。
最も一般的に使用されるパーシステンスタイプは、Cookie に基づくパーシステンスです。
Cookie に基づくパーシステンスを設定する
Cookie に基づくパーシステンスを有効にすると、NetScaler は HTTP 応答の
Set-Cookie ヘッダーフィールドに HTTP Cookie を追加します。この Cookie には、HTTP 要求を送信する必要があるサービスに関する情報が含まれています。クライアントは Cookie を保存し、後続のすべての要求にそれを含め、ADC はそれを使用してそれらの要求のサービスを選択します。
NetScaler は Cookie
<NSC_XXXX>= <ServiceIP> <ServicePort> を挿入します。
ここで:
-
<<NSC_XXXX>は、仮想サーバー名から派生した仮想サーバー ID です。 -
<<ServiceIP>は、サービスの IP アドレスの 16 進値です。 -
<<ServicePort>は、サービスのポートの 16 進値です。
NetScaler は、Cookie を挿入するときに
ServiceIP と ServicePort を暗号化し、Cookie を受信するときにそれらを復号化します。
例:
a.com=ffffffff02091f1045525d5f4f58455e445a4a423660;expires=Fri, 23-Aug-2019 07:01:45。
NetScaler Ingress Controller が提供する次の Ingress アノテーションを使用して、Ingress NetScaler でパーシステンス設定を構成できます。
ingress.citrix.com/lbvserver: '{"apache":{"persistenceType":"COOKIEINSERT", "timeout":"20", "cookiename":"k8s_cookie"}}'
ここで:
-
timeoutは永続性の期間を指定します。セッションクッキーがtimeoutの値 0 で使用される場合、使用される HTTP クッキーのバージョンに関わらず、NetScaler によって有効期限は指定されません。セッションクッキーはウェブブラウザが閉じられると期限切れになります。 -
cookienameは最大32文字のクッキー名を指定します。指定しない場合、クッキー名は内部的に生成されます。 -
ここでの
persistenceTypeは使用する永続性のタイプを指定し、COOKIEINSERTはクッキーベースの永続性に用いられます。クッキー以外にも、適切な引数やその他の必要なパラメータとともに他のオプションも使用できます。
可能な値は、SOURCEIP、SSLSESSION、DESTIP、SRCIPDESTIP などです。
送信元IPアドレス永続性
Ingress NetScaler で送信元 IP 永続性が構成されている場合、ロードバランシング仮想サーバーに永続性を設定でき、同じクライアントからの後続のリクエストに対してスティッキネスを作成します。
送信元IPアドレス永続性を構成するためのIngressアノテーションの例を次に示します。
ingress.citrix.com/lbvserver: '{"apache":{"persistenceType":"SOURCEIP", "timeout":"10"}}'
SSLセッションID永続性
SSLセッションID永続性が構成されている場合、NetScalerアプライアンスは、SSLハンドシェイクプロセスの一部であるSSLセッションIDを使用して、最初の要求がサービスに転送される前に永続性セッションを作成します。ロードバランシング仮想サーバーは、同じSSLセッションIDを持つ後続の要求を同じサービスに転送します。このタイプの永続性は、SSLブリッジサービスに使用されます。
SSLセッションID永続性を構成するためのIngressアノテーションの例を次に示します。
ingress.citrix.com/lbvserver: '{"apache":{"persistenceType":"SSLSESSION"}}'
宛先IPアドレスベースの永続性
このタイプの永続性では、Ingress NetScaler が新しいクライアントからリクエストを受信すると、仮想サーバーによって選択されたサービス (宛先 IP アドレス) の IP アドレスに基づいて永続性セッションを作成します。その後、同じ宛先 IP へのリクエストを同じサービスに転送します。このタイプの永続性は、リンクロードバランシングで使用されます。
宛先IPアドレスベースの永続性を構成するためのIngressアノテーションの例を次に示します。
ingress.citrix.com/lbvserver: '{"apache":{"persistenceType":"DESTIP"}}'
送信元および宛先IPアドレスベースの永続性
このタイプの永続性では、NetScalerアプライアンスがリクエストを受信すると、クライアントのIPアドレス(送信元IPアドレス)と仮想サーバーによって選択されたサービスのIPアドレス(宛先IPアドレス)の両方に基づいて永続性セッションを作成します。その後、同じ送信元IPから同じ宛先IPへのリクエストを同じサービスに転送します。
以下は、送信元および宛先IPアドレスベースの永続性を構成するためのIngressアノテーションのサンプルです。
ingress.citrix.com/lbvserver: '{"apache":{"persistenceType":"SRCIPDESTIP"}}'