docker群模式下的高可用性

使用docker swarm模式我有一些问题。

我想拥有群集模式的高可用性。 我想我可以用滚动更新群来做到这一点。

像这样的东西…

docker service update --env-add test=test --update-parallelism 1 --update-delay 10s 6bwm30rfabq4 

但是有一个问题。 我的docker形象有入口点。 正因为如此,在服务(我的意思是docker集装箱)之前有一点点延迟。 但docker服务只是认为服务已经运行,因为容器的状态是'上'。 即使这个服务在入口点上还是做了一些工作。 所以当我尝试连接服务时,一些容器返回错误。

例如,如果我创build名为“test”的docker服务,并使用端口8080扩展为4,则可以在Web浏览器上访问test:8080。 我试着滚动更新 – 更新--update-parallelism 1 --update-delay 10s更新--update-parallelism 1 --update-delay 10s选项。 之后,我尝试再次连接服务..一个容器返回错误..因为Docker服务认为该容器已经运行..即使容器仍然因为入口点不起来。 而在10秒后,另一个容器返回错误。因为更新已经启动,并且docker服务也认为容器已经启动。

那么..有没有解决这个问题的方法? 我应该做一些nginx设置断开连接到错误容器,并重新连接另一个?

HEALTHCHECK Dockerfile命令适用于此用例。 您可以指定Docker如何检查容器是否可用,并在更新过程中使用,以及检查Swarm中的服务级别。

这里有一篇很好的文章: 使用Docker的新健康检查指令减less部署风险 。