amazon-ecs - 任务停止后ECS服务发现更新太晚
问题描述
Stackoverflow 服务发现翻译:购物提要中的框 Stories 发货方法 Review + 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
我希望新任务在它们“运行”之后是可发现的,并且在目标组取消注册延迟开始时不再可发现。
如何确保服务发现不会使旧任务可发现?
解决方案
推荐阅读
- javascript - 在 SWR 获取请求中使用 Next.js 动态路由查询对象
- flutter - Flutter 包“just_audio”抛出异常
- javascript - TypeError:无法读取未定义的属性“当前”
- javascript - React 更改后 Laravel 视图未更新
- java - 使用 getContentpane 和 FlowLayout 对 Layout 进行更改,但它不起作用,为什么?
- c++ - 有没有办法将一些 unique_ptr 的右值引用传递给线程池
- javascript - React/TypeScript - 类型 'false | 元素'不可分配给类型'元素'
- javascript - 使用Javascript检查内容时出现问题是json类型
- c++ - 重载解析适用于函数,但不适用于隐式构造函数参数
- python - 为什么这段代码不继续留在条件循环中不止一次迭代?