Как сделать балансировку нагрузки сервиса Kubernetes на основе IP клиента вместо IP обратного прокси NGINX

Я настроил NGINX как обратный прокси-сервер с включенными веб-сокетами для внутреннего веб-приложения с несколькими репликами. Запрос от NGINX выполняет proxy_pass службу Kubernetes, которая, в свою очередь, балансирует нагрузку запроса на конечные точки, сопоставленные с этой службой. Мне нужно убедиться, что запрос от конкретного клиента проксируется на тот же серверный модуль Kubernetes в течение жизненного цикла этого доступа, в основном поддерживая постоянство сеанса.

Пытался установить sessionAffinity: ClientIP в службе Kubernetes, однако при этом выполняется маршрутизация на основе IP-адреса клиента, который является прокси-сервером NGINX. Есть ли способ заставить службу Kubernetes выполнять привязку на основе фактического IP-адреса клиента, с которого был отправлен запрос, а не IP-адреса внутреннего модуля NGINX?


person Dinoop Thomas    schedule 17.05.2021    source источник


Ответы (1)


Это не вариант с Nginx. Или, скорее, это не вариант с чем-либо подобным в пользовательском пространстве без множества очень причудливых сетевых манипуляций. Вам нужно будет найти другой вариант, обычно правила прокси для конкретного приложения на самом внешнем уровне прокси HTTP.

person coderanger    schedule 17.05.2021