Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

时间:2021-11-26 03:19:59

故障是在所难免的,容器可能崩溃,Docker Host 可能宕机,不过幸运的是,Swarm 已经内置了 failover 策略。

创建 service 的时候,我们没有告诉 swarm 发生故障时该如何处理,只是说明了我们期望的状态(比如运行3个副本),swarm 会尽最大的努力达成这个期望状态,无论发生什么状况。

以上一节我们部署的 Service 为例,当前 3 个副本分布在 swarm-worker1 和 swarm-worker2 上。

Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

现在我们测试 swarm 的 failover 特性,关闭 swarm-worker1。

Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

Swarm 会检测到 swarm-worker1 的故障,并标记为 Down。

Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

Swarm 会将 swarm-worker1 上的副本调度到其他可用节点。我们可以通过 docker service ps 观察这个 failover 过程。

Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

可以看到,web_server.1 和 web_server.2 已经从 swarm-worker1 迁移到了 swarm-worker2,之前运行在故障节点 swarm-worker1 上的副本状态被标记为 Shutdown

Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

Service 的 failover 就讨论到这里,下一节我们学习如何访问 Service。

Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)书籍:

1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)