互連 Amazon ECS 服務 - Amazon Elastic Container Service

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

互連 Amazon ECS 服務

在 Amazon ECS 任務中執行的應用程式通常需要接收來自網際網路的連線,或通常需要連線到在 Amazon ECS 服務中執行的其他應用程式。如果需要來自網際網路的外部連線,建議您使用 Elastic Load Balancing。如需有關整合負載平衡的詳細資訊,請參閱使用負載平衡來分發 Amazon ECS 服務流量

如果您需要應用程式連線到在 Amazon ECS 服務中執行的其他應用程式,Amazon ECS 提供以下無需負載平衡器的方法:

  • Amazon ECS Service Connect

    我們建議 Service Connect,其提供 Amazon ECS 組態,用於服務探索、連線能力和流量監控。使用 Service Connect,您的應用程式可以使用短名稱和標準連接埠來連接到相同叢集中的 Amazon ECS 服務,其他叢集,包括相同叢集中的跨 VPCs AWS 區域。

    當您使用 Service Connect 時,Amazon ECS 會管理服務探索的所有部分:建立可探索的名稱、在任務開始和停止時動態管理每個任務的項目、在設定為探索名稱的每個任務中執行代理程式。您的應用程式可以使用 DNS 名稱的標準功能並進行連線,來查詢名稱。如果您的應用程式已經這樣做,則不需要修改應用程式來使用 Service Connect。

    您可以在每個服務和任務定義內提供完整的組態。Amazon ECS 會管理每個服務部署中此組態的變更,以確保部署中的所有任務都以相同的方式運作。例如,DNS 做為服務探索的常見問題是控制遷移。如果您變更 DNS 名稱以指向新的替換 IP 地址,則可能需要最長的 TTL 時間,所有用戶端才會開始使用新的服務。透過 Service Connect,用戶端部署會取代用戶端任務來更新組態。您可以設定部署斷路器和其他部署組態,以與任何其他部署相同的方式影響 Service Connect 變更。

    如需詳細資訊,請參閱使用 Service Connect 以短名稱連接 Amazon ECS 服務

  • Amazon ECS 服務探索

    service-to-service通訊的另一種方法是使用服務探索進行直接通訊。在此方法中,您可以使用 AWS Cloud Map 服務探索與 Amazon ECS 的整合。使用服務探索,Amazon ECS 會將啟動任務的清單同步至 AWS Cloud Map,這會維護 DNS 主機名稱,以解析該特定服務中一或多個任務的內部 IP 地址。Amazon VPC 中的其他服務可以使用此 DNS 主機名稱,使用其內部 IP 地址直接將流量傳送到另一個容器。

    這種service-to-service通訊的方法提供低延遲。容器之間沒有額外的元件。流量會直接從一個容器流向另一個容器。

    此方法適合使用awsvpc網路模式,其中每個任務都有自己的唯一 IP 地址。大多數軟體僅支援使用 DNS A記錄,而 DNS 記錄會直接解析為 IP 地址。使用awsvpc網路模式時,每個任務的 IP 地址都是A記錄。不過,如果您使用bridge網路模式,多個容器可能會共用相同的 IP 地址。此外,動態連接埠映射會導致容器在該單一 IP 地址上隨機指派連接埠號碼。此時,A記錄已不足以進行服務探索。您也必須使用 SRV記錄。這種類型的記錄可以同時追蹤 IP 地址和連接埠號碼,但您需要適當地設定應用程式。您使用的某些預先建置應用程式可能不支援SRV記錄。

    awsvpc 網路模式的另一個優點是,每個服務都有唯一的安全群組。您可以設定此安全群組,僅允許來自需要與該服務通訊之特定上游服務的傳入連線。

    使用服務探索進行直接service-to-service服務通訊的主要缺點是,您必須實作額外的邏輯,以重試並處理連線失敗。DNS 記錄具有time-to-live(TTL) 期間,可控制快取的時間長度。更新 DNS 記錄和快取過期需要一些時間,以便您的應用程式可以取得 DNS 記錄的最新版本。因此,您的應用程式最終可能會解析 DNS 記錄,以指向不存在的另一個容器。您的應用程式需要處理重試,並具有邏輯來忽略不良後端。

    如需詳細資訊,請參閱 使用服務探索將 Amazon ECS 服務與 DNS 名稱連線

  • Amazon VPC Lattice

    Amazon VPC Lattice 是一種受管應用程式聯網服務,Amazon ECS 客戶可以用來觀察、保護和監控跨 AWS 運算服務、VPCs 和帳戶建置的應用程式,而無需修改其程式碼。

    VPC Lattice 使用目標群組,這是運算資源的集合。這些目標會執行您的應用程式或服務,可以是 Amazon EC2 執行個體、IP 地址、Lambda 函數和 Application Load Balancer。透過將 Amazon ECS 服務與 VPC Lattice 目標群組建立關聯,客戶現在可以在 VPC Lattice 中啟用 Amazon ECS 任務做為 IP 目標。Amazon ECS 會在已註冊服務的任務啟動時,自動將任務註冊至 VPC Lattice 目標群組。

    如需詳細資訊,請參閱使用 Amazon VPC Lattice 連線、觀察和保護您的 Amazon ECS 服務

網路模式相容性資料表

下表說明這些選項與任務網路模式之間的相容性。在資料表中,「用戶端」是指從 Amazon ECS 任務內部建立連線的應用程式。

互連線選項 橋接 awsvpc 主機
服務探索 是的,但用戶端需要知道在 DNS 中不含 hostPort 的 SRV 記錄。 是的,但用戶端需要知道在 DNS 中不含 hostPort 的 SRV 記錄。
Service Connect
VPC Lattice