Saya sudah memikirkan pekerjaan Jenkins untuk memeriksa harga untuk kotak agen yang kami putar; sering kali harga melonjak dan itu akan menjadi satu atau dua jam sebelum ada yang tahu bahwa tidak ada agen baru yang muncul, dan kemudian kita harus masuk secara manual dan memeriksa harga spot dan menyesuaikan sesuai, atau beralih zona, dll.
Insting pertama saya adalah bahwa rute terbaik adalah memiliki pekerjaan Jenkins setiap jam yang menjalankan aws ec2 describe-spot-instance-requests
dan memeriksa permintaan yang gagal (dan kemudian membuat kami gagal). Tapi saya bertanya-tanya apakah ada metode yang lebih bersih yang melibatkan benar-benar membandingkan harga yang sulit (dan karena itu dapat memberi tahu kami persis apa yang salah, dan seberapa banyak), daripada melihat permintaan yang berhasil / gagal.
Adakah yang mengatur sesuatu yang serupa? Bagaimana kamu melakukannya?
Jawaban:
Melihat alat sumber terbuka yang disebut autospotting yang mungkin bisa membantu dengan ini:
Kami memiliki ini di pipeline yang harus dilakukan, akan dapat menambahkan lebih banyak konteks setelah kami menyelesaikannya.
Memperbarui:
Alat lain yang baru-baru ini didemokan dalam konferensi adalah mapbox / spotswap
Ini bekerja sedikit berbeda. Memonitor ASG normal dengan instance On-Demand atau Reserved dan kemudian, jika skala muncul, tawaran dan ketentuan menempatkan instance dari tingkat komputasi yang sama pada ASG terpisah.
sumber
Saya pribadi akan mempertimbangkan model seperti ini:
Maka ketika Anda membutuhkan contoh:
Anda dapat menetapkan beberapa toleransi, juga, dalam lambda (yaitu 10, 25, peningkatan 50% berdasarkan kepentingan) dan batasan keras sesuai permintaan, misalnya. Ini juga merupakan tempat yang hebat untuk membangun logika untuk menangani, misalnya, menemukan AZ termurah, menemukan harga spot yang relatif murah (
2xt2.medium
vst2.large
), dll.sumber
Biarkan saya memberi Anda cara alat-agnostik untuk mencoba melakukan ini.
Kami menghadapi masalah yang sama dalam infrastruktur yang kami bangun. Jadi, kami memiliki
if-else
blok gaya untuk menetapkan harga penawaran, tergantung pada harga berdasarkan permintaan dari instance.AWS memiliki API untuk mendapatkan harga sesuai permintaan instance. Kami menggunakan pembungkus Python ini untuk tujuan tersebut.
Jadi, setelah kami mendapat harga on-demand (katakanlah
X
), kami terpasang diif-else
blok gaya, yang0.4*X
,0.6*X
,0.8*X
,X
, yang berarti kita berusaha untuk harga penawaran di kisaran 40%, 60%, 80% dari pada - harga permintaan. Jika semuanya gagal, maka kita kembali ke membuat instance on-demand.Juga, karena ini terlepas dari penetapan harga spot AWS saat ini, kami tidak pernah membayar harga di atas harga berdasarkan permintaan.
Tetapi, jika Anda mencari cara untuk melakukannya dengan cepat, maka solusi Hashfyre harus menjadi cara untuk melakukannya.
sumber