Stackoverflow服务发现 翻译:购物Feed中的框 故事船方法 评论+ Maand
嗨,
我正在使用Fargate启动类型在同一集群中运行2个AWS ECS服务(A和B)。
服务A应该能够连接到服务B。使用Service Discovery可以实现。
我创建了一个服务发现backend.local
,其 TTL为15秒。服务B中的任务被添加到目标组,该组的注销时间为30秒。
+--------------+ +-------------+ +--------------+
| Application +-----> ECS: A +--------> ECS: B |
| Load | +-------------+ +--------------+
| Balancer | | Task 1 | | Task 1 |
+--------------+ | Task 2 | | Task . |
+-------------+ | Task n |
+--------------+
这很完美,我可以从服务A向http://backend.local发出请求,这些请求被路由到服务B中的一项任务。
但是,在滚动部署服务B之后,服务发现DNS记录不会及时更新。因此,nslookup backend.local
还返回了不再可用的旧任务的IP地址。
部署期间任务的生命周期是:
Pending -> Activating -> Running
Running -> Deactivating --> Stopped
我希望新任务在“运行”之后就可以发现,而当目标组取消注册延迟开始时就不再可以发现。
如何确保服务发现功能不会发现旧任务?