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

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

Service Connect

Amazon ECS Service Connect 以亚马逊 ECS 配置的形式提供 service-to-service 通信管理。它通过在 Amazon ECS 中同时构建服务发现和服务网格来实现此目的。这为您通过服务部署管理的每个 Amazon ECS 服务提供了完整配置、在不依赖于 Amazon VPC DNS 配置的命名空间内引用您的服务的统一方法,以及用于监控 Amazon ECS 上的所有应用程序的标准化指标和日志。Amazon ECS Service Connect 仅互连 Amazon ECS 服务。

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


            显示最少 HA 服务的 Service Connect 网络示例
配置 Service Connect 的步骤概述

按照以下步骤为一组相关服务配置 Service Connect。

重要
  • Amazon ECS Service Connect 在您的账户中创建 Amazon Cloud Map 服务。通过手动注册/取消注册实例、更改实例属性或删除服务来修改这些 Amazon Cloud Map 资源可能会导致应用程序流量或后续部署出现意外行为。

  • Amazon ECS Service Connect 不支持任务定义中的链接。

  1. 将端口名称添加到您的任务定义的端口映射中。此外,您可以识别应用程序的第 7 层协议,以获得更多指标。

  2. 创建带有 Amazon Cloud Map 命名空间的 ECS 集群或单独创建命名空间。对于简单的组织,使用您想要用于命名空间的名称创建一个 Amazon ECS 集群并为命名空间指定相同的名称。在这种情况下,Amazon ECS 使用必要的配置创建了一个新的 HTTP 命名空间。Amazon ECS Service Connect 不在 Amazon Route 53 中使用或创建 DNS 托管区。

  3. 配置服务以在命名空间内创建 Service Connect 端点。

  4. 部署服务以创建端点。Amazon ECS 向每个任务添加一个 Service Connect 代理容器,并在 Amazon Cloud Map中创建 Service Connect 端点。此容器未在任务定义中配置,任务定义无需修改即可重复使用,以便在同一个命名空间或多个命名空间中创建多个服务。

  5. 将客户端应用程序部署为服务以连接到端点。Amazon ECS 通过每项任务中的 Service Connect 代理将它们连接到 Service Connect 端点。

    应用程序仅会使用代理连接到 Service Connect 端点。无需其他配置,即可使用代理。代理执行轮询负载均衡、异常值检测和重试。有关代理的更多信息,请参阅 Service Connect 代理

  6. 通过 Amazon 中的 Service Connect 代理监控流量 CloudWatch。

支持 Service Connect 的区域

Amazon ECS Service Connect 可在以下 Amazon 区域使用:

区域名称 区域

美国东部(俄亥俄州)

us-east-2

美国东部(弗吉尼亚州北部)

us-east-1

美国西部(北加利福尼亚)

us-west-1

美国西部(俄勒冈州)

us-west-2

非洲(开普敦)

af-south-1

亚太地区(香港)

ap-east-1

亚太地区(雅加达)

ap-southeast-3

亚太地区(孟买)

ap-south-1

亚太地区(海得拉巴)

ap-south-2

亚太地区(大阪)

ap-northeast-3

亚太地区(首尔)

ap-northeast-2

亚太地区(新加坡)

ap-southeast-1

亚太地区(悉尼)

ap-southeast-2

亚太地区(墨尔本)

ap-southeast-4

亚太地区(东京)

ap-northeast-1

加拿大(中部)

ca-central-1

加拿大西部(卡尔加里)

ca-west-1

中国(北京)

cn-north-1(注意:Service Connect 的 TLS 不适用于该区域。)

中国(宁夏)

cn-northwest-1(注意:Service Connect 的 TLS 不适用于该区域。)

欧洲地区(法兰克福)

eu-central-1

欧洲地区(爱尔兰)

eu-west-1

欧洲地区(伦敦)

eu-west-2

欧洲地区(巴黎)

eu-west-3

欧洲地区(米兰)

eu-south-1

欧洲(西班牙)

eu-south-2

欧洲地区(斯德哥尔摩)

eu-north-1

欧洲(苏黎世)

eu-central-2

以色列(特拉维夫)

il-central-1

中东(巴林)

me-south-1

中东(阿联酋)

me-central-1

南美洲(圣保罗)

sa-east-1

