我正在使用一个由在 CentOS 主机上运行的 docker 容器组成的基础设施平台。
- 通过 docker compose 扩展多个容器。
- 服务发现的领事。
- 服务注册的注册器
- HAProxy 作为负载均衡器
- 每次添加/删除容器时生成 haproxy 配置的 Consul 模板。
每次我们更新构建时,都会生成新容器并删除旧容器。问题是容器被立即删除,而不考虑容器正在服务的现有请求。理想情况下,我应该有一个信号来标记容器处于维护或排空模式,以便可以服务现有连接,然后先优雅地从 haproxy 中删除,然后再从物理上删除。
有没有人遇到过这个问题,或者通过容器完成了类似的自动缩放工作流。
根据我对您所问问题的理解,您可以控制此过程的所有步骤,并希望在不中断客户端与旧应用程序的连接但阻止新连接的情况下,启动位于 HAProxy 后面的容器化应用程序的新版本。
这似乎很好地使用了HAProxy 禁用服务器命令。
您应该能够禁用已弃用的服务器,将它们标记为停机以在 HAProxy 中进行维护,这应该可以优雅地允许客户端完成他们的业务,然后您的 consul/HAProxy 魔法可以使新服务器上线。