docker 集群模式的高可用性
high availability with docker swarm mode
我在使用 docker 集群模式时遇到一些问题。
我想通过群模式获得高可用性。
我想我可以通过 swarm 的滚动更新来做到这一点。
像这样...
docker service update --env-add test=test --update-parallelism 1 --update-delay 10s 6bwm30rfabq4
但是有一个问题。
我的 docker 图像有入口点。因此,在服务(我的意思是 docker 容器)真正启动之前会有一点延迟。但是 docker 服务只是认为服务已经 运行ning,因为容器的状态是 'Up'。甚至服务仍然在入口点上做一些工作。所以当我尝试连接服务时出现一些容器 return 错误。
例如,如果我创建名为 'test' 的 docker 服务并使用端口 8080 扩展到 4 个。我可以在 Web 浏览器上访问 test:8080。我尝试使用 --update-parallelism 1 --update-delay 10s
选项滚动更新。之后我再次尝试连接服务..一个容器 return 错误..因为 Docker 服务认为容器已经 运行..即使容器仍然没有启动,因为入口点. 10 秒后另一个容器 return 错误.. 因为更新已启动并且 docker 服务也认为容器已经启动。
So.. 有没有办法解决这个问题?
我是否应该进行一些 nginx 设置以断开与错误容器的连接并重新连接另一个容器?
HEALTHCHECK Dockerfile 命令适用于此用例。您指定 Docker 应如何检查容器是否可用,以及在更新期间使用它以及检查 Swarm 中的服务级别。
这里有一篇关于它的好文章:Reducing Deploy Risk With Docker’s New Health Check Instruction。
我在使用 docker 集群模式时遇到一些问题。
我想通过群模式获得高可用性。 我想我可以通过 swarm 的滚动更新来做到这一点。
像这样...
docker service update --env-add test=test --update-parallelism 1 --update-delay 10s 6bwm30rfabq4
但是有一个问题。 我的 docker 图像有入口点。因此,在服务(我的意思是 docker 容器)真正启动之前会有一点延迟。但是 docker 服务只是认为服务已经 运行ning,因为容器的状态是 'Up'。甚至服务仍然在入口点上做一些工作。所以当我尝试连接服务时出现一些容器 return 错误。
例如,如果我创建名为 'test' 的 docker 服务并使用端口 8080 扩展到 4 个。我可以在 Web 浏览器上访问 test:8080。我尝试使用 --update-parallelism 1 --update-delay 10s
选项滚动更新。之后我再次尝试连接服务..一个容器 return 错误..因为 Docker 服务认为容器已经 运行..即使容器仍然没有启动,因为入口点. 10 秒后另一个容器 return 错误.. 因为更新已启动并且 docker 服务也认为容器已经启动。
So.. 有没有办法解决这个问题? 我是否应该进行一些 nginx 设置以断开与错误容器的连接并重新连接另一个容器?
HEALTHCHECK Dockerfile 命令适用于此用例。您指定 Docker 应如何检查容器是否可用,以及在更新期间使用它以及检查 Swarm 中的服务级别。
这里有一篇关于它的好文章:Reducing Deploy Risk With Docker’s New Health Check Instruction。