用于内部服务的AWS ECS Fargate,不含负载均衡器



我正在尝试使用cloudformation作为ECS服务与Fargate加载一些rest服务。我不想要这些服务的公共域名。我将从AWS Lambda函数内部访问它们。我意识到AWS Fargate需要负载均衡,负载均衡需要证书,证书需要域名。可能我错过了一些东西,但我试图加载AWS Fargate没有负载均衡器,我无法从Lambdas访问它。

问题是;我如何在没有负载平衡的情况下使用Fargate在ECS上运行我的服务?

使用ECS服务发现设置私有DNS记录,允许您的应用程序发现服务端点,而无需使用负载平衡器或创建公共DNS记录。服务发现的工作原理是在Route 53中创建可从VPC内查询的私有DNS记录,以便您可以找到在服务中运行的所有任务的IP地址。如果你运行多个任务,你会得到多个A记录,每个任务一个,所以你需要做客户端负载平衡通过选择一个随机记录在返回的集合。

上面链接的文档有点模糊,所以这里有一些更具体的说明:在控制台中创建服务时,在步骤2:配置网络中,选中启用服务发现集成复选框。然后指定"创建新的私有命名空间"。并为您的名称空间提供一个名称,例如foo.app。然后选择"创建新的发现服务"。单选按钮,并为您的服务指定一个名称(如service1)。将服务发现(可选)部分中的其余设置保留为默认值。

现在,从您的VPC内,您将能够查找service1.foo.app并获得A记录,其中包含服务中运行的所有任务的IP地址。

这篇中型文章还很好地总结了如何设置服务发现。

最新更新