【问题标题】:AWS ECS Fargate without Load Balancer for internal servicesAWS ECS Fargate 不带负载均衡器用于内部服务
【发布时间】:2021-10-12 09:09:52
【问题描述】:
我正在尝试使用 cloudformation 作为 ECS 服务与 Fargate 加载一些休息服务。
我不想要这些服务的公共域名。我将从我的 AWS Lambda 函数内部访问它们。
我意识到 AWS Fargate 需要负载均衡,负载均衡器需要证书,证书需要域名。
可能我遗漏了一些东西,但我尝试在没有负载均衡器的情况下加载 AWS Fargate,但我无法从 Lambdas 访问它。
问题是;如何在没有负载均衡器的情况下使用 Fargate 在 ECS 上运行我的服务?
【问题讨论】:
标签:
aws-lambda
amazon-ecs
amazon-elb
aws-fargate
【解决方案1】:
使用 ECS Service Discovery 设置私有 DNS 记录,使您的应用程序无需使用负载平衡器或创建公共 DNS 记录即可发现服务端点。服务发现通过在 Route 53 中创建可从您的 VPC 中查询的私有 DNS 记录来工作,以便您可以找到服务中运行的所有任务的 IP 地址。如果您正在运行多个任务,您将获得多条 A 记录,每个任务一条,因此您需要通过在返回集中随机选择一条记录来进行客户端负载平衡。
上面链接的文档有点模糊,所以这里有一些更具体的说明:在控制台中创建服务时,在第 2 步:配置网络中,选中启用服务发现集成复选框。然后指定“创建新的私有命名空间”并为您的命名空间提供一个名称,例如foo.app。然后选择“创建新的发现服务”单选按钮,并为您的服务指定一个名称(例如service1)。将服务发现(可选)部分中的其余设置保留为默认设置。
现在,您可以在您的 VPC 中查找 service1.foo.app 并获取包含服务中运行的所有任务的 IP 地址的 A 记录。
这个medium article 也很好地总结了如何设置服务发现。