本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
互連 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 服務,包括同一 AWS 區域內跨 VPC 的服務。
當您使用 Service Connect 時,Amazon ECS 將管理服務探索的所有環節:建立可被探索的名稱、在任務啟動與停止時動態管理每個任務的項目、在每個已設定為可探索這些名稱的任務中執行代理程式。應用程式可透過 DNS 名稱的標準功能查詢這些名稱並建立連線。若應用程式已具備此能力,則您無需修改應用程式即可使用 Service Connect。
您需在每個服務與任務定義內提供完整的組態。Amazon ECS 會在每次服務部署時管理此組態的變更,確保統一部署中的所有任務行為一致。例如,使用 DNS 作為服務探索機制時,常見問題在於遷移過程難以控制。若變更 DNS 名稱指向的新替代 IP 位址,可能需要等待最長 TTL 時間,所有用戶端才會開始使用新服務。而透過 Service Connect,用戶端部署會透過取代用戶端任務來更新組態。您可以設定部署斷路器及其他部署組態,使 Service Connect 的變更與任何其他部署一樣受到同等管控。
如需詳細資訊,請參閱使用 Service Connect 以短名稱連接 Amazon ECS 服務。
-
Amazon ECS 服務探索
服務間通訊的另一種方法是使用服務探索進行直接通訊。透過此方法,您可使用 AWS Cloud Map 服務探索與 Amazon ECS 的整合功能。使用服務探索,Amazon ECS 會將啟動的任務清單同步至 AWS Cloud Map,這會維護 DNS 主機名稱,以解析該特定服務中一或多個任務的內部 IP 地址。Amazon VPC 中的其他服務可使用此 DNS 主機名稱,透過容器的內部 IP 位址直接向另一個容器傳送流量。
這種服務間通訊方法的延遲較低。容器之間沒有額外的元件。流量會從一個容器直接傳送至另一個容器。
此方法適用於採用
awsvpc網路模式的場景,該模式下每個任務都有專屬的唯一 IP 位址。大多數軟體僅支援使用 DNSA記錄,這些記錄會直接解析為 IP 位址。使用awsvpc網路模式時,每個任務的 IP 位址都是A記錄。不過,如果您使用bridge網路模式,多個容器可能會共用同一個 IP 位址。此外,動態連接埠映射會導致容器在該單一 IP 位址上隨機指派連接埠號碼。至此,僅靠A記錄已不足以滿足服務探索需求。您必須同時使用SRV記錄。這種類型的記錄可以追蹤 IP 位址與連接埠號碼,但要求對應用程式進行相應設定。您使用的某些預先建置的應用程式可能不支援SRV記錄。awsvpc網路模式的另一項優勢,是每個服務都會擁有唯一的安全群組。您可以設定此安全群組,使其僅允許需要與該服務通訊的特定上游服務建立連入連線。使用服務探索實現服務間直接通訊的主要劣勢在於,您必須實作額外邏輯來處理重試機制與連線失敗問題。DNS 記錄具有存留時間 (TTL) 設定,可控制記錄的快取存留時長。DNS 記錄的更新與快取失效需要一定時間,才能讓應用程式取得最新版本的 DNS 記錄。因此,應用程式最終可能會將 DNS 記錄解析至已不存在的另一個容器。應用程式需要處理重試,並具有忽略不良後端的邏輯。
如需詳細資訊,請參閱使用服務探索以利用 DNS 名稱連接 Amazon ECS 服務
-
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 ECS 任務內部建立連線的應用程式。
| 互連線選項 | 橋接 | awsvpc |
主機 |
|---|---|---|---|
| 服務探索 | 是的,但用戶端需要知道在 DNS 中不含 hostPort 的 SRV 記錄。 |
是 | 是的,但用戶端需要知道在 DNS 中不含 hostPort 的 SRV 記錄。 |
| Service Connect | 是 | 是 | 否 |
| VPC Lattice | 是 | 是 | 是 |