有没有办法在docker swarm中运行备用服务?

时间:2019-12-05 09:10:11

标签: docker docker-compose load-balancing docker-swarm

我有一个带有典型Web应用程序堆栈(nginx和php)的docker swarm设置。我需要Redis作为docker swarm中的一项服务。群有2个节点,每个节点都应具有Web堆栈和Redis服务。但是一次只能有一个Redis容器处于活动状态(并且能够与每个Web堆栈进行通信),另一个容器必须在那里并且处于待机模式,以便在第一个Redis失败时可以快速切换。

1 个答案:

答案 0 :(得分:0)

使用docker swarm时,拥有备份,备用容器将被视为反模式。建议使用swarm部署可靠容器的方法是将Dockerfile作为HEALTHCHECK命令的一部分。您可以设置一个特定的时间间隔,在此间隔后healthcheck命令将生效,以使您的容器能够预热。

现在,使用HEALTHCHECK始终保持指定数量的容器的事实来支持docker-swarm功能。如果您的healthcheck脚本变成unhealthy,则抛出退出代码1。一旦群检测到退出代码1,它就会杀死该容器并保持容器的数量,然后旋转一个新容器。

整个过程仅需几毫秒,即可无缝运行。有多个容器,以防预热时间长。如果其中一个容器发生故障,这将防止您的服务不可用。

healthcheck命令的示例:

HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
相关问题