本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Service Connect 以短名稱連接 Amazon ECS 服務
Amazon ECS Service Connect 提供服務對服務通訊的管理作為 Amazon ECS 組態。它在 Amazon ECS 中建置服務探索和服務網格。這可在您由服務部署管理的每個服務內提供完整的組態、在命名空間中參考您服務的統一方式,而這些方式不依賴 VPC DNS 組態,以及標準化指標和日誌來監控所有應用程式。Service Connect 僅互連服務。
下圖顯示 VPC 和 2 個服務中具有 2 個子網路的 Service Connect 網路範例。一種用戶端服務,在每個子網路中執行具有 1 項任務的 WordPress。一種伺服器服務,在每個子網路中執行具有 1 項任務的 MySQL。這兩種服務都具有高度可用性,並且對任務和可用區域問題具有彈性,因為每個服務都會執行分散在 2 個子網路上的多個任務。實心箭頭顯示從 WordPress 到 MySQL 的連線。例如,從具有 IP 地址 172.31.16.1
任務中的 WordPress 容器內執行的 mysql --host=mysql
CLI 命令。該命令在 MySQL 預設連接埠上使用簡短名稱 mysql
。此名稱和連接埠會在相同任務中連線至 Service Connect Proxy。WordPress 任務中的 Proxy 會在異常值偵測中使用循環配置負載平衡,以及任何先前的失敗資訊,以挑選要連接的 MySQL 任務。如圖中的實心箭頭所示,Proxy 連線至具 IP 地址 172.31.16.2
MySQL 任務中的第二個 Proxy。在同一任務中,第二個 Proxy 連線至本機 MySQL 伺服器。這兩個 Proxy 都會回報在 Amazon ECS 和 Amazon CloudWatch 主控台中以圖形顯示的連線效能,讓您以相同的方式從各種應用程式取得效能指標。
![顯示最低 HA 服務的範例 Service Connect 網路](images/serviceconnect.png)
以下術語會與 Service Connect 搭配使用。
- 連接埠名稱
-
將名稱指派給特定連接埠映射的 Amazon ECS 任務定義組態。此組態僅供 Amazon ECS Service Connect 使用。
- 用戶端別名
-
Amazon ECS 服務組態,用於指派端點中使用的連接埠號碼。此外,用戶端別名可以指派端點的 DNS 名稱,以覆寫探索名稱。如果 Amazon ECS 服務中未提供探索名稱,則用戶端別名會覆寫連接埠名稱作為端點名稱。如需端點範例,請參閱端點的定義。您可以將多個用戶端別名指派給 Amazon ECS 服務。此組態僅供 Amazon ECS Service Connect 使用。
- 探索名稱
-
此為選用的中繼名稱,您可以從任務定義為指定的連接埠建立此名稱。此名稱用於建立 AWS Cloud Map 服務。如果未提供此名稱,則會使用任務定義中的連接埠名稱。您可以將多個探索名稱指派給 Amazon ECS 服務的特定連接埠。此組態僅供 Amazon ECS Service Connect 使用。
AWS Cloud Map 服務名稱在命名空間中必須是唯一的。由於此限制,對於每個命名空間中的特定任務定義,如果未提供探索名稱,您只能有一個 Service Connect 組態。
- 端點
-
連線到 API 或網站的 URL。URL 包含協定、DNS 名稱和連接埠。如需一般端點的更多資訊,請參閱 Amazon Web Services 一般參考內AWS 詞彙表中的端點。
Service Connect 可建立與 Amazon ECS 服務連線的端點,並將 Amazon ECS 服務中的任務設定為連線到端點。URL 包含協定、DNS 名稱和連接埠。您可以在任務定義中選取協定和連接埠名稱,因為連接埠必須比對容器映像內的應用程式。在服務中,您可以依名稱選取每個連接埠,並且可以指派 DNS 名稱。如果您未在 Amazon ECS 服務組態中指定 DNS 名稱,則會依預設使用任務定義中的連接埠名稱。例如,Service Connect 端點可以是
http://blog:80
、grpc://checkout:8080
或http://_db.production.internal:99
。 - Service Connect 服務
-
Amazon ECS 服務中單一端點的組態。這是 Service Connect 組態的一部分,包含主控台中 Service Connect and discovery name configuration (Service Connect 和探索名稱組態) 中的單一列,或是 Amazon ECS 服務 JSON 組態內
services
清單中的某個物件。此組態僅供 Amazon ECS Service Connect 使用。如需詳細資訊,請參閱 Amazon Elastic Container Service API Reference (《Amazon Elastic Container Service API 參考》) 中的 ServiceConnectService。
- 命名空間
-
用於 Service Connect 之 AWS Cloud Map 命名空間的簡短名稱或完整 Amazon Resource Name (ARN)。命名空間必須與 Amazon ECS 服務和叢集 AWS 區域 位於相同位置。中的命名空間類型 AWS Cloud Map 不會影響 Service Connect。
Service Connect 使用 AWS Cloud Map 命名空間做為彼此通訊的 Amazon ECS 任務邏輯群組。每個 Amazon ECS 服務只能屬於一個命名空間。命名空間內的服務可以分散到相同 AWS 區域 內的不同 Amazon ECS 叢集 AWS 帳戶。您可以依據任何條件自由組織服務。
- 用戶端服務
-
執行網路用戶端應用程式的服務。此服務必須設定命名空間。服務中的每個任務都可以透過 Service Connect Proxy 容器探索,並連線到命名空間中的所有端點。
如果任務中任何容器需要從命名空間中的服務連線到端點,請選擇用戶端服務。如果前端、反向 Proxy 或負載平衡器應用程式透過其他方法 (例如 Elastic Load Balancing) 接收外部流量,則可使用此類型的 Service Connect 組態。
- 用戶端-伺服器服務
-
執行網路或 Web 服務應用程式的 Amazon ECS 服務。此服務必須具有命名空間,並且至少已設定一個端點。您可以使用端點連上服務中的每項任務。Service Connect Proxy 容器會接聽端點名稱和連接埠,以將流量引導至任務中的應用程式容器。
如果有任何容器在連接埠上公開並接聽網路流量,請選擇用戶端-伺服器服務。這些應用程式不需要連線到相同命名空間中的其他用戶端伺服器服務,但需要用戶端組態。後端、中介軟體、商業層或大多數微服務都可以使用這種類型的 Service Connect 組態。如果您希望前端、反向 Proxy 或負載平衡器應用程式接收來自相同命名空間中使用 Service Connect 設定的其他服務流量,則這些服務應使用此類型的 Service Connect 組態。
Service Connect 功能會建立相關服務的虛擬網路。您可以跨多個不同的命名空間使用相同的服務組態,以執行獨立但相同的應用程式集合。Service Connect 會定義 Amazon ECS 服務中的 Proxy 容器。如此一來,您可以使用相同的任務定義,在具有不同 Service Connect 組態的不同命名空間中執行相同的應用程式。服務執行的每個任務都會在任務中執行代理容器。
Service Connect 適用於相同命名空間內 Amazon ECS 服務之間的連線。對於下列應用程式,您需要使用額外的互連線方法,才能連線到使用 Service Connect 設定的 Amazon ECS 服務:
-
在其他命名空間中設定的任務
-
未針對 Service Connect 設定的任務
-
Amazon ECS 以外的其他應用程式
這些應用程式可以透過 Service Connect Proxy 連線,但無法解析 Service Connect 端點名稱。
若要讓這些應用程式解析 Amazon ECS 任務的 IP 地址,您需要使用另一個互連方法。
定價
Amazon ECS Service Connect 定價取決於您是否使用 AWS Fargate 或 Amazon EC2 基礎設施來託管容器化工作負載。在 上使用 Amazon ECS 時 AWS Outposts,定價會遵循直接使用 Amazon EC2 時所使用的相同模型。如需詳細資訊,請參閱 Amazon ECS 定價
AWS Cloud Map 當 Service Connect 使用它時,用量完全免費。