Amazon ECS 服務 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon ECS 服務

您可以利用 Amazon ECS 服務在 Amazon ECS 叢集中同時執行並維持指定數目的任務定義執行個體。如果您有任務產生故障或停止,Amazon ECS 服務排程器就會根據您的任務定義啟動另一個執行個體來取而代之。這有助於維持服務中所需的任務數量。

您也可以在負載平衡器後方選擇性地執行您的服務。負載平衡器可將流量分散到與服務關聯的任務。

我們建議將服務排程器用於長時間執行的無狀態服務及應用程式。服務排程器可確保系統遵循您指定的排程策略,並在任務失敗時重新排程任務。例如,若基本的基礎設施發生故障,服務排程器會重新排程任務。您可以利用任務置放策略和限制條件來自訂排程器如何放置和終止任務。若服務中的任務停止,排程器會啟動新任務進行取代。此流程會根據您服務使用的排程策略持續進行,直至服務執行的任務達到您所需的數量為止。服務的排程策略也叫做 service type (服務類型)。

在容器運作狀態檢查或負載平衡器目標群組運作狀態檢查失敗後,服務排程器也會取代判定為狀況不佳的任務。此取代取決於 maximumPercentdesiredCount 服務定義參數。如果任務標記為運作狀態不佳,服務排程器會先啟動替代任務。然後,會發生下列情況。

  • 如果取代任務的運作狀態為 HEALTHY,則服務排程器會停止運作狀態不佳的任務

  • 如果替代任務的運作狀態為 UNHEALTHY,排程器會停止運作狀態不佳的替代任務或現有運作狀態不佳的任務,以使任務總計數等於 desiredCount

如果 maximumPercent 參數限制排程器先啟動替代任務,排程器會隨機停止運作狀態不佳的任務,以釋放容量,然後啟動替代任務。開始和停止程序會繼續進行,直到所有運作狀態不佳的任務都會取代為運作狀態良好的 一旦已取代了所有運作狀態不佳的任務,而且只執行運作狀態良好的任務,如果任務總數超過 desiredCount,則運作良好的任務會隨機停止,直到任務總計數等於 desiredCount 為止。如需有關 maximumPercentdesiredCount 的詳細資訊,請參閱服務定義參數

服務排程器包含的邏輯,可在任務重複啟動失敗的情況下,針對任務重新啟動的頻率進行調節。如果任務在未進入 RUNNING 的狀態下停止,服務排程器會減少啟動嘗試並傳送出服務事件訊息。此行為可以讓您在問題解決前,避免失敗的任務占用不必要的資源。在服務更新之後,服務排程器就會恢復正常的排程行為。如需詳細資訊,請參閱Amazon ECS 服務調節邏輯檢視 Amazon ECS 服務事件訊息

基礎設施運算選項

分發任務有兩種運算選項。

  • capacity provider strategy (容量供應商策略),使 Amazon ECS 將您的任務分發至一個或多個容量供應商。

    針對容量提供者策略,主控台預設會選取運算選項。以下說明主控台用來選擇預設值的順序:

    • 若您的叢集定義了預設容量提供者策略,則會選取該叢集。

    • 如果您的叢集未定義預設容量提供者策略,但您已將 Fargate 容量提供者新增至叢集,則會選取使用容量提供者的自訂FARGATE容量提供者策略。

    • 如果您的叢集未定義預設容量提供者策略,但您已將一或多個 Auto Scaling 群組容量提供者新增至叢集,則會選取使用自訂 (進階) 選項,而且您需要手動定義策略。

    • 若您的叢集未定義預設容量提供者策略,也沒有為叢集新增容量提供者,則會選擇 Fargate 啟動類型。

  • 啟動類型會導致 Amazon ECS 直接在 Fargate 或註冊到叢集的 EC2 執行個體上啟動我們的任務。

    根據預設,服務會在叢集 VPC 的子網路中啟動。

服務自動擴展

服務自動擴展是自動增加或減少 Amazon ECS 服務中所需任務數量的功能。Amazon ECS 利用 Application Auto Scaling 服務來提供此功能。

如需詳細資訊,請參閱自動擴展 Amazon ECS 服務

服務負載平衡

在 上託管的 Amazon ECS 服務 AWS Fargate 支援 Application Load Balancer、Network Load Balancer 和 Gateway Load Balancer。使用下表了解要使用的負載平衡器類型。

Load Balancer類型 在這些情況下使用

Application Load Balancer

路由 HTTP/HTTPS (或 layer 7) 流量。

Application Load Balancer 提供數種功能,非常適合與 Amazon ECS 服務搭配使用:

  • 每項服務都可以透過指定多個目標群組,為來自多個負載平衡器的流量提供服務,以及公開多個負載平衡的連接埠。

  • 它們受在 Fargate 和 EC2 執行個體上託管的任務的支援。

  • Application Load Balancer 允許容器使用動態主機連接埠映射 (允許每個容器執行個體之相同服務中的多個任務)。

  • Application Load Balancer 支援路徑類型路由和優先順序規則 (因此多個服務可以在單一 Application Load Balancer 上使用相同的接聽程式連接埠)。

Network Load Balancer 路由 TCP 或 UDP (或 layer 4) 流量。
Gateway Load Balancer 路由 TCP 或 UDP (或 layer 4) 流量。

使用虛擬設備,例如防火牆、入侵偵測和預防系統,以及深度封包檢查系統。

如需詳細資訊,請參閱使用負載平衡來分配 Amazon ECS 服務流量

互連服務

如果您需要應用程式連線到以 Amazon ECS 服務身分執行的其他應用程式,Amazon ECS 會提供下列方法來在沒有負載平衡器的情況下執行此操作:

  • Service Connect - 允許使用簡短名稱和標準連接埠與自動探索service-to-service通訊。

  • 服務探索 - 服務探索使用 Route 53 為您的服務建立命名空間,以便透過 DNS 進行探索。

  • Amazon VPC Lattice - VPC Lattice 是全受管應用程式聯網服務,可跨多個帳戶和 VPCs 連接、保護和監控您的服務。有相關聯的成本。

如需詳細資訊,請參閱互連 Amazon ECS 服務