Назад | Перейти на главную страницу

балансировщик нагрузки kubernetes с липким сеансом всегда отправляет трафик на один под

У меня проблема с настройкой балансировщика нагрузки, когда он всегда перенаправляет большую часть трафика (например, 99%) на один модуль. В основном инфраструктура такая, как показано на этой диаграмме. Задача состоит в том, чтобы включить закрепленный сеанс, будь то на nginx или балансировщике нагрузки Google, и мой трафик равномерно распределяется по доступным модулям.

Вкратце, у меня в кластере 2 RC и 2 сервиса. 1 модуль nginx обслуживается за балансировщиком нагрузки Google (nginx-lb) и другим балансировщиком нагрузки (app-lb) для балансировки трафика между 2 модулями приложений. Вот что я подумал о конфиге:

Я тестировал эту конфигурацию с ~ 50 пользователями, работающими в течение дня, но все еще перенаправляющими на один модуль, в то время как другой модуль простаивает с низким уровнем использования процессора и памяти по сравнению с первым.

Я хотел бы спросить с настройкой, правильно ли я получаю то, чего хочу достичь? Есть ли конфигурация, которую мне не хватает? Мы будем очень благодарны за любой вклад.

PS. Я переписываю весь вопрос, чтобы добавить больше фактов из того, что я понял, но в основном по-прежнему актуален для исходного вопроса с другими формулировками.

Это происходит, потому что вы используете sessionAffinity: ClientIP, это привязка к службе, основанная на IP-адресе, поэтому служба получает IP-адрес вашего балансировщика нагрузки, попробуйте использовать sessionAffinity: None и если вы хотите использовать липкий сеанс, используйте контроллер входа nginx

Вы пробовали тестировать свои приложения с большим количеством клиентов, чем ваш мобильный телефон и ноутбук?
Возможно, вы могли бы протестировать его на нескольких экземплярах вычислительного движка Google.

Поскольку вы реализуете как липкий сеанс, так и балансировку нагрузки с помощью ip_hash у вас есть 50% шанс, что два устройства будут обслуживаться одним и тем же модулем, и даже если вы перезагрузите страницу, она всегда будет обслуживаться одним модулем, пока вы не измените IP.

При использовании ip-hash IP-адрес клиента используется в качестве ключа хеширования для определения того, какой сервер в группе серверов должен быть выбран для запросов клиента. Этот метод гарантирует, что запросы от одного и того же клиента всегда будут направлены на один и тот же сервер, за исключением случаев, когда этот сервер недоступен. http://nginx.org/en/docs/http/load_balancing.html