次の方法で共有


Application Gateway for Containers セッション アフィニティの概要

セッション アフィニティは "セッション永続化" または "スティッキー セッション" とも呼ばれ、クライアントの要求が常に同じサーバーに送信されるように負荷分散に使用される手法です。 これは、セッション変数または特定のサーバー上のローカル キャッシュ (一般にステートフル アプリケーションと呼ばれます) にユーザー データを保存するアプリケーションで重要です。

セッション アフィニティを使用すると、Application Gateway for Containers は、最初の応答の Set-Cookie ヘッダーに Cookie を提示します。 クライアントが今後の要求で Cookie を提示した場合、Application Gateway for Containers は Cookie を認識し、トラフィックを同じバックエンド ターゲットに転送します。 次のシナリオ例を参照してください。

Application Gateway for Containers のセッション アフィニティを示す図。

前の図では、次の手順を示しています。

  1. クライアントは、Application Gateway for Containers (Application Gateway for Containers) のフロントエンドへの要求を開始します。
  2. Application Gateway for Containers は、要求の負荷分散に使用できる多数のポッドの中から 1 つを選択します。 この例では、使用可能な 4 つのポッドのうち、ポッド C が選択されていることを前提としています。
  3. ポッド C は、Application Gateway for Containers に応答を返します。
  4. ポッド C からのバックエンド応答に加えて、Application Gateway for Containers は、ルーティングに使用される一意的に生成されたハッシュを含む Set-Cookie ヘッダーを追加します。
  5. クライアントは、前の手順で設定したセッション アフィニティ Cookie と共に、Application Gateway for Containers に別の要求を送信します。
  6. Application Gateway for Containers は Cookie を検出し、ポッド C を選択して要求を処理します。
  7. ポッド C が Application Gateway for Containers に応答します。
  8. Application Gateway for Containers がクライアントに応答を返します

Usage details

セッション アフィニティは、次のプロパティと特性によって定義されます。

名前 説明
affinityType 有効な値は、application-cookie または managed-cookie です。
cookieName affinityType が application-cookie の場合に必須です。 これは Cookie の名前です。
cookieDuration affinityType が application-cookie の場合に必須です。 これは Cookie の秒単位の期間 (有効期間) です。

アフィニティの種類がマネージド Cookie の場合、Cookie がクライアントに提供されるときに Application Gateway は定義済みの値を使用します。

  • Cookie の名前は AGCAffinity です。
  • Cookie の期間 (有効期間) は 86,400 秒 (1 日) です。
  • cookieNamecookieDuration のプロパティと値は破棄されます。

アフィニティの種類がアプリケーションの場合、Cookie の名前と期間 (有効期間) を明示的に定義する必要があります。

セッション アフィニティの構成方法

セッション アフィニティは RoutePolicy リソースで定義できます。これは、定義された HTTPRoute を対象とします。 affinityTypeapplication-cookie または managed-cookie のいずれかに設定し、sessionAffinity を指定する必要があります。 この例では、affinityType として application-cookie を使用し、Cookie の名前と有効期間を明示的に定義します。

有効期間が 3,600 秒 (1 時間) の nomnom と呼ばれる定義済みの Cookie を使用して新しい RoutePolicy を作成するコマンドの例を示します。

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: RoutePolicy
metadata:
  name: session-affinity-route-policy
spec:
  targetRef:
    kind: HTTPRoute
    name: http-route
    namespace: test-infra
    group: ""
  default:
    sessionAffinity: 
      affinityType: "application-cookie"
      cookieName: "nomnom"
      cookieDuration: 3600
EOF