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

Как балансировщики нагрузки, проверки работоспособности и автомасштабирование должны справляться с скачками?

У меня есть сервис, который выглядит так: Интернет -> Балансировщик нагрузки -> Экземпляры

Кажется, что в моем сервисе происходит следующий сценарий:

  1. Приходит большой всплеск пользовательского трафика, больше, чем могут справиться текущие экземпляры.

  2. Подсистема балансировки нагрузки выполняет проверки работоспособности и обнаруживает, что они не работают из-за перегрузки экземпляров.

  3. Балансировщик нагрузки запускает завершение работы отказавших экземпляров и заменяет их новыми. Он обнаруживает высокую загрузку ЦП в кластере, а также создает больше экземпляров, чем было раньше.

  4. Теперь нет экземпляров, которые могут обрабатывать любые запросы, и служба полностью не работает, пока не будут готовы новые экземпляры.

Очевидно, это плохое положение вещей. Что делать вместо этого?

Речь идет о AWS ECS Fargate и AWS Application Load Balancer. Параметры конфигурации, кажется, состоят в основном из настройки различных значений без изменения поведения.

Проверка работоспособности очень проста, загружает статический файл. Он в основном измеряет, жив ли веб-сервер в каждом экземпляре или нет.

Автоматическое масштабирование настроено для измерения загрузки ЦП и масштабирования в течение 30 секунд.

Я не вижу, как улучшить архитектуру с помощью этого набора инструментов. Есть ли способ лучше?

Я думаю, что на концептуальном уровне то, что я ищу, называется «Качество обслуживания», когда один пользователь не может нарушить доступность для других пользователей. Это похоже на защиту от DDOS, за исключением того, что трафик является законным.