故障转移与高可用性之间有什么区别?

What is the difference between failover vs high availability?

根据我对 jboss 文档的阅读,它说,

We define high availability as the ability for the system to continue functioning after failure of one or more of the servers. A part of high availability is failover which we define as the ability for client connections to migrate from one server to another in event of server failure so client applications can continue to operate.

故障转移是高可用性的一部分吗?我们如何区分故障转移与高可用性?

高可用性

指的是服务器系统在某种程度上可以容忍故障。 大多数情况下,这是通过硬件冗余来完成的。假设一台机器有冗余电源,如果其中一个发生故障机器将保持 运行.

故障转移

然后你有应用程序冗余(故障转移),这通常是指多个硬件安装上的应用程序 运行 以一致的方式响应来自任何这些硬件安装的客户端的能力。这样,如果硬件确实完全失败,或者 O/S 在特定机器上死机,另一台机器可以继续。

SQL 服务器以四种方式处理应用程序冗余:

  • 聚类
  • 镜像
  • 复制
  • 日志传送

故障转移是实现高可用性 (HA) 的一种方式。将 HA 视为一项功能,将故障转移视为该功能的一种可能实现。实现 HA 时,故障转移并不总是唯一的考虑因素。

比如Cassandra通过复制实现HA,但是可用性的程度是由数据一致性设置决定的。本质上,这些设置决定了有多少节点需要响应一个操作(读取或写入)才能成功。需要更多节点响应意味着可用性降低,而需要更少节点意味着更高可用性。严格来说,这是与故障转移无关的 HA 示例。

高可用性(简称HA)是一个广义的术语,所以当我想到它时,我倾向于认为HA 集群.

来自Wikipedia High-availability cluster

High-availability clusters are groups of computers that support server applications that can be reliably utilized with a minimum amount of down-time. They operate by using high availability software to harness redundant computers in groups or clusters that provide continued service when system components fail. Without clustering, if a server running a particular application crashes, the application will be unavailable until the crashed server is fixed.

所以从上面的描述中得出的结论是,HA 集群将在故障转移期间为您提供最短的停机时间。让我解释一下 HA 集群可以为您提供的两种故障转移:

  1. Hot-Hot / Active-Active:冗余计算机真正并行运行,产生完全相同的状态和完全相同的输出。它们都是活跃的节点,作为彼此的完美镜像运行。在这种情况下,您的故障转移停机时间为零,您可以简单地从集群中的任何机器上拔下电源插头,而不会造成任何停机或服务中断。

  2. Hot-Warn / Active-Passive: 只有一台主计算机是主动的,而集群中的其他计算机都在被动重建相同的状态作为主要的。当主计算机出现故障时,它必须被禁用或终止(自动或由操作员),然后集群中的被动计算机需要被激活(自动或由操作员)。

那么问题是什么?问题在于,可以在 HA 集群中运行的应用程序设计起来并不简单,因为它们需要 真正的确定性有限状态机。 A classic problem is when your application needs to use the clock to build state 基于时间,因为时钟本质上是非常不确定的。

免责声明:我是 CoralSequencer 的开发者之一。