Сохранение сессий#
Часто необходимо, чтобы запросы от клиента всегда передавались одному и тому же контейнеру бэкенда. Вы можете включить такое поведение с помощью функции сохранения сессий, доступной в ANIC.
ANIC поддерживает метод Чтобы включить сохранение сессий для одного или нескольких сервисов,
нужно настроить блок В следующем примере мы включаем сохранение сессий для двух сервисов:
Для обоих сервисов sticky cookie имеет одинаковое имя Сохранение сессий продолжает работать даже в случае,
если запущено несколько реплик ANIC.sticky cookie
.
При использовании этого метода ANIC добавляет session cookie в первый ответ от бэкенда,
идентифицируя контейнер, который отправил ответ.
Когда клиент делает следующий запрос, он отправляет значение cookie
,
и ANIC направляет запрос в тот же контейнер.Синтаксис#
sessionCookie
в конфигурации апстрима для каждого сервиса.
В аннотации указываются сервисы, для которых нужно включить сохранение сессий,
а также различные параметры cookie
. См. директиву sticky в конфигурации Angie.Пример#
tea-svc
и coffee-svc
:apiVersion: k8s.angie.software/v1
kind: VirtualServer
metadata:
name: cafe
spec:
host: cafe.example.com
tls:
secret: cafe-secret
upstreams:
- name: tea
service: tea-svc
port: 80
sessionCookie:
enable: true
name: srv_id
path: /tea
expires: 2h
- name: coffee
service: coffee-svc
port: 80
sessionCookie:
enable: true
name: srv_id
path: /coffee
expires: 1h
routes:
- path: /tea
action:
pass: tea
- path: /coffee
action:
pass: coffee
srv_id
.
Однако для каждого сервиса заданы разные значения времени жизни (expires
) и пути (path
).