使用 服務探索將 Amazon ECS 服務與 DNS 名稱連線 - Amazon Elastic Container Service

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

使用 服務探索將 Amazon ECS 服務與 DNS 名稱連線

您的 Amazon ECS 服務可以選擇性地設定為使用 Amazon ECS 服務探索。服務探索使用 AWS Cloud Map API 動作來管理 Amazon DNS 服務的 HTTP 和 ECS 命名空間。如需詳細資訊,請參閱 AWS Cloud Map 開發人員指南中的什麼是 AWS Cloud Map

服務探索可在下列 AWS 區域使用:

區域名稱 區域

美國東部 (維吉尼亞北部)

us-east-1

美國東部 (俄亥俄)

us-east-2

美國西部 (加州北部)

us-west-1

美國西部 (奧勒岡)

us-west-2

非洲 (開普敦)

af-south-1

亞太區域 (香港)

ap-east-1

亞太區域 (孟買)

ap-south-1

亞太區域 (海德拉巴)

ap-south-2

亞太區域 (東京)

ap-northeast-1

亞太區域 (首爾)

ap-northeast-2

亞太區域 (大阪)

ap-northeast-3

亞太區域 (新加坡)

ap-southeast-1

亞太區域 (雪梨)

ap-southeast-2

亞太區域 (雅加達)

ap-southeast-3

亞太區域 (墨爾本)

ap-southeast-4

加拿大 (中部)

ca-central-1

加拿大西部 (卡加利)

ca-west-1

中國 (北京)

cn-north-1

中國 (寧夏)

cn-northwest-1

歐洲 (法蘭克福)

eu-central-1

歐洲 (蘇黎世)

eu-central-2

歐洲 (愛爾蘭)

eu-west-1

歐洲 (倫敦)

eu-west-2

歐洲 (巴黎)

eu-west-3

歐洲 (米蘭)

eu-south-1

歐洲 (斯德哥爾摩)

eu-north-1

以色列 (特拉維夫)

il-central-1

歐洲 (西班牙)

eu-south-2

中東 (UAE)

me-central-1

中東 (巴林)

me-south-1

南美洲 (聖保羅)

sa-east-1

AWS GovCloud (美國東部)

us-gov-east-1

AWS GovCloud (美國西部)

us-gov-west-1

服務探索概念

服務探索包含下列元件:

  • 服務探索命名空間:擁有相同網域名稱 (例如 example.com) 的服務探索服務的邏輯群組。此為您要向其路由流量的網域名稱。您可以使用 aws servicediscovery create-private-dns-namespace命令或在 Amazon ECS 主控台中呼叫 來建立命名空間。您可以使用 aws servicediscovery list-namespaces 命令來檢視由目前帳戶所建立的命名空間摘要資訊。如需服務探索命令的詳細資訊,請參閱 AWS Cloud Map (服務探索) AWS CLI 參考指南list-namespaces中的 create-private-dns-namespace和 。

  • 服務探索服務:存在於服務探索命名空間內,由 服務名稱和命名空間的 DNS 組態組成。它提供以下核心元件:

    • 服務登錄檔:可讓您透過 DNS 或 AWS Cloud Map API 動作來查詢服務,並傳回可用於連線至服務的一或多個可用端點。

  • 服務探索執行個體:存在於服務探索服務內,由服務目錄中每個 Amazon ECS 服務相關聯的屬性組成。

    • 執行個體屬性:下列中繼資料會新增為每個設定為使用服務探索的 Amazon ECS 服務的自訂屬性:

      • AWS_INSTANCE_IPV4 – 對於A記錄,Route 53 傳回以回應 Word 查詢的 DNS IPv4地址,並在探索執行個體詳細資訊時 AWS Cloud Map 傳回,例如 192.0.2.44

      • AWS_INSTANCE_PORT:與服務探索服務相關聯的連接埠值。

      • AVAILABILITY_ZONE:在其中啟動任務的可用區域。對於使用 EC2 啟動類型的任務,這是容器執行個體所在的可用區域。對於使用 Fargate 啟動類型的任務,這是彈性網路介面所在的可用區域。

      • REGION:任務所在的區域。

      • ECS_SERVICE_NAME – 任務所屬的 Amazon ECS 服務名稱。

      • ECS_CLUSTER_NAME – 任務所屬的 Amazon ECS 叢集名稱。

      • EC2_INSTANCE_ID:放置任務的容器執行個體的 ID。如果任務使用 Fargate 啟動類型,則不會新增這個自訂屬性。

      • ECS_TASK_DEFINITION_FAMILY:任務使用的任務定義系列。

      • ECS_TASK_SET_EXTERNAL_ID:如果任務集合是為外部部署建立,並與服務探索登錄關聯,則 ECS_TASK_SET_EXTERNAL_ID 屬性將包含任務集合的外部 ID。

  • Amazon ECS 運作狀態檢查:Amazon ECS 會執行定期容器層級運作狀態檢查。如果端點未通過運作狀態檢查,則會從 DNS 路由中移除並標記為運作狀態不佳。

