NCP ConfigMap で、パーシステンス設定にパラメータ l4_persistence と l7_persistence を指定できます。
レイヤー 4 パーシステンスに使用可能なオプションは、送信元 IP アドレスです。レイヤー 7 パーシステンスに使用可能なオプションは、Cookie と送信元 IP アドレスです。デフォルトは
<None> です。次はその例です。
# Choice of persistence type for ingress traffic through L7 Loadbalancer. # Accepted values: # 'cookie' # 'source_ip' l7_persistence = cookie # Choice of persistence type for ingress traffic through L4 Loadbalancer. # Accepted values: # 'source_ip' l4_persistence = source_ip
Kubernetes LoadBalancer サービスの場合は、サービス仕様に sessionAffinity を指定して、グローバル レイヤー 4 のパーシステンスがオフの場合、つまり l4_persistence が <None> に設定されている場合のサービスのパーシステンス動作を設定することもできます。l4_persistence が source_ip に設定されている場合、サービスのパーシステンス タイムアウトをカスタマイズするために、サービス仕様の sessionAffinity を使用できます。デフォルトのレイヤー 4 のパーシステンス タイムアウトは 10,800 秒です。これは、サービスの Kubernetes ドキュメントに指定されているものと同じです(https://kubernetes.io/docs/concepts/services-networking/serviceを参照)。デフォルトのパーシステンス タイムアウトが設定されているサービスはすべて、同じ NSX-T ロード バランサのパーシステンス プロファイルを共有します。デフォルト以外のパーシステンス タイムアウトを使用して、各サービスに専用プロファイルが作成されます。
注: Ingress のバックエンド サービスが LoadBalancer タイプのサービスである場合、サービスのレイヤー 4 仮想サーバと Ingress のレイヤー 7 仮想サーバに異なるパーシステンスを設定することはできません。たとえば、レイヤー 4 に
source_ip、レイヤー 7 に
cookie を設定することはできません。このようなシナリオでは、両方の仮想サーバのパーシステンス設定を同じ(
source_ip、
cookie、または
None)にするか、1 つを
None(その他の設定は
source_ip または
cookie)にする必要があります。シナリオの例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /tea
backend:
serviceName: tea-svc
servicePort: 80
-----
apiVersion: v1
kind: Service
metadata:
name: tea-svc <==== same as the Ingress backend above
labels:
app: tea
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
name: tcp
selector:
app: tea
type: LoadBalancer