Возможно ли с помощью AWS AutoScaling никогда не завершать экземпляры до границы оплачиваемого часа?
Поскольку экземпляры AWS оплачиваются по часам, никогда не имеет смысла завершать работу экземпляра, который работал менее часа, если есть вероятность, что он вам может понадобиться снова.
Я хотел бы избежать ситуации с автоматическим масштабированием, когда я добавляю экземпляр, затем завершаю его, а затем добавляю еще один экземпляр в течение того же часа. Это привело бы к двум оплачиваемым часам.
Я написал свой собственный автоскалер, который пропускает завершение любого экземпляра, который имеет менее 55 минут времени выполнения, и для быстрой смены нагрузок это сэкономило нам много затрат. Просто интересно, есть ли у AWS такая возможность.
1 ответ
Автоматическое масштабирование не может "ждать" до конца часа, чтобы прекратить работу экземпляра. Тем не менее, есть несколько вариантов для изучения!
Когда запускается политика масштабирования, которая дает команду на автоматическое масштабирование (удаление экземпляра Amazon EC2), она сначала выбирает зону доступности с большинством экземпляров, а затем определяет, какой экземпляр следует завершить в этой зоне доступности. Этот выбор сделан Политикой завершения, которая может иметь значения:
- OldestInstance: автоматическое масштабирование завершает самый старый экземпляр в группе. Эта опция полезна, когда вы обновляете экземпляры в группе Auto Scaling до нового типа экземпляра EC2 и хотите в конечном итоге заменить экземпляры на более старые экземпляры новыми.
- NewestInstance: автоматическое масштабирование прекращает работу самого нового экземпляра в группе. Эта политика полезна, когда вы тестируете новую конфигурацию запуска, но не хотите поддерживать ее в рабочем состоянии.
- OldestLaunchConfiguration: автоматическое масштабирование завершает экземпляры с самой старой конфигурацией запуска. Эта политика полезна, когда вы обновляете группу и отказываетесь от экземпляров из предыдущей конфигурации.
- ClosestToNextInstanceHour: автоматическое масштабирование прекращает работу экземпляров, ближайших к следующему расчетному часу. Эта политика помогает вам максимально использовать ваши экземпляры и управлять расходами.
Последний вариант, ClosestToNextInstanceHour, - это почти то, что вы ищете, в томсмысле, что он прекратит работу экземпляра, который затем вызовет почасовую оплату. Тем не менее, он не будет "ждать" до конца часа.
Один из вариантов - написать собственное приложение, которое определяет, когда нужно масштабировать экземпляр, ожидая, пока экземпляр предоставит свое полное значение. Приложение может позвонитьTerminateInstanceInAutoScalingGroup
удалить и закрыть экземпляр.
Другой вариант, если экземпляр используется в качестве "бэк-энда" (без непосредственной обработки веб-запросов), - это использовать функцию автоматического масштабирования жизненного цикла, которая отправляет сигнал, когда экземпляр удаляется из группы автоматического масштабирования, но до прекращается. Это обычно используется, чтобы дать экземпляру возможность "завершить" работу, такую как копирование файлов журнала и завершение задачи. Если экземпляр используется для обработки длительных фоновых задач, ловушка жизненного цикла может использоваться для ожидания завершения работы или почти полного завершения часа выставления счетов, прежде чем разрешить завершение экземпляра.
Все это, однако, требует некоторых пользовательских сценариев. Готовая конфигурация автоматического масштабирования немедленно прекратит работу экземпляра в ответ на политику масштабирования (если не задействован "Отключение соединения").