Як перевірити точкове ціноутворення AWS автоматично?


15

Я думав про роботу Дженкінса, щоб перевірити ціни на коробки агентів, які ми обертаємо; часто так швидко падає ціна, і мине годину-дві, перш ніж хтось помітить, що не з’являються нові агенти, і тоді нам доведеться зайти вручну і перевірити ціну місця і відповідно відрегулювати, або змінити зони тощо.

Перший мій інстинкт полягав у тому, що найкращим маршрутом є погодинна робота Дженкінса, яка працює aws ec2 describe-spot-instance-requestsі перевіряє невдалі запити (а потім відмовляє нас від невдачі). Але мені цікаво, чи існує більш чистий метод, який передбачає фактичне порівняння жорстких цін (і тому міг би точно сказати нам, що є, і на скільки), а не дивитись на успішні / невдалі запити.

Хтось створив щось подібне? Як ти це зробив?


1
Питання з розумним питанням, я думаю ... але чому б ви не просто пропонували ставки, які фактично вам коштують, виберіть кілька типів екземплярів (у тому числі екземпляри, більші за потрібні, які зрідка дешевші, коли менші споточні ціни екземплярів ... періодично - в тому числі зараз, коли я це пишу - я знаходжусь з cc2.8xlarge, тому що він на даний момент дешевший, ніж потрібний мені c3.2xlarge, незважаючи на наявність 4-х ядер і 4-кратну пам’ять), і дозволити системі обробляти екземпляр вибір типу та розміщення AZ на основі ринку?
Майкл - sqlbot

1
@ Michael-sqlbot Я не можу сказати в тій частині процесу; у нас є документація, яка стверджує, що ми купуємо певний розмір примірника для аудиторських цілей, і тому ми дотримуємося цього. Просто намагаюся максимально використати ситуацію, що склалася в одній людині.
Алекс

1
Досить справедливо, @ Алекс. Я просто подумав, що я кину його, якщо ви цього не подумали.
Michael - sqlbot

@ Алекс Нецікавий, чи є певний розмір примірника, щоб його можна було легко побачити на рахунках? Тому що ви (скоріше, вони!) Могли використовувати теги, а потім бачити їх у Провіднику витрат.
Тім Малоун

Відповіді:


15

Виявив інструмент з відкритим кодом, який називається автоматичним розміщенням, який просто може допомогти у цьому:

Після активації в існуючій групі автоматичного масштабування за запитом вона запускає точковий екземпляр EC2, який дешевший, принаймні такий же великий і налаштований ідентично вашим поточним екземплярам на вимогу. Як тільки новий екземпляр буде готовий, він додається до групи, а екземпляр за запитом відлучається від групи та припиняється.

Ми маємо це в нашому трубопроводі, і зможемо додати більше контексту, як тільки ми закінчимо це.

Оновлення:

Іншим інструментом, який нещодавно був демонтований на конференції, був mapbox / spotwap

Це працює трохи інакше. Він відстежує звичайний ASG або за запитом, або зарезервованими екземплярами, а потім, якщо виникає масштаб, ставки та резерви помічають екземпляри аналогічного рівня обчислень на окремому ASG.


2
Ласкаво просимо на сайт, Hashfyre :)
Dawny33

1
Я автор AutoSpotting, дякую, що згадуєте про це! Ви ще спробували? Я всі вуха за відгуки користувачів.
Крістіан Магеружан-Станчіу

6

Я особисто вважав би таку модель:

Timed Lambdas -> Checks spot price -> Push to ElastiCache

Тоді, коли вам потрібні екземпляри:

Timed lambdas -> Pulls spot price from ElastiCache, sets it as environment variable on your Machine where you spin up IaC from -> This is parsed as argument to IaC code and pushes out the spot price

Ви також можете встановити деякі допуски в межах лямбда (наприклад, 10, 25, 50% збільшується залежно від важливості) і жорсткого обмеження на вимогу, наприклад. Це також чудове місце для побудови логіки для обробки, наприклад, пошуку найдешевшого АЗ, пошуку відносно найдешевшої спотової ціни ( 2xt2.mediumпроти t2.large) тощо.


Щойно для інформації, ви могли відредагувати видалену відповідь і позначили її, щоб попросити невідповідати. (Без шкоди, це просто інформативно :))
Тенсібай

1
Я залишу свій сором наполегливим, щоб нагадати мені про свої помилкові дні на всю вічність.
Генрі

Rofl, насправді немає сорому, не хвилюйся :)
Tensibai

3
МОЇ ШКАРИ ВИЗНАЧИТИ, ЧОМУ Я
Генрі

Хороша ідея - можливо, варто також згадати, що можна підштовхнути ціну до таблиці DynamoDB, якщо у них вже немає кластера ElastiCache;). А може бути навіть файл JSON у відрі S3.
Тім Малоун

4

Дозвольте дати вам інструментально-агностичний спосіб спроби зробити це.

Кожна так часто ціна зростає, і мине годину-дві, перш ніж хтось помітить, що не з’являються нові агенти, і тоді нам доведеться зайти вручну і перевірити точку ціни та відповідно відрегулювати або змінити зони тощо

Ми зіткнулися з тією ж проблемою в інфраструктурі, яку ми будуємо. Отже, у нас були if-elseблоки стилів, щоб встановити ціну ставки, залежно від ціни на вимогу екземпляра.

AWS має API для отримання ціни екземпляра на вимогу. Ми використовували цю обгортку Python для цієї мети.

Таким чином, як тільки ми отримали ціну на вимогу (скажімо X), ми підключили if-elseблоки типу, які 0.4*X, 0.6*X, 0.8*X, X, що означає , що ми намагаємося за ціною пропозицій в межах 40%, 60%, 80% від на -ціна попиту. Якщо все не вдасться, ми повертаємося до створення екземплярів на вимогу.

Крім того, оскільки це не залежить від поточного спотового ціноутворення AWS, ми ніколи не платимо ціну вище ціни за запитом.

Але, якщо ви шукаєте спосіб зробити це на ходу, то рішенням Хашфіра має стати шлях.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.