理解Docker Swarm的高可用性特点

3

我目前正尝试理解创建Docker Swarm以使某些服务高度可用所需的内容。我阅读了大量的Docker Swarm文档,但如果我的理解是正确的,Docker Swarm只会在任何主机上执行服务。如果一个主机失败了会发生什么?Swarm Manager会在另一个上重新启动运行在该主机/节点上的服务吗?有没有比这里原始文档中更好的解释?

1个回答

2
没有比这更复杂的了。正如所说,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将自动路由流量到需要去的地方。
当然还有其他考虑因素:
- 您的服务是否支持多个后端实例?它是否无状态?会话?缓存?等… - 什么是“HA”?多节点?多AZ?多区域?等…

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接