搶佔式執行個體是一種按需執行個體,旨在降低您部分場景下使用ECS的成本。建立搶佔式執行個體時,您必須為指定的執行個體規格設定一個價格上限(即您願意為這個執行個體規格支付的最高價格),當指定的執行個體規格當前市場價格低於您的出價時,您就能成功建立搶佔式執行個體,並按當前市場價格計費。您能穩定持有執行個體一小時。之後,當市場價格高於您的出價或者資源供需關係變化時,執行個體會被自動釋放。搶佔式執行個體的生命週期如下圖所示。



應用場景

搶佔式執行個體適用於無狀態的應用場景,比如可Auto Scaling的Web網站服務、映像渲染、大資料分析和大規模並行計算等。您的應用程式的分布度、可擴充性和容錯能力越高,使用搶佔式執行個體越能節省成本和提升輸送量。

您可以在搶佔式執行個體上部署以下常見業務:

  • 即時分析業務
  • 大資料業務
  • 地理空間勘測分析業務
  • 映像和媒體編碼業務
  • 科學計算業務
  • 可Auto Scaling的業務網站、網路爬蟲業務
  • 映像和媒體編碼業務
  • 測試業務

有狀態應用,比如資料庫,不宜使用搶佔式執行個體,因為競價失敗等因素導致執行個體被釋放時,應用狀態難以保存。

出價模式

搶佔式執行個體支援一次性競價請求。一次性競價請求包括以下2種出價模式:

使用者佈建能接受的最高價(SpotWithPriceLimit)

在這種模式下,您必須為指定的執行個體規格設定一個價格上限,即您願意為這個執行個體規格支付的最高價格。通過 RunInstances 介面建立搶佔式執行個體時,您能按這種模式出價。

目前,搶佔式執行個體的最高價格與同規格隨用隨付執行個體相同。建立搶佔式執行個體時,您能看到一個價格區間,您可以結合自身業務,同時考慮可能的價格波動,在這個價格區間內設定一個合理的價格。噹噹前市場價格不高於您設定的價格,而且庫存充足時,您就能建立執行個體。如果您的出價充分考慮了可能的價格波動,一小時 保護周期 後,您仍能較長時間持有搶佔式執行個體。否則,一小時後,執行個體隨時可能被釋放。

跟隨當前市場實際價格(SpotAsPriceGo)

使用 RunInstances 介面建立搶佔式執行個體時,將 SpotStrategy 參數設為 SpotAsPriceGo,選擇跟隨當前市場價格的模式,即表示始終接受即時的市場價格作為執行個體規格的計費價格。

保護周期

搶佔式執行個體一旦建立就擁有一小時保護期,即在建立後第一個小時內,我們不會因為市場供需關係而釋放您的執行個體,您可以在該搶佔式執行個體上正常運行業務。超過保護周期,即一小時後,我們每5分鐘檢測一次執行個體規格當前市場價格和庫存,如果某一時刻的市場價格高於您的出價或資產庫存不足,我們將釋放您的搶佔式執行個體。

價格和計費

搶佔式執行個體的價格和計費有以下特點:

  • 價格

    搶佔式執行個體的價格是指執行個體規格(包括vCPU和記憶體)的價格,不包括系統盤、資料盤、網路頻寬的價格。系統盤、資料盤按 隨用隨付 規則計費。網路頻寬按隨用隨付執行個體的頻寬計費規則計費,詳細資料,請參見 公網頻寬計費

  • 計費周期

    搶佔式執行個體計費周期為小時。不足一小時按一小時計費。

  • 計費時長

    按實際使用時長計費。實際使用時長是指搶佔式執行個體建立到釋放。釋放後,搶佔式執行個體才停止計費。如果您使用 StopInstance 介面或者 在ECS管理主控台上 停止執行個體,執行個體會繼續計費。

  • 市場價格

    建立搶佔式執行個體時,如果出價高於當前市場價格而且資產庫存充足,您的執行個體就會運行。最終執行個體規格會按照市場價格計費。

搶佔式執行個體的市場價格會因為市場對某一種執行個體規格的供需變化而浮動。因此,您可以充分利用搶佔式執行個體的價格浮動特性,在適當的時間購買搶佔式執行個體,降低計算成本,並在整體成本下降的前提下,提升業務在該時間周期內的輸送量。

配額

關於搶佔式執行個體配額,請參見 使用限制

建立搶佔式執行個體