服務探索考量

使用服務探索時應考慮以下事項:

  • 服務探索支援在 Fargate 上使用 1.1.0 或更新平台版本的任務。如需詳細資訊,請參閱適用於 Amazon ECS 的 Fargate 平台版本

  • 被設定為使用服務探索的服務有每個服務 1,000 項任務的限制。這是由於 Route 53 服務配額所致。

  • Amazon ECS 主控台中的建立服務工作流程僅支援在私有 DNS 命名空間中註冊服務。建立 AWS Cloud Map 私有 DNS 命名空間時,會自動建立 Route 53 私有託管區域。

  • 必須設定 VPC DNS 屬性,才能成功解析 DNS。如需有關如何設定屬性的資訊,請參閱 Amazon DNS 使用者指南中的 VPC 支援 VPC

  • 為服務探索服務建立的 DNS 記錄一律使用任務的私有 IP 地址註冊,而不是公有 IP 地址,即使使用公有命名空間也是如此。

  • 服務探索要求任務指定 awsvpcbridgehost 網路模式 (不支援 none)。

  • 如果服務任務定義使用awsvpc網路模式,您可以為每個服務任務建立 A或 SRV 記錄的任意組合。如果您使用 SRV 記錄,則需要連接埠。

  • 如果服務任務定義使用 bridgehost 網路模式,則 SRV 記錄是唯一支援的 DNS 記錄類型。為每個服務任務建立 SRV 記錄。SRV 記錄必須指定任務定義的容器名稱和容器連接埠組合。

  • 您可以在 DNS 中查詢服務探索服務的 VPC 記錄。其採用的格式為:<service discovery service name>.<service discovery namespace>

  • 在服務名稱上執行 DNS 查詢時,A記錄會傳回一組對應於任務的 IP 地址。SRV 記錄會為每個任務傳回一組 IP 地址和連接埠。

  • 如果您有八筆或更少的良好記錄,Route 53 會回應所有 DNS 查詢,其中包含所有良好記錄。

  • 當所有記錄狀態不佳時,Route 53 會回應最多八個狀態不佳的記錄的 DNS 查詢。

  • 您可以為負載平衡器後方的服務設定服務探索,但會將服務探索流量一律路由到任務,而不是負載平衡器。

  • 服務探索不支援使用 Classic Load Balancer。

  • 我們建議您使用 Amazon ECS 管理的容器層級運作狀態檢查,以用於服務探索服務。

    • HealthCheckCustomConfig—Amazon ECS 代表您管理運作狀態檢查。Amazon ECS 會使用容器和運作狀態檢查的資訊,以及您的任務狀態來更新運作狀態 AWS Cloud Map。當您建立服務探索服務時,會使用 --health-check-custom-config 參數來指定。如需詳細資訊,請參閱 HealthCheckCustomConfig AWS Cloud Map 參考中的 API

  • 使用服務探索時建立 AWS Cloud Map 的資源必須手動清除。

  • 任務和執行個體會註冊為 ,UNHEALTHY直到容器運作狀態檢查傳回值為止。如果運作狀態檢查通過,狀態會更新為 HEALTHY。如果容器運作狀態檢查失敗,則會取消註冊服務探索執行個體。

服務探索定價

使用 Amazon ECS 服務探索的客戶需支付 Route 53 資源和 AWS Cloud Map 探索 API 操作的費用。其中包括建立 Route 53 託管區域和查詢服務登錄檔的費用。如需詳細資訊,請參閱 AWS Cloud Map 開發人員指南中的 AWS Cloud Map 定價

Amazon ECS 會執行容器層級運作狀態檢查,並將其公開至 AWS Cloud Map 自訂運作狀態檢查 API 操作。這目前提供給客戶免費使用。如果您針對公開的任務設定其他網路運作狀態檢查,則會向您收取其費用。