从高可用性角度理解docker swarm

从高可用性角度理解docker swarm,docker,high-availability,docker-swarm,Docker,High Availability,Docker Swarm,我目前正在尝试了解创建docker swarm以使某些服务高度可用所需的内容。我阅读了大量docker swarm文档,但若我的理解正确,docker swarm将只在任何主机上执行服务。如果主机出现故障,会发生什么情况?swarm manager是否会在另一台主机/节点上重新启动该主机/节点上运行的服务?对于这一点,有没有比原始文档更好的解释呢?没有比这更复杂的了。正如它所说,Swarm(和kubernetes,以及这个领域中的大多数其他工具)是声明性的,这意味着你告诉它你想要的状态(即“我想

我目前正在尝试了解创建docker swarm以使某些服务高度可用所需的内容。我阅读了大量docker swarm文档,但若我的理解正确,docker swarm将只在任何主机上执行服务。如果主机出现故障,会发生什么情况?swarm manager是否会在另一台主机/节点上重新启动该主机/节点上运行的服务?对于这一点,有没有比原始文档更好的解释呢?

没有比这更复杂的了。正如它所说,Swarm(和kubernetes,以及这个领域中的大多数其他工具)是声明性的,这意味着你告诉它你想要的状态(即“我想要4个redis实例”),Swarm将把系统聚合到该状态。如果您有3个节点,那么它将在节点1上调度1个redis,在节点2上调度1个redis,在节点3上调度2个redis。如果节点2死亡,则系统现在不符合您声明的状态,Swarm将在节点1或3上安排另一个redis(取决于策略等)

现在,容器/任务/实例调度的这种动态性带来了另一个问题,发现。Swarm通过维护内部DNS注册表和为每个服务创建VIP(虚拟IP)来解决这一问题。我不必寻址/跟踪每个redis实例,而是可以指向服务别名,Swarm将自动将流量路由到它需要去的地方

当然,还有其他考虑因素:

  • 您的服务能否支持多个后端实例?它是无国籍的吗?会议?隐藏物等等
  • 什么是“哈”?多节点?多AZ?多区域?等等