AWS spot fiyatlandırmasını otomatik olarak nasıl kontrol edebilirim?


15

Döndürdüğümüz ajan kutuları için fiyatlandırmayı kontrol etmek üzere bir Jenkins işi düşünüyordum; sık sık fiyat yükselir ve yeni ajanların gelmediğini fark etmeden bir veya iki saat sürer ve sonra manuel olarak girip spot fiyatı kontrol edip buna göre ayarlayabilir veya bölgeleri değiştirebiliriz.

İlk içgüdüm, en iyi yolun bir çalışan aws ec2 describe-spot-instance-requestsve başarısız istekleri kontrol eden (ve sonra bizi bir başarısızlıktan kurtarır) saatlik bir Jenkins işine sahip olmaktı. Ancak, başarılı / başarısız taleplere bakmak yerine, sabit fiyatları gerçekten karşılaştırmayı içeren (ve bu nedenle bize tam olarak neyin ne olduğunu ve ne kadar olduğunu söyleyebilir) daha temiz bir yöntem olup olmadığını merak ediyorum.

Benzer bir şey ayarlayan var mı? Bunu nasıl yaptın?


1
Makul soru, sanırım ... ama neden sadece örneklerin sizin için değerli olduğunu teklif etmiyorsunuz, birden fazla örnek türü seçiyorsunuz (ihtiyacınız olandan daha büyük örnekler dahil, daha küçük örnek spot fiyatları yükseldiğinde bazen daha ucuzdur ... zaman zaman - bunu şu anda yazarken dahil olmak üzere - kendimi bir cc2.8xlarge ile buluyorum, çünkü şu anda ihtiyacım olan c3.2xlarge'den daha ucuz, 4x çekirdek ve 4x bellek olmasına rağmen) ve sistemin örneği işlemesine izin ver tabanlı seçim ve AZ yerleşim?
Michael - sqlbot

1
@ Michael-sqlbot Sürecin bu bölümünde söylemedim; denetim amacıyla belirli bir boyutta örnek satın aldığımızı belirten belgelere sahibiz ve bu nedenle de bu şekilde kalıyoruz. Sadece yardımsız bir durumdan en iyi şekilde yararlanmaya çalışıyor.
Alex

1
Yeterince adil, @Alex. Sadece düşünmemeliysen onu atacağımı düşündüm.
Michael - sqlbot

@Alex İlgilenmiyorum, belirli örnek boyutu faturalarda kolayca görülebilecek mi? Çünkü siz (daha doğrusu!) Etiketleri kullanabilir ve sonra bunları Maliyet Gezgini'nde görebilirsiniz.
Tim Malone

Yanıtlar:


15

Autospotting adı verilen ve bununla ilgili yardımcı olabilecek bir açık kaynak aracı gördüm :

Mevcut bir isteğe bağlı AutoScaling grubunda etkinleştirildiğinde, en azından daha ucuz ve mevcut isteğe bağlı örneklerinizle aynı şekilde yapılandırılmış bir EC2 spot örneği başlatır. Yeni örnek hazır olur olmaz, gruba eklenir ve isteğe bağlı bir örnek gruptan ayrılır ve sonlandırılır.

Bunu yapılacak iş hattımızda var, bitirdiğimizde daha fazla bağlam ekleyebileceğiz.

Güncelleme:

Bir konferansta kısa süre önce demo olarak yayınlanan bir diğer araç mapbox / spotswap idi.

Bu biraz farklı çalışıyor. İsteğe Bağlı veya Ayrılmış örneklerle normal bir ASG'yi izler ve ardından ölçek ortaya çıkarsa, teklifler ve hükümler benzer işlem düzeyindeki örnekleri ayrı bir ASG'de tespit eder.


2
Siteye hoşgeldiniz, Hashfyre :)
Dawny33

1
AutoSpotting'in yazarıyım, bahsettiğiniz için teşekkürler! Henüz denedin mi? Kullanıcı geri bildirimi için kulaklarım.
Cristian Măgherușan-Stanciu

6

Şahsen böyle bir modeli düşünürdüm:

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

Sonra örneklere ihtiyacınız olduğunda:

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

Lamdalar (örneğin, önemine göre% 10, 25,% 50 artışlar) ve talep üzerine sert bir sınır dahilinde bazı toleranslar da ayarlayabilirsiniz. Ayrıca, örneğin en ucuz AZ'yi bulmak, nispeten ucuz spot fiyatı ( 2xt2.mediumvs t2.large) bulmak vb.İçin işlemek için mantık oluşturmak için harika bir yerdir .


Yalnızca bilgi amaçlı olarak, silinen yanıtı düzenleyebilir ve geri alınmasını istemek için işaretleyebilirsiniz. (Zarar yok, sadece bilgilendirici :))
Tensibai

1
Tüm sonsuzluk için yanlış yönlendirilmiş günlerimi hatırlatmak için utancımı bırakacağım.
Henry

Rofl, gerçekten utanç yok, endişelenme :)
Tensibai

3
BENİM KORKULARIM TANIMIM
Henry

Harika fikir - ayrıca etrafta bir ElastiCache kümesi yoksa, fiyatı bir DynamoDB tablosuna itebileceğini de belirtmek gerekir;). Ya da belki bir S3 kovasındaki bir JSON dosyası.
Tim Malone

4

Size bunu yapmaya çalışmanın araç-agnostik bir yolunu vereyim.

sık sık fiyat yükselir ve kimse yeni ajanların gelmediğini fark etmeden bir veya iki saat sürer ve sonra manuel olarak girip spot fiyatı kontrol edip buna göre ayarlayabilir veya bölgeleri değiştirebiliriz.

Yaptığımız altyapıda da aynı sorunla karşılaştık. Bu nedenle, if-elseörneğin isteğe bağlı fiyatına bağlı olarak teklif fiyatını ayarlamak için stil bloklarımız vardı .

AWS, bir örneğin isteğe bağlı fiyatını almak için bir API'ya sahiptir . Bu Python paketini bu amaçla kullandık.

Biz on-demand fiyat var sonra hikaye (diyelim X, biz takılı) if-elseolan tarzı bloklardan, 0.4*X, 0.6*X, 0.8*X, X, biz% 40,% 60, aralığında bir teklif fiyata% 80 çalışıyoruz araçları talep fiyatı. Her şey başarısız olursa, isteğe bağlı örnekler oluşturmaya geri dönüyoruz.

Ayrıca, bu AWS'nin mevcut spot fiyatlandırmasından bağımsız olduğu için, hiçbir zaman talep üzerine fiyatın üzerinde bir fiyat ödemiyoruz.

Ancak, bunu anında yapmanın bir yolunu arıyorsanız, Hashfyre'in çözümü gitmenin yolu olmalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.