具有docker swarm模式的高可用性

时间:2016-10-28 15:25:51

标签: docker docker-swarm

使用docker swarm模式时遇到了一些问题。

我希望通过swarm模式获得高可用性。 我想我可以通过滚动更新swarm来做到这一点。

像这样......

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

但是有一个问题。 我的码头图像有入口点。因此,在服务之前有一点延迟(我的意思是泊坞容器)真的很快。但是,docker服务只是认为该服务已经在运行,因为容器的状态是“Up'”。即使是服务仍然在入口点做一些工作。因此,当我尝试连接服务时,某些容器返回错误。

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

那么..有什么解决方案可以解决这个问题吗? 我是否应该为断开与错误容器的连接进行一些nginx设置并重新连接另一个?

1 个答案:

答案 0 :(得分:1)

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

这里有一篇很好的文章:Reducing Deploy Risk With Docker’s New Health Check Instruction