互连服务 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

互连服务

在 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 服务,也可以连接到其他集群(包括同一集群中的 VPC 中)中的 Amazon ECS 服务。 Amazon Web Services 区域

    当您使用 Service Connect 时,Amazon ECS 会管理服务发现的所有部分:创建可以发现的名称,在任务开始和停止时动态管理每个任务的条目,在配置为发现名称的每个任务中运行代理。您的应用程序可以通过使用 DNS 名称的标准功能并建立连接来查找这些名称。如果您的应用程序已经执行了此操作,则无需修改应用程序即可使用 Service Connect。

    您在每项服务和任务定义中提供完整的配置。Amazon ECS 管理每个服务部署中对此配置的更改,以确保部署中的所有任务都以相同的方式运行。例如,DNS 即服务发现的一个常见问题是控制迁移。如果您将 DNS 名称更改为指向新的替换 IP 地址,则可能需要最长 TTL 时间才能开始使用新服务。使用 Service Connect,客户端部署通过替换客户端任务来更新配置。您可以像配置任何其他部署一样配置部署断路器和其他部署配置,使其影响 Service Connect 的更改。

    有关更多信息,请参阅 Service Connect

  • Amazon ECS 服务发现

    另一种 service-to-service 通信方法是使用服务发现进行直接通信。在这种方法中,您可以使用与 Amazon ECS 的 Amazon Cloud Map 服务发现集成。使用服务发现,Amazon ECS 将已启动的任务列表同步到 Amazon Cloud Map,后者维护一个 DNS 主机名,该主机名解析为来自该特定服务的一个或多个任务的内部 IP 地址。Amazon VPC 中的其他服务可以使用此 DNS 主机名,使用其内部 IP 地址将流量直接发送到另一个容器。

    这种 service-to-service 通信方式可提供低延迟。容器之间没有多余的组件。流量直接从一个集装箱流向另一个集装箱。

    这种方法适用于使用awsvpc网络模式,在这种模式下,每项任务都有自己唯一的 IP 地址。大多数软件仅支持使用 DNS A 记录,这些记录可直接解析为 IP 地址。使用awsvpc网络模式时,每项任务的 IP 地址都是一A条记录。但是,如果您使用bridge网络模式,则多个容器可能共享相同的 IP 地址。此外,动态端口映射会导致容器在该单个 IP 地址上随机分配端口号。此时,A记录已不足以用于服务发现。您还必须使用SRV记录。这种类型的记录可以跟踪 IP 地址和端口号,但需要您相应地配置应用程序。您使用的某些预先构建的应用程序可能不支持SRV记录。

    awsvpc网络模式的另一个优点是,每项服务都有一个唯一的安全组。您可以将此安全组配置为仅允许来自需要与该服务通信的特定上游服务的传入连接。

    使用服务发现进行直接 service-to-service 通信的主要缺点是,您必须实现额外的逻辑才能进行重试和处理连接失败。DNS 记录有一 time-to-live 个 (TTL) 期限,用于控制缓存多长时间。更新 DNS 记录和缓存过期需要一些时间,这样您的应用程序才能获取最新版本的 DNS 记录。因此,您的应用程序最终可能会解析 DNS 记录以指向另一个不再存在的容器。您的应用程序需要处理重试并具有忽略不良后端的逻辑。

    有关更多信息,请参阅 服务发现

网络模式兼容性表

下表介绍了这些选项与任务网络模式之间的兼容性。在表中,“客户端”是指从 Amazon ECS 任务内部建立连接的应用程序。

互连选项 已进行桥接 awsvpc Host
服务发现 是的,但要求客户端知道 DNS 中没有 hostPort 的 SRV 记录。 是的,但要求客户端知道 DNS 中没有 hostPort 的 SRV 记录。
Service Connect