在 Docker 集群模式下使用副本的主要优势是什么?
What's the main advantage of using replicas in Docker Swarm Mode?
我很难理解 replica
实例在 Docker 群模式中的概念。我读到这是一项有助于实现高可用性的功能。
但是,即使为服务定义了 1 replica
,如果一个节点出现故障,Docker 会自动在另一个节点上启动新任务,这也提供了高可用性。
那么对于任意服务使用 3 个 replica
实例而不是 1 个实例有什么好处?我的假设是,如果副本越多,Docker 在发生故障时在另一个节点上创建新实例的时间就会减少,这有助于提高性能。这是正确的吗?
What Makes a System Highly Available?
One of the goals of high availability is to eliminate single points of
failure in your infrastructure. A single point of failure is a
component of your technology stack that would cause a service
interruption if it became unavailable.
让我们以包含单个实例的副本为例。现在让我们假设有一个失败。 Docker Swarm 会注意到服务失败并重新启动它。服务重新启动,但重新启动不是即时的。假设重启需要 5 秒。在这 5 秒内,您的服务不可用。单点故障。
如果您有一个包含 3 个实例的副本会怎么样。现在,当其中一个失败时(没有服务是完美的),Docker Swarm 将注意到其中一个实例不可用并创建一个新实例。在那段时间里,您仍然有 2 个健康的实例服务于请求。对于您服务的用户来说,似乎没有停机时间。此组件不再是单点故障。
ROMANARMY 的回答非常好,我只是想提一下副本可以在不同的节点上,所以如果你的一台服务器出现故障(变得不可用),另一台服务器上的容器(副本)可以 运行没问题。
我很难理解 replica
实例在 Docker 群模式中的概念。我读到这是一项有助于实现高可用性的功能。
但是,即使为服务定义了 1 replica
,如果一个节点出现故障,Docker 会自动在另一个节点上启动新任务,这也提供了高可用性。
那么对于任意服务使用 3 个 replica
实例而不是 1 个实例有什么好处?我的假设是,如果副本越多,Docker 在发生故障时在另一个节点上创建新实例的时间就会减少,这有助于提高性能。这是正确的吗?
What Makes a System Highly Available?
One of the goals of high availability is to eliminate single points of failure in your infrastructure. A single point of failure is a component of your technology stack that would cause a service interruption if it became unavailable.
让我们以包含单个实例的副本为例。现在让我们假设有一个失败。 Docker Swarm 会注意到服务失败并重新启动它。服务重新启动,但重新启动不是即时的。假设重启需要 5 秒。在这 5 秒内,您的服务不可用。单点故障。
如果您有一个包含 3 个实例的副本会怎么样。现在,当其中一个失败时(没有服务是完美的),Docker Swarm 将注意到其中一个实例不可用并创建一个新实例。在那段时间里,您仍然有 2 个健康的实例服务于请求。对于您服务的用户来说,似乎没有停机时间。此组件不再是单点故障。
ROMANARMY 的回答非常好,我只是想提一下副本可以在不同的节点上,所以如果你的一台服务器出现故障(变得不可用),另一台服务器上的容器(副本)可以 运行没问题。