使用 Service Connect 连接具有短名称的 Amazon ECS 服务 - Amazon Elastic Container Service

使用 Service Connect 连接具有短名称的 Amazon ECS 服务

Amazon ECS Service Connect 以 Amazon ECS 配置的形式提供服务间通信的管理。它在 Amazon ECS 中同时构建服务发现和服务网格。这让您可以通过服务部署控制您管理的每个服务内部的全面配置,使用不依赖 VPC DNS 配置的统一方式在命名空间中引用您的服务,以及使用标准化的指标和日志来监控您的所有应用程序。Service Connect 仅会互连服务。

下图显示了一个示例 Service Connect 网络,其具有 VPC 中的 2 个子网和有 2 个服务。一种运行 WordPress 的客户端服务,其在每个子网中有 1 个任务。一种运行 MySQL 的服务器服务,其在每个子网中有 1 个任务。这两项服务都具有很高的可用性,可以弹性应对任务和可用区问题,因为每项服务都运行分布在 2 个子网中的多个任务。实心箭头会显示从 WordPress 到 MySQL 的连接。例如,使用 IP 地址 172.31.16.1 在任务中从 WordPress 容器内部运行的 mysql --host=mysql CLI 命令。该命令在 MySQL 的默认端口上使用简称 mysql。此名称和端口会在同一任务中连接到 Service Connect 代理。WordPress 任务中的代理使用轮询负载均衡和异常值检测中的任何先前失败信息来选择要连接到的 MySQL 任务。如图中的实心箭头所示,代理使用 IP 地址 172.31.16.2 连接到 MySQL 任务中的第二个代理。第二个代理会在同一任务中连接到本地 MySQL 服务器。这两个代理均会报告连接性能,这些性能在 Amazon ECS 和 Amazon CloudWatch 控制台的图表中可见,因此您可以用相同的方式从各种应用程序中获取性能指标。

显示最少 HA 服务的 Service Connect 网络示例

以下服务可与 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:80grpc://checkout:8080http://_db.production.internal:99

Service Connect 服务

Amazon ECS 服务中单一端点的配置。这是 Service Connect 配置的一部分,由控制台中的 Service Connect 和发现名称配置中的单行组成,或由 Amazon ECS 服务的 JSON 配置中的 services 列表中的一个对象组成。此配置仅供 Amazon ECS Service Connect 使用。

有关更多信息,请参阅《Amazon Elastic Container Service API 参考》中的 ServiceConnectService

命名空间

与 Service Connect 结合使用的 AWS Cloud Map 命名空间的 Amazon 资源名称(ARN)短名称或全称。命名空间必须与 Amazon ECS 服务和集群在同一个 AWS 区域 内。AWS Cloud Map 中的命名空间类型不影响 Service Connect。

Service Connect 将 AWS Cloud Map 命名空间用作相互对话的 Amazon ECS 任务的逻辑分组。每个 Amazon ECS 服务所属的命名空间只能是唯一的。命名空间中的服务可以分布在同一个 AWS 账户 中的同一个 AWS 区域 内的不同 Amazon ECS 集群中。您可以根据任何标准自由地组织服务。

客户端服务

一种运行网络客户端应用程序的服务。此服务必须配置命名空间。服务中的每项任务都可以通过 Service Connect 代理容器发现并连接到命名空间中的所有端点。

如果任务中的任何容器需要从命名空间中的服务连接到端点,请选择客户端服务。如果前端、反向代理或负载均衡器应用程序通过其他方法(例如从 Elastic Load Balancing 中)接收外部流量,则它可以使用这种类型的 Service Connect 配置。

客户端-服务器服务

一种运行网络或 Web 服务应用程序的 Amazon ECS 服务。此服务必须配置命名空间和至少一个端点。使用端点即可访问服务中的每项任务。Service Connect 代理容器侦听端点名称和端口,将流量引导到任务中的应用程序容器。

如果有任何容器公开并侦听端口上的网络流量,请选择客户端-服务器服务。这些应用程序无需连接到同一命名空间中的其他客户端-服务器服务,但需要客户端配置。后端、中间件、业务层或大多数微服务都可以使用这种类型的 Service Connect 配置。如果您希望前端、反向代理或负载均衡器应用程序接收来自在相同命名空间中的使用 Service Connect 进行配置的其他服务的流量,则这些服务应使用此类 Service Connect 配置。

Service Connect 功能可创建相关服务的虚拟网络。可以在多个不同的命名空间中使用相同的服务配置,以运行独立但相同的应用程序集。Service Connect 定义了 Amazon ECS 服务中的代理容器。通过这种方式,就可以使用相同的任务定义在具有不同 Service Connect 配置的不同命名空间中运行相同的应用程序。服务制造的每项任务都会在任务中运行一个代理容器。

Service Connect 适用于同一命名空间内的 Amazon ECS 服务之间的连接。对于以下应用程序,您需要使用其他互连方法连接到配置了 Service Connect 的 Amazon ECS 服务:

  • 在其他命名空间中配置的任务

  • 未针对 Service Connect 配置的任务

  • Amazon ECS 之外的其他应用程序

这些应用程序可以通过 Service Connect 代理进行连接,但无法解析 Service Connect 端点名称。

若要让这些应用程序解析 Amazon ECS 任务的 IP 地址,则需使用另一种互连方法。

定价

Amazon ECS Service Connect 的定价取决于您是使用 AWS Fargate 还是 Amazon EC2 基础设施来托管您的容器化工作负载。在 AWS Outposts 上使用 Amazon ECS 时,则定价采用与您直接使用 Amazon EC2 时相同的模式。有关更多信息,请参阅 Amazon ECS 定价

当 Service Connect 使用它时,AWS Cloud Map 使用完全免费。