Я думал о работе Дженкинса, чтобы проверить цены на ящики с агентами, которые мы раскручиваем; время от времени цена резко возрастает, и пройдет час или два, прежде чем кто-нибудь заметит, что новых агентов не появляется, а затем мы должны войти вручную и проверить спотовую цену и соответственно скорректировать ее, или переключить зоны и т. д.
Моим первым инстинктом было то, что лучше всего иметь почасовую работу Дженкинса, которая запускает aws ec2 describe-spot-instance-requests
и проверяет неудавшиеся запросы (а затем ослабляет нас при сбое). Но мне интересно, есть ли более чистый метод, который включает в себя фактическое сравнение жестких цен (и, следовательно, может сказать нам точно, что и сколько), вместо того, чтобы рассматривать успешные / неудачные запросы.
Кто-нибудь настраивал нечто подобное? Как ты это сделал?
Ответы:
Обнаружил инструмент с открытым исходным кодом под названием autospotting, который может помочь в этом:
У нас это есть в нашем конвейере задач, мы сможем добавить больше контекста, как только мы закончим это.
Обновить:
Другим инструментом, который недавно был продемонстрирован на конференции, был mapbox / spotwap
Это работает немного по-другому. Он отслеживает обычную ASG с экземплярами по требованию или зарезервированными, а затем, если возникает масштабирование, предлагает и обеспечивает выборку экземпляров аналогичного уровня вычислений в отдельной ASG.
источник
Я бы лично рассмотрел такую модель:
Тогда, когда вам нужны экземпляры:
Вы также можете установить некоторые допуски в лямбдах (например, увеличение на 10, 25, 50% в зависимости от важности) и жесткое ограничение по требованию, например. Это также отличное место для построения логики для обработки, например, поиска самого дешевого AZ, поиска относительно самой низкой спотовой цены (
2xt2.medium
противt2.large
) и т. Д.источник
Позвольте мне дать вам инструментальный способ сделать это.
Мы столкнулись с той же проблемой в инфраструктуре, которую мы строим. Итак, у нас были
if-else
блоки стилей для установки цены предложения в зависимости от цены экземпляра по требованию.В AWS есть API для получения цены экземпляра по требованию. Мы использовали эту оболочку Python для этой цели.
Таким образом, как только мы получили цену по требованию (скажем
X
), мы подключилиif-else
блоки типа, которые0.4*X
,0.6*X
,0.8*X
,X
, что означает , что мы пытаемся по цене предложений в пределах 40%, 60%, 80% от на цена спроса. Если все не удается, то мы возвращаемся к созданию экземпляров по требованию.Кроме того, поскольку это не зависит от текущей спотовой цены AWS, мы никогда не платим цену, превышающую цену по требованию.
Но, если вы ищете способ сделать это «на лету», то решение Hashfyre должно быть правильным.
источник