次の方法で共有


コンテナ向けのアプリケーションゲートウェイのセッション親和性の概要

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

セッション アフィニティを使用すると、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. Application Gateway for Containers では、ポッド C からのバックエンド応答に加えて、ルーティングに使用される一意に生成されたハッシュを含む 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 がクライアントに応答を返す

使用状況の詳細

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

名前 説明
アフィニティタイプ 有効な値は、アプリケーション Cookie またはマネージド Cookie です。
cookieName affinityType が application-cookie の場合は必須。 これは Cookie の名前です。
クッキー期間 affinityType が application-cookie の場合は必須。 これは、Cookie の有効期間 (秒) です。

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

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

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

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

セッション アフィニティは、定義された HTTPRoute を対象とする RoutePolicy リソースで定義できます。 sessionAffinityまたはaffinityTypeのいずれかのapplication-cookiemanaged-cookieを指定する必要があります。 この例では、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: 3600s
EOF