Я использую прокси-сервер HA в качестве контроллера входящего трафика. Он настроен с 2 репликами. Это означает, что трафик, достигающий службы Ingress Controller LB, может быть направлен на 2 модуля.
Мое конечное пользовательское приложение имеет 3 реплики. Служба конечного пользователя настроена с sessionAffinity:ClientIP
это означает, что сеансы между модулями контроллера входящего трафика и модулями приложений зависают.
Это вызывает проблему, когда 2 модуля контроллера входящего трафика направляют трафик на 2 разных модуля приложений. Сеанс конечного пользователя не поддерживается, и пользователь внезапно выходит из системы.
Идеальным в этом случае было бы
Один из вариантов — ввести sessionAffinity:ClientIP
также на Ingress Ctrl LB, но это повлияет на каждое приложение в кластере.
Как я могу убедиться, что для моего конкретного приложения запрос постоянно попадает только в один модуль Ingress Controller?
Текущее определение Ingress
Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
аннотации:
haproxy.org/backend-config-snippet: |
динамический ключ cookie Ingress
cookie INGRESSCOOKIE вставить непрямой динамический nocache
kubernetes.io/ingress.class: haproxy
имя: кеш
пространство имен: кеш
спецификация:
правила:
- хост: ac.com
http:
пути:
- бэкэнд:
оказание услуг:
имя: нексус
порт:
номер: 8080
дорожка: /
тип пути: префикс