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