Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Service Discovery

您的 Amazon ECS 服务可以选择配置为使用 Amazon ECS Service Discovery。Service discovery 使用 Amazon Route 53 自动命名 API 操作来管理服务任务的 DNS 条目,使其可在 VPC 中供搜索。有关更多信息,请参阅 Amazon Route 53 API Reference 中的为服务发现使用自动命名

Service discovery 在以下 AWS 区域可用:

Region Name Region
US East (N. Virginia) us-east-1
US East (Ohio) us-east-2
US West (N. California) us-west-1
US West (Oregon) us-west-2
Asia Pacific (Mumbai) ap-south-1
Asia Pacific (Seoul) ap-northeast-2
Asia Pacific (Singapore) ap-southeast-1
Asia Pacific (Sydney) ap-southeast-2
Asia Pacific (Tokyo) ap-northeast-1
EU (Frankfurt) eu-central-1
EU (Ireland) eu-west-1
EU (London) eu-west-2
EU (Paris) eu-west-3
South America (São Paulo) sa-east-1
Canada (Central) ca-central-1

Service Discovery 概念

Service discovery 包括以下组件:

  • Service discovery 命名空间:共享相同域名的服务的逻辑组,例如 example.com。每个 Route 53 托管区域和每个 VPC 需要一个命名空间。如果您从 Amazon ECS 控制台使用 service discovery,则工作流为每个 ECS 群集创建一个私有命名空间。

  • Service discovery 服务:存在于 service discovery 命名空间中,由命名空间的服务名称和 DNS 配置组成。它提供了以下核心组件:

    • 服务目录:让您可通过 DNS 或 Route 53 自动命名 API 操作查找服务,并获取一个或多个可用于连接到该服务的可用终端节点。

  • 运行状况检查:执行定期容器级别的运行状况检查。如果终端节点不传递运行状况检查,则会将其从 DNS 路由中删除并标记为不正常。有关更多信息,请参阅Amazon Route 53 如何检查您的资源的运行状况

Service Discovery 注意事项

使用 service discovery 时应注意以下事项:

  • 支持公共命名空间,但您必须已将现有公共托管区域注册到 Route 53,然后再创建 service discovery 服务。

  • Service discovery 要求任务指定 awsvpcbridgehost 网络模式(不支持 none)。

  • 如果您的服务任务指定的任务定义使用 awsvpc 网络模式,您可以为每个服务任务创建 A 或 SRV 记录的任何组合。如果您使用 SRV 记录,则需要端口。

  • 如果您的服务任务指定的任务定义使用 bridgehost 网络模式,则 SRV 记录是唯一受支持的 DNS 记录类型。为每个服务任务创建 SRV 记录。SRV 记录必须从任务定义中指定容器名称和容器端口组合。

  • service discovery 服务的 DNS 记录可以在 VPC 中查询。它们采用以下格式:<service discovery service name>.<service discovery namespace>。有关更多信息,请参阅 第 5 步:验证 service discovery

  • 在服务名称上执行 DNS 查询时,A 记录返回与您任务对应的一组 IP 地址。SRV 记录返回各个任务的一组 IP 地址和端口。

  • 您可以为负载均衡器后面的 ECS 服务配置 service discovery,但 service discovery 流量始终路由至此任务而非负载均衡器。

  • Service discovery不支持使用 传统负载均衡器。

  • 为 service discovery 服务指定运行状况检查时,您必须使用由 Amazon ECS 或 Route 53 运行状况检查管理的自定义运行状况检查。运行状况检查的两个选项不能组合起来。

    • HealthCheckCustomConfig – Amazon ECS 代表您管理运行状况检查。Amazon ECS 使用来自容器和 Elastic Load Balancing 运行状况检查的信息以及您的任务状态来更新 Route 53 的运行状况。在创建 service discovery 服务时,使用 --health-check-custom-config 参数来指定。有关更多信息,请参阅 Amazon Route 53 API Reference 中的 HealthCheckCustomConfig

    • HealthCheckConfig – Route 53 创建运行状况检查来监控任务。这要求任务公开可用。在创建 service discovery 服务时,使用 --health-check-config 参数来指定。有关更多信息,请参阅 Amazon Route 53 API Reference 中的 HealthCheckConfig

  • 如果您使用 Amazon ECS 控制台,则工作流为每个 ECS 服务创建一个 service discovery 服务,并将所有任务 IP 地址映射为 A 记录,或者将任务 IP 地址和端口映射为 SRV 记录。

  • 无法对配置了 service discovery 的现有 ECS 服务进行更新来更改 service discovery 配置。

注意

如果使用平台版本 v1.1.0 或更高版本,则 Fargate 任务支持Service discovery。有关更多信息,请参阅 AWS Fargate 平台版本

Service Discovery 定价

使用 Amazon ECS service discovery 的客户需要支付使用 Route 53 自动命名 API 的费用。这涉及到创建托管区域和查询服务注册表的成本。有关更多信息,请参阅 Amazon Route 53 定价

Amazon ECS 执行容器级别的运行状况检查,并将此信息公开给 Route 53 自定义运行状况检查 API,此功能目标可供客户使用,没有额外成本。如果您为公开任务配置其他网络运行状况检查,则会向您收取这些运行状况检查的费用。