Amazon-Web-Services

Fargate 是否適合資源使用率低的獨立容器?

  • November 8, 2018

我是 docker 和 ECS 的新手,所以我可能不會使用正確的術語。如果我需要澄清,請告訴我。

**我的場景:**我有許多獨立的容器。每個容器代表一個網站。每個容器都應該一直執行,但可能會看到長時間不活動(例如零 CPU 使用率)。舉例來說,假設我有 10 個容器,每個容器需要最多 200MB 的 RAM 和最多 1 個 vCPU。讓我們進一步假設我總共只需要 2vCPU 來處理來自所有 10 個容器的組合負載(因為它們不會同時看到高負載)。

**Fargate 選項 1:**我為每個容器創建不同的任務:(2GB,1vCPU)x 10(2GB 是 1vCPU 的最小 RAM)。

**Fargate 選項 2:**我使用所有容器創建一個任務:(2GB,2vCPU)。

**EC2 選項:**我為每個容器創建一個任務,所有任務都映射到一個 EC2 實例。

如果我理解正確的話,Fargate Option 2比 Fargate Option 1 便宜很多,因為我知道我最多只需要 2vCPU。但是選項 2 不太靈活,因為它是停止/啟動/縮放的任務,我想將我的容器視為彼此獨立(例如,獨立停止/啟動/縮放)。

此外,如果我理解正確,EC2 選項是我獲得每個容器任務的靈活性以及為我實際需要的資源付費的唯一方法

所以:對於資源使用率低的獨立容器來說,Fargate 似乎在這個時候不太適合。

我的理解正確嗎?

沒錯,對於相同的 vCPU/RAM 數量,Fargate 比 EC2 更貴。

例如:

  • 具有 0.25 個 vCPU 和 0.5 GB RAM的**最小 Fargate 容器的成本為 0.019 美元/小時,即每個容器每月 14 美元**。
  • 如果您需要 1 個 vCPU,則 RAM 的最小數量為 2GB(請參閱**Fargate 支持的配置),突然價格為每個容器每月 55 美元**。在您的情況下,10 個任務使其每月 550 美元。
  • 另一方面,如果您有信心可以將所有這些壓縮到單個**t3.small(2 個 vCPU,2 GB RAM)中,那麼您將花費 0.0208 美元/小時,即15 美元/月**。即使您碰巧需要 2 或 3 個t3.small實例來支持您的負載,它仍然比 Fargate 便宜得多。
  • 如果您將所有容器集中到一個 Fargate 任務中(如您的選項 2中所建議的那樣),它仍然比使用 EC2 ECS 更昂貴,而且在一個任務中擁有多個獨立容器的複雜性。這不值得麻煩。

所以總結一下 - 如果您想 24x7 執行您的容器並且它們沒有一直被充分利用,那麼您最好在基於 EC2 的 ECS 集群上執行它們。

使用 Fargate,您需要為靈活性付出額外的代價。

如果您的容器只是短暫執行以完成一項任務然後退出,或者如果它們根據需求進行擴展和縮減,那麼您在 Fargate 中執行它們會容易得多 - 您不需要擴展和縮減底層 EC2集群來支持負載。

在許多情況下,在 Fargate 上執行效果更好,即使每個 vCPU/RAM 的成本更高。我們每天幾次旋轉成批的數百個容器進行一些處理,每個容器只執行大約 10 分鐘。如果我們必須在每次執行之前擴展 EC2/ECS 集群,等待它穩定下來,處理故障,然後執行我們的批處理作業,然後再次縮減,成本會非常高,我們的批處理會花費更長的時間.

Fargate 在這裡非常適合我們。不過,我不會將它用於始終線上的服務。

希望有幫助:)

引用自:https://serverfault.com/questions/939072