AWS Spot 實例是一種可以顯著降低計算成本的云服務實例類型。由于其價格波動較大,長期以來我們主要在開發(DEV)環境中使用它,或者用于將中間結果保存到 S3 或數據庫的計算任務,而非生產(PROD)環境。雖然市場上有第三方解決方案可以在生產環境中使用 Spot 實例,但由于我們業務場景的特殊性,存在諸多限制,因此未采用這些方案。
本文介紹的方法完全基于 AWS 的標準功能,無需額外的腳本或定時任務。以下是一些 Spot 實例的定價歷史截圖,展示了其成本節省的潛力。
m5.large實例(愛爾蘭區域,eu-west-1)
價格在三個月內基本穩定,節省成本約為 2.9 倍。

m5.large實例(美國東部區域,us-east-1)
價格波動較大,節省成本在 2.3 倍至 2.8 倍之間,具體取決于可用區。

t3.small實例(美國東部區域,us-east-1)
價格穩定,節省成本約為 3.4 倍。

以下是本文討論的服務架構示意圖:

在 ECS 中,一個實例可以運行多個功能容器,這些容器可能使用相同的端口。因此,ECS 會動態分配端口,并通過 TG 監控健康狀況。如果發現問題,TG 會停止將請求發送到有故障的實例。
ASG 負責根據負載自動調整 EC2 實例的數量。然而,直到最近,AWS 并未提供內置功能來管理 ECS 所需的實例數量。ECS 容量提供商(CP)的引入解決了這一問題:
EC2 啟動模板簡化了實例的創建過程,避免了重復配置。以下是關鍵配置參數:
以下是創建服務的具體步驟:
ECS_ENABLE_SPOT_INSTANCE_DRAINING。通過本文的方法,您可以利用 AWS Spot 實例顯著降低服務器成本,同時通過自動擴展功能確保服務的高可用性。無論是配置 EC2 啟動模板、自動擴展組,還是設置 ECS 服務和容量提供商,所有步驟均基于 AWS 的標準功能,無需額外工具支持。希望本文能為您的系統優化提供實用參考。
原文鏈接: https://adapty.io/blog/designing-scalable-api-on-aws-spot-instance/