了解docker swarm的高可用性

时间:2017-06-08 16:30:36

标签: docker high-availability docker-swarm

我目前正在尝试了解创建docker swarm以使某些服务具有高可用性所需的内容。我阅读了很多docker swarm文档,但如果我的理解是正确的,docker swarm将只在任何主机上执行服务。如果主机出现故障会发生什么?群集管理器会重新启动另一个主机/节点上运行的服务吗?有没有比在原始文档here中找到更好的解释?

1 个答案:

答案 0 :(得分:2)

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

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

当然还有其他考虑因素:

  • 您的服务可以支持多个后端实例吗?它是无国籍的吗?会议?缓存?等...
  • 'HA'是什么?多节点?多AZ?多区域?等...