Я пытаюсь развернуть приложение с балансировкой нагрузки в kubernetes.
Ниже приведена моя схема развертывания
в идеалеприложение разворачивается с помощью набора модулей с использованием развертывания k8s с типом «backend»
, обычно пользовательские экземпляры хранятся в архиве.и динамически восстанавливаются в один из модулей по запросу, остаются там в течение времени TTL (скажем, 30 минут), а также удаляются и резервируются в архив.
в идеале баланс нагрузки развертывается набором модулейиспользуя развертывание k8s с типом "frontend".
в идеале интерфейс настраивается как сеанс layer7, привязанный к "sticky = host".хост равен UID бэкэнда pod
, пользователь запрашивает сервис с помощью сообщения SOAP, которое содержит параметры "host" и "user" в своем теле.
при достижении сообщения SOAPво внешнем интерфейсе значение «host» извлекается из тела сообщения.
если значение «host» является допустимым, сообщение SOAP пересылается в соответствующий модуль бэкэнда (UID которого равен значению хоста).в противном случае назначается случайный внутренний модуль.
(обработка здесь зависит от приложения). В модуле бэкэнда приложение проверяет доступность пользовательского экземпляра по значению «user».
, если оно уже существует, просто используйте его;в противном случае попробуйте восстановить из архива;если восстановление не удалось (новый пользователь), создайте новый пользовательский экземпляр.
Я искал вокруг и не нашел подобных примеров.особенно липкая конфигурация сеанса layer7, и реализация пользовательского получения липкого значения из тела входящего сообщения.