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 將您的任務分發至一個或多個容量供應商。

    如果想要在 Amazon ECS 受管執行個體上執行工作負載,必須使用容量提供者策略選項。

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

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

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

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

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

  • 啟動類型便於 Amazon ECS 直接在 Fargate 或註冊至叢集的 EC2 執行個體上啟動任務。

    如果想要在 Amazon ECS 受管執行個體上執行工作負載,必須使用容量提供者策略選項。

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

服務自動調整規模

服務自動擴展是一項自動增加或減少 Amazon ECS 服務中所需任務數量的功能。Amazon ECS 利用應用程式自動擴展服務來提供此功能。

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

服務負載平衡

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

負載平衡器類型 在下列情況下使用

Application Load Balancer

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

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

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

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

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

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

Network Load Balancer 路由 TCP 或 UDP (或第 4 層) 流量。
閘道負載平衡器 路由 TCP 或 UDP (或第 4 層) 流量。

使用虛擬應用裝置,如防火牆、入侵偵測與預防系統,以及深層封包檢查系統。

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

互連服務

如果您需要應用程式連線至以 Amazon ECS 服務形式執行的其他應用程式,Amazon ECS 提供以下無需負載平衡器的方法來執行此動作:

  • Service Connect – 允許使用簡短名稱與標準連接埠,實現與自動探索的服務間通訊。

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

  • Amazon VPC Lattice – VPC Lattice 是一種全受管應用程式網路服務,可用於連線、保護與監控多個帳戶與 VPC 中的服務。使用該服務需要付費。

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