обзор сопоставления сеансов Шлюз приложений для контейнеров
Сходство сеансов, также известное как сохраняемость сеансов или липкие сеансы, — это метод, используемый в балансировке нагрузки, чтобы гарантировать, что запросы клиента всегда отправляются на тот же сервер. Это важно для приложений, которые хранят данные пользователей в переменных сеанса или в локальном кэше на определенном сервере (обычно называются приложением с отслеживанием состояния).
При сопоставлении сеансов Шлюз приложений для контейнеров представляет файл cookie в заголовке Set-Cookie первого ответа. Если клиент представляет файл cookie в будущих запросах, Шлюз приложений для контейнеров распознает файл cookie и перенаправляет трафик в тот же серверный целевой объект. См. следующий пример сценария:
На предыдущей схеме показаны следующие шаги:
- Клиент инициирует запрос к интерфейсу Шлюз приложений для контейнеров (Шлюз приложений для контейнеров).
- Шлюз приложений для контейнеров выбирает один из множества доступных модулей pod для балансировки нагрузки запроса. В этом примере предполагается, что pod C выбран из четырех доступных модулей pod.
- Pod C возвращает ответ на Шлюз приложений для контейнеров.
- В дополнение к ответу серверной части pod C Шлюз приложений для контейнеров добавляет заголовок Set-Cookie, содержащий уникальный хэш, используемый для маршрутизации.
- Клиент отправляет еще один запрос на Шлюз приложений для контейнеров вместе с файлом cookie сопоставления сеансов, заданным на предыдущем шаге.
- Шлюз приложений для контейнеров обнаруживает файл cookie и выбирает Pod C для обслуживания запроса.
- Pod C отвечает на Шлюз приложений для контейнеров.
- Шлюз приложений для контейнеров возвращает ответ клиенту
Сведения об использовании
Сходство сеансов определяется следующими свойствами и характеристиками:
Имя | Описание |
---|---|
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