一千萬個為什麽

搜索

如何自動檢查AWS現貨價格?



我一直在考慮詹金斯的工作,以檢查我們啟動的代理箱的價格;每隔一段時間價格就會上漲,而且在任何人註意到沒有新代理商出現之前,它將會持續一到兩個小時,然後我們必須手動進入並檢查現貨價格並相應地進行調整或切換區域等。

我的第一個直覺是最好的方法是每小時運行一次Jenkins作業,運行 aws ec2 describe-spot-instance-requests 並檢查失敗的請求(然後讓我們失敗)。但是我想知道是否有一個更清晰的方法,涉及實際比較硬性價格(因此可以告訴我們究竟什麽是關閉的以及多少),而不是查看成功/失敗的請求。

任何人設置類似的東西?你怎麽做的?

轉載註明原文: 如何自動檢查AWS現貨價格?

一共有 3 個回答:

發現了一個名為 autospotting 的開源工具,可以幫助您:

一旦在現有的按需AutoScaling組上啟用,它將啟動一個EC2現貨實例,該實例更便宜,至少與您當前的按需實例一樣大,配置相同。一旦新實例準備就緒,它將被添加到組中,並且按需實例將從組中分離並終止。

我們在待辦事項管道中有這個功能,一旦完成,就可以添加更多的上下文。

更新:

Another tool that was recently demo'ed in a conference was mapbox/spotswap

這有點不同。它使用按需或預留實例監視正常的ASG,然後,如果出現規模問題,出價和供應將在單獨的ASG上找到類似計算級別的實例。

我會親自考慮一個這樣的模型:

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

例如,您也可以在lambda表達式中設置一些容差(例如,根據重要性10,25,50%增加)以及按需硬盤上限。這也是建立邏輯來處理的好地方,例如,找到最便宜的AZ,找到相對最便宜的現貨價格( 2xt2.medium vs t2.large ),等等

讓我給你一個試圖做到這一點的工具不可知的方法。

每當有人經常註意到沒有新的代理人時,價格會高漲一到兩個小時,然後我們必須手動進入並檢查現貨價格並相應地進行調整,或者切換區域,等

我們在構建基礎架構時面臨同樣的問題。因此,我們使用 if-else 樣式塊來設置出價,具體取決於實例的按需價格。

AWS有一個 API ,一個實例的需求價格。為此,我們使用了此 Python包裝器

因此,一旦我們獲得了按需價格(比如說 X ),我們就插入了 0.4 * Xif-else 樣式塊>, 0.6 * X0.8 * XX ,這意味著我們正在嘗試40%,60% ,按需價格的80%。如果全部失敗,那麽我們就會重新開始創建按需實例。

此外,由於這與AWS的當前現貨定價無關,因此我們從未支付高於按需定價的價格。

但是,如果你正在尋找一種方法來實現它,那麽Hashfyre的解決方案應該是前進的方向。