Service Connect 注意事项

  • Service Connect 不支持 Windows 容器。

  • 在 Fargate 中运行的任务必须使用 Fargate Linux 平台版本 1.4.0 或更高版本才能使用 Service Connect。

  • 容器实例上的 ECS 代理版本必须为 1.67.2 或更高版本。

  • 容器实例必须运行经 Amazon ECS 优化的 Amazon Linux 2023 AMI 版本 20230428 或更高版本或者经 Amazon ECS 优化的 Amazon Linux 2 AMI 版本 2.0.20221115 才能使用 Service Connect。除了 Amazon ECS 容器代理之外,这些版本还具有 Service Connect 代理。有关 Service Connect 代理的更多信息,请参阅上的 Amazon ECS Service Connect 代理 GitHub。

  • 容器实例必须具有对资源 arn:aws:ecs:region:0123456789012:task-set/cluster/*ecs:Poll 权限。如果您使用的是 ecsInstanceRole,则无需添加其他权限。AmazonEC2ContainerServiceforEC2Role 托管策略具有必要权限。有关更多信息,请参阅 Amazon ECS 容器实例 IAM 角色

  • Service Connect 不支持 Amazon ECS Anywhere 的 External 容器实例。

  • Service Connect 只支持使用滚动部署的服务。不支持使用蓝/绿外部部署类型的服务。

  • 任务定义必须设置任务内存限制才能使用 Service Connect。有关更多信息,请参阅 Service Connect 代理

  • 不支持为所有容器设置容器内存限制而不是设置任务内存限制的任务定义。

    您可以在容器上设置容器内存限制,但必须将任务内存限制设置为大于容器内存限制总和的数字。未在容器限制中分配的任务限制中的额外 CPU 和内存将由 Service Connect 代理容器和其他未设置容器限制的容器使用。有关更多信息,请参阅 Service Connect 代理

  • 您可以在服务中将 Service Connect 配置为使用同一个服务 Amazon Web Services 区域 中的任何 Amazon Cloud Map 命名空间 Amazon Web Services 账户。

  • 每个 Amazon ECS 服务所属的命名空间只能是唯一的。

  • 仅支持 Amazon ECS 服务创建的任务。无法为 Service Connect 配置独立任务。

  • 所有端点在命名空间内必须是唯一的。

  • 所有发现名称在命名空间内必须是唯一的。

  • 必须重新部署现有服务,然后其中的应用程序才能解析新的端点。在最新部署后添加到命名空间的新端点不会添加到任务配置中。有关更多信息,请参阅 部署顺序

  • 您可以在创建新集群时创建命名空间。删除集群时,Amazon ECS Service Connect 不会删除命名空间。如果使用完命名空间, Amazon Cloud Map 则必须直接将其删除。

  • Service Connect 不支持 HTTP 1.0。

  • Application Load Balancer 流量默认为在awsvpc网络模式下通过 Service Connect 代理进行路由。如果您希望非服务流量绕过 Service Connect 代理,请在 Service Connect 服务配置中使用ingressPortOverride参数。

Service Connect 控制台体验

要创建新的命名空间,要么使用 Amazon ECS 控制台创建一个新的 Amazon ECS 集群并指定要创建的命名空间名称,要么使用 Amazon Cloud Map 控制台。Amazon ECS Service Connect 可以使用任何实例发现类型的 Amazon Cloud Map 命名空间。我们建议使用 API 调用类型,以使额外资源量最小化。要在 Amazon ECS 控制台中创建新的 Amazon ECS 集群和命名空间,请参阅 使用控制台为 Fargate 和 External 启动类型创建集群

所选 Amazon Cloud Map 命名空间 Amazon Web Services 账户 中的每个命名空间 Amazon Web Services 区域 都显示在 Amazon ECS 控制台的命名空间中。

要删除命名空间,请使用 Amazon Cloud Map 控制台。命名空间必须为空才能进行删除。

要创建新的 Amazon ECS 任务定义或注册现有任务定义的新修订版并使用 Service Connect,请参阅 使用控制台创建任务定义

要创建使用 Service Connect 的新 Amazon ECS 服务,请参阅 使用控制台创建服务

Service Connect 定价

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

Amazon Cloud Map 如果通过 Amazon ECS Service Connect 消费,则完全免费使用。

Service Connect 参数

使用 Service Connect 时,以下参数具有额外字段。

参数位置 应用程序类型 描述 必填?
任务定义 客户端 在客户端任务定义中,Service Connect 没有可用的更改。 不适用
任务定义 客户端-服务器 服务器必须向容器的 portMappings 中的端口添加 name 字段。有关更多信息,请参阅 portMappings 支持
任务定义 客户端-服务器 服务器可以选择提供应用程序协议(例如,HTTP)来接收其服务器应用程序的协议特定的指标(例如,HTTP 5xx)。 不支持
服务定义 客户端 客户端服务必须添加 serviceConnectConfiguration 才能配置要加入的命名空间。此命名空间必须包含该服务需要发现的所有服务器服务。有关更多信息,请参阅 serviceConnectConfiguration 支持
服务定义 客户端-服务器 服务器服务必须添加 serviceConnectConfiguration 才能配置提供该服务的 DNS 名称、端口号和命名空间。有关更多信息,请参阅 serviceConnectConfiguration 支持
集群 客户端 集群可以添加默认的 Service Connect 命名空间。在服务中配置 Service Connect 后,集群中的新服务会继承命名空间。有关更多信息,请参阅 Amazon ECS 集群 不支持
集群 客户端-服务器 在适用于服务器服务的集群中,Service Connect 没有可用的更改。服务器任务定义和服务必须设置相应的配置。 不适用