我很难理解Docker Swarm模式中replica
个实例的想法。我已经读过它是一个有助于提高可用性的功能。
但是,如果一个节点发生故障,即使为服务定义了1 replica
,Docker也会自动在另一个节点上启动新任务,这也提供了高可用性。
那么,对于任意服务,拥有3个replica
个实例而不是1的优势是什么?我的假设是,如果有更多副本,Docker会在发生故障时花费更少的时间在另一个节点上创建新实例,这有助于提高性能。这是对的吗?
答案 0 :(得分:6)
What Makes a System Highly Available?
高可用性的目标之一是消除单点 您的基础设施失败。单点故障是一个 技术堆栈中可能导致服务的组件 如果它不可用则中断。
让我们举一个由单个实例组成的副本示例。现在让我们假设失败了。 Docker Swarm会注意到服务失败并重新启动它。服务重新启动,但重启不是即时的。让我们说重启需要5秒钟。这5秒钟您的服务不可用。单点故障。
如果您的副本包含3个实例,该怎么办?现在,当其中一个失败(没有服务是完美的)时,Docker Swarm将注意到其中一个实例不可用并创建一个新实例。在此期间,您仍有2个健康实例提供请求。对于您的服务用户,似乎没有停机时间。该组件不再是单点故障。
答案 1 :(得分:0)
ROMANARMY的回答非常好,我只想提及这些副本可以位于不同的节点上,因此,如果您的一台服务器出现故障(变得不可用),则另一台服务器上的容器(副本)可以正常运行。