Как балансировщики нагрузки, проверки работоспособности и автоскалер должны справляться с скачками напряжения?
У меня есть сервис, который выглядит так: Интернет -> Балансировщик нагрузки -> Экземпляры
Кажется, что происходит в моем сервисе по следующему сценарию:
Поступает большой всплеск пользовательского трафика, больше, чем могут выдержать текущие экземпляры.
Балансировщик нагрузки выполняет проверки работоспособности и видит, что они не работают, потому что экземпляры перегружены.
Балансировщик нагрузки запускает завершение сбойных экземпляров и заменяет их новыми. Он обнаруживает высокую загрузку ЦП в кластере, а также создает больше экземпляров, чем было ранее.
Теперь существует ноль экземпляров, которые могут обрабатывать любые запросы, и служба полностью недоступна, пока новые экземпляры не будут готовы.
Очевидно, это плохое положение дел. Что нужно сделать вместо этого?
Этими инструментами являются AWS ECS Fargate и AWS Application Load Balancer. Параметры конфигурации, по-видимому, состоят в основном из настройки различных значений без изменения поведения.
Проверка работоспособности очень проста, она загружает статический файл. Это в основном измеряет, является ли веб-сервер в каждом случае живым или мертвым.
Автоматический масштабер настроен на измерение загрузки процессора и масштабирование в течение 30 секунд.
Я не вижу, как улучшить архитектуру, используя этот набор инструментов. Есть ли способ лучше?
Я думаю на концептуальном уровне, что я ищу, называется "Качество обслуживания", где один пользователь не может нарушить доступность для других пользователей. Это похоже на защиту DDOS, за исключением того, что трафик является законным.