Amazon недавно представил Политики отслеживания целей для автоматического масштабирования EC2.
В своей производственной службе я использую две отдельные группы автоматического масштабирования для поддержки гибридного автоматического масштабирования со смесью спотовых инстансов и инстансов по требованию. Я хочу, чтобы использование моего ЦП не превышало 70%, и он должен использовать спотовые инстансы, когда это возможно, но при необходимости возвращаться к инстансам по требованию.
Во-первых, я установил обе группы Auto-Scaling (Spot и On-Demand) на использование Target Tracking для 70% загрузки процессора и установил минимальный размер обеих групп равным единице. Трафик на моем сервисе вполне предсказуем (без резкого повышения, больше трафика днем, мало трафика ночью).
В какой-то момент было запущено два инстанса по запросу и два спотовых инстанса. Система только что уменьшилась, потому что загрузка ЦП пяти серверов стала очень низкой (около 35%). С четырьмя серверами загрузка ЦП увеличилась и через несколько минут ненадолго превысила отметку в 70% (возможно, в то время было очень небольшое увеличение трафика).
Система консервативно решила снова масштабироваться, но поскольку обе группы автоматического масштабирования приняли решение независимо в одно и то же время, были запущены два экземпляра (один спотовый и один по требованию). На данный момент было запущено шесть серверов. Через некоторое время он снова уменьшился и, наконец, достиг настройки для запуска четырех экземпляров.
Чтобы избежать этого эффекта, я изменил настройку следующим образом:
Я полагаю, что это должно помочь предотвратить описанный мною сценарий. Я ожидал, что группа On-Demand уменьшится раньше, чем группа Spot (что в любом случае желательно, поскольку они более дорогостоящие). И я ожидаю, что спотовые инстансы будут масштабироваться раньше, что должно защитить от ненужного масштабирования со стороны группы по требованию.
Это мои ожидания, но я не нашел подробностей в документации чтобы подтвердить это. Может ли кто-нибудь пролить свет на то, как работает новое масштабирование Target Tracking, и как его применить к гибридной настройке с инстансами Spot и On-Demand?
Вопросы:
If I set the target to 70% CPU utilization, when will it decide to scale up and when to scale down?
- AWS не говорит точно, как это работает, но он создаст два сигнала тревоги CloudWatch для каждой политики отслеживания целей, один для масштабирования, а другой для масштабирования, вы можете проверить пороговые значения для них, чтобы увидеть, когда они будут срабатывать
If I have two Auto-Scaling groups, one with a 70% CPU utilization target and the other with 65%, when will it decide to scale up or down? Will it always prefer to scale down the 70% group? Will it always prefer to scale up the 65% group?
What happens if the prices in the Spot market suddenly rise to exceed my bid limit. Will the On-Demand auto-scaling group take over?
- В конечном итоге спотовые инстансы будут остановлены, что приведет к увеличению нагрузки на инстансы по требованию, что приведет к их масштабированию.
Is my understanding correct that manually defining the number of desired instances has only a short-term effect and will be automatically adjusted by the Auto Scaling policy?
- Правильно, «желаемая емкость» - это то, что меняет политика масштабирования, чтобы экземпляры были завершены или запущены.
For example, if it scaled down to the minimum during the night and scaled up again next day, does it mean that the initial "number of desired instances" settings from the previous day are now obsolete? In other words, do I need to worry only about setting reasonable value for minimum and maximum, and will AWS will figure out the rest?
- Правильно, минимальное и максимальное значения - это границы желаемого (они не могут опускаться ниже минимального или выше максимального)
Одна вещь, на которую вы должны обратить внимание, - это новая функция, с помощью которой вы можете смешивать точечный и On-Demand в одной группе AutoScaling. Вы также можете иметь несколько типов экземпляров в одной группе AutoScaling одновременно. Таким образом, теоретически вы можете создать одну группу с несколькими выбранными типами резервных экземпляров, используя 2 самых дешевых спотовых экземпляра в любой момент времени с другими в качестве запасных, если эти два используют нашу спотовую емкость.
Об этой новой функции следует отметить два важных момента: 1) Если в любой из зон доступности, выбранных вами для любого из выбранных вами типов инстансов, нет спотовой мощности, она НЕ будет автоматически переключаться на режим по требованию. Таким образом, если у вас настроено 50% спотовых и 50% по требованию, а желаемое - 10, без спотовой доступности, у вас будет всего 5 инстансов по требованию. Если бы у вас было выбрано достаточно разных типов экземпляров, я бы подумал, что это не проблема, но кто знает.
2) Большая часть балансировки нагрузки при использовании циклического перебора или чего-то подобного для распределения подключений к экземплярам, поэтому, если есть 1 быстрый экземпляр и 1 медленный, они оба получат одинаковое количество подключений, а медленный в конечном итоге получит увязший