您能通過 RunInstances 介面建立搶佔式執行個體。

搶佔式執行個體建立成功後,操作與隨用隨付執行個體相同,您也可以將它與其他雲產品(如雲端碟、EIP地址等)組合使用。

停止搶佔式執行個體

您可以使用 StopInstance 介面或者 在ECS管理主控台上 停止搶佔式執行個體。VPC類型的搶佔式執行個體支援 隨用隨付執行個體停機不收費 功能。

根據搶佔式執行個體的網路類型和出價模式不同,執行個體停止後再啟動會有不同的表現,如下表所示。

網路類型 + 出價模式 停止模式 停止後再啟動時
VPC + SpotWithPriceLimit 保留並收費 在保護周期內能正常啟動。過了保護周期:
  • 如果您設定的價格不低於市場價格並且資產庫存充足,能正常啟動。
  • 如果您設定的價格低於市場價,或者資產庫存不足,不能啟動。
經典網路 + SpotWithPriceLimit N/A
VPC + SpotAsPriceGo 保留並收費 在保護周期內能正常啟動。過了保護周期:
  • 如果資產庫存充足,能正常啟動。
  • 如果資產庫存不足,不能啟動。
經典網路 + SpotAsPriceGo N/A
VPC + SpotWithPriceLimit 停機不收費 在保護周期內,只要資源充足就能正常啟動。過了保護周期:
  • 如果您設定的價格不低於市場價格並且資產庫存充足,能正常啟動。
  • 如果您設定的價格低於市場價,或者資產庫存不足,不能啟動。
VPC + SpotAsPriceGo 停機不收費 在保護周期內,只要資源充足就能正常啟動。過了保護周期:
  • 如果資產庫存充足,能正常啟動。
  • 如果資產庫存不足,不能啟動。

釋放搶佔式執行個體

過了保護周期後,我們會因為市場價格變化或資產庫存調整等因素自動釋放您的搶佔式執行個體。執行個體建立之後,您能 主動釋放搶佔式執行個體

因為市場價格變化或資產庫存調整而被動釋放時,搶佔式執行個體會進入 待回收 狀態,約5分鐘後執行個體自動釋放。您可以通過 執行個體元資料 或者 DescribeInstances 介面返回的 OperationLocks 資訊查看執行個體是否進入 待回收 狀態。

说明
雖然通過API可以知道搶佔式執行個體是否進入 待回收 狀態,並在回收等待的時間裡保存少量資料,但是我們仍然建議您將應用設計成在搶佔式執行個體立即回收的情況下也可以正常恢複工作。您可以通過主動釋放執行個體檢測在搶佔式執行個體立即回收的情況下應用是否正常工作。

一般,我們會從出價最低的執行個體開始終止搶佔式執行個體。如果多個搶佔式執行個體的出價相同,則隨機確定執行個體的終止順序。

最佳實務

在使用搶佔式執行個體時,您需要考慮以下內容:

  • 選擇一個合理的出價:您的出價應該足夠高,而且要充分考慮到市場價格的波動。這樣,您的搶佔請求才會被接受處理,而且建立後才不會因為價格因素被釋放。另外,出價還必須符合您根據自身業務評估後的預期。

  • 使用的鏡像必須包含所需軟體的配置,確保執行個體在建立完成後可以隨時啟動。您還能使用 執行個體自訂資料 在啟動時運行命令。

  • 建議您使用不受搶佔式執行個體釋放影響的儲存介質來保存您的重要資料。例如,您可以使用獨立建立的雲端碟(不能設定為隨執行個體一起釋放)、OSS、RDS 等儲存資料。

  • 將工作拆分為小的任務(使用網格、Hadoop或基於隊列的架構)或者使用檢查點,便於您經常保存計算結果。

  • 使用搶佔式執行個體釋放通知來監控搶佔式執行個體的狀態。您可以通過 執行個體元資料 每分鐘獲取一次執行個體的狀態,阿里雲ECS釋放搶佔式執行個體時,會提前5分鐘更新元資料資訊。

  • 測試您的應用程式,確保它能很好地處理意外釋放的執行個體。您可以使用隨用隨付執行個體來運行該應用程式,然後自行釋放這台執行個體,從而確認應用程式是否能處理自動釋放的執行個體。

關於搶佔式執行個體的更多問題,請參見 搶佔式執行個體FAQ

關於使用API建立搶佔式執行個體的操作,請參見 使用API管理搶佔式執行個體