Answers:
在大多数情况下,您很可能希望使用ALB / NLB进行服务发现。尽管有一些成本,但您也可以获得很多好处:一些DoS保护,扩展指标,日志记录,SSL / TLS
但是,您可以使用ECS服务发现。
服务发现使用Amazon Route 53自动命名API操作来管理服务任务的DNS条目,使它们可在VPC中发现
和
支持公共名称空间,但是在创建服务发现服务之前,您必须具有向Route 53注册的现有公共托管区域。
服务发现要求任务使用awsvpc,网桥或主机网络模式。
这是一个博客条目,详细介绍了如何在Fargate中使用服务发现:https://aws.amazon.com/blogs/aws/amazon-ecs-service-discovery/
我尝试过了。问题是Fargate使用的公共IP已附加到任务,因此,如果任务重新启动,则会提供新的IP地址,并且需要更新dns记录。这就是为什么使用alb / nlb的原因。
从理论上讲,您可以使用其他方法来管理dns主机记录,例如lambda函数或其他方法。
服务发现注意事项:为服务发现服务创建的DNS记录始终使用任务的私有IP地址而不是公共IP地址注册,即使使用公共名称空间也是如此。
Amazon ECS不支持将服务注册到公共DNS名称空间
因此,没有机会通过ECS Service Discovery开箱即用地注册公共域。但是,您可以做的是在部署后使用AWS SKD来获取容器的公共IP地址,并将其注册到公共Route 53托管区域中。
本文介绍了一种使用lambda函数的方法,可以在重新部署容器时准确地做到这一点。