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

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

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

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

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

區域名稱 區域

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

us-east-1

美國東部 (俄亥俄)

us-east-2

美國西部 (加州北部)

us-west-1

美國西部 (奧勒岡)

us-west-2

Africa (Cape Town)

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

Europe (Stockholm)

eu-north-1

以色列 (特拉維夫)

il-central-1

歐洲 (西班牙)

eu-south-2

中東 (阿拉伯聯合大公國)

me-central-1

Middle East (Bahrain)

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 傳回以回應 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 VPC 使用者指南中的 VPC 中的 DNS 支援

  • 為服務探索服務建立的 DNS 記錄總是會使用任務的私有 IP 地址註冊,而非公有 IP 地址 (即使使用公有命名空間)。

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

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

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

  • 您可以在 VPC 內查詢服務探索服務的 DNS 記錄。其採用的格式為:<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 參數來指定。如需詳細資訊,請參閱 AWS Cloud Map API 參考中的 HealthCheckCustomConfig

  • 使用服務探索時建立 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 操作。這目前提供給客戶免費使用。如果您針對公開的任務設定其他網路運作狀態檢查,則會向您收取其費用。