Как ответить с кодом ошибки 503 в Kubernetes балансировщик нагрузки - PullRequest
0 голосов
/ 17 мая 2018

У меня есть вход с поддержкой Google Cloud Load Balancer в моем кластере Google Kubernetes Engine.У меня есть автоскалер, настроенный для масштабирования количества реплик моего развертывания в зависимости от загрузки процессора.Допустим, я установил порог ЦП на 50%.

При наличии пакета запросов загрузка ЦП достигает 100%.Автоматическое масштабирование занимает несколько минут, чтобы понять высокую нагрузку, создать больше модулей, создать новые узлы, если это необходимо, и пройти проверки работоспособности.В течение этого периода масштабирования некоторые или большинство запросов завершаются с ошибкой 502 из-за тайм-аутов.Я бы предпочел немедленно вернуть код ошибки 503, если сервер находится под большой нагрузкой, а не возвращать код ошибки 502. После 30-секундного тайм-аута.

Возможно ли, чтобы балансировщик нагрузки направлял трафик к модулям с наименьшимИспользование процессора?Можно ли вернуть код ошибки 503, если ни у одного из модулей загрузка ЦП ниже определенного порога, скажем, 80%?

Какова стандартная практика для обработки большого количества трафика и как мне поступитьо решении этого вопроса в Кубернетес?

1 Ответ

0 голосов
/ 18 мая 2018

Первая проблема, которую вы описываете (обслуживание 503), называется «сбросом нагрузки».Обычно приложение отвечает: «Ой, я перегружен, 503, помедленнее».Если вы передадите эту ответственность клиенту, то реакция может быть слишком медленной, чтобы обеспечить вам разумную защиту - ее данные всегда будут позади.С точки зрения надежности системы эту логику лучше хранить в серверном приложении.

Вторая проблема - балансировка нагрузки с учетом использования ЦП.Один из возможных подходов к этой проблеме называется взвешенным циклическим перебором - он похож на обычный циклический перебор, но предпочитает менее загруженные узлы.Если вы устанавливаете istio в Kubernetes, вы можете выбрать из список политик балансировки нагрузки .Одним из них является взвешенный наименьший запрос - он зависит от количества запросов в полете, а не напрямую от ЦП, но если все ваши запросы имеют примерно одинаковую стоимость ЦП, это может быть хорошим прокси для загрузки ЦП.

...