Поделиться через


обзор сопоставления сеансов Шлюз приложений для контейнеров

Сходство сеансов, также известное как сохраняемость сеансов или липкие сеансы, — это метод, используемый в балансировке нагрузки, чтобы гарантировать, что запросы клиента всегда отправляются на тот же сервер. Это важно для приложений, которые хранят данные пользователей в переменных сеанса или в локальном кэше на определенном сервере (обычно называются приложением с отслеживанием состояния).

При сопоставлении сеансов Шлюз приложений для контейнеров представляет файл cookie в заголовке Set-Cookie первого ответа. Если клиент представляет файл cookie в будущих запросах, Шлюз приложений для контейнеров распознает файл cookie и перенаправляет трафик в тот же серверный целевой объект. См. следующий пример сценария:

Схема, изображающая Шлюз приложений для сходства сеансов контейнеров.

На предыдущей схеме показаны следующие шаги:

  1. Клиент инициирует запрос к интерфейсу Шлюз приложений для контейнеров (Шлюз приложений для контейнеров).
  2. Шлюз приложений для контейнеров выбирает один из множества доступных модулей pod для балансировки нагрузки запроса. В этом примере предполагается, что pod C выбран из четырех доступных модулей pod.
  3. Pod C возвращает ответ на Шлюз приложений для контейнеров.
  4. В дополнение к ответу серверной части pod C Шлюз приложений для контейнеров добавляет заголовок Set-Cookie, содержащий уникальный хэш, используемый для маршрутизации.
  5. Клиент отправляет еще один запрос на Шлюз приложений для контейнеров вместе с файлом cookie сопоставления сеансов, заданным на предыдущем шаге.
  6. Шлюз приложений для контейнеров обнаруживает файл cookie и выбирает Pod C для обслуживания запроса.
  7. Pod C отвечает на Шлюз приложений для контейнеров.
  8. Шлюз приложений для контейнеров возвращает ответ клиенту

Сведения об использовании

Сходство сеансов определяется следующими свойствами и характеристиками:

Имя Описание
affinityType Допустимые значения: application-cookie или managed-cookie.
cookieName Требуется, если affinityType — application-cookie. Это имя файла cookie.
cookieDuration Требуется, если affinityType — application-cookie. Это длительность (время существования) файла cookie в секундах.

В управляемом типе сопоставления файлов cookie Шлюз приложений использует предопределенные значения, когда файл cookie предлагается клиенту.

  • Имя файла cookie: AGCAffinity
  • Длительность (время существования) файла cookie составляет 86 400 секунд (один день).
  • Отменяются cookieName свойства и cookieDuration значения.

В типе сопоставления приложений имя файла cookie и длительность (время существования) должны быть явно определены.

Настройка сопоставления сеансов

Сходство сеансов можно определить в ресурсе RoutePolicy , который предназначен для определенного HTTPRoute. Необходимо указать sessionAffinity с помощью одного или application-cookie из managed-cookieследующих вариантовaffinityType. В этом примере мы используем application-cookie в качестве сходстваType и явно определяем имя файла cookie и время существования.

Пример команды для создания нового RoutePolicy с определенным файлом cookie nomnom с временем существования 3600 секунд (1 час).

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