时间就是金钱,服务器停机时,用户肯定会损失利润,现代企业无法承受服务器停机,哪怕只有几分钟,因为这会对他们的竞争力产生负面影响。这就是为什么当今大多数服务器解决方案都基于容错系统。
容错集群是将多台服务器组合成一个组或集群的过程。如果其中一台服务器发生故障,其任务将重新分配给集群的其他部分。除了消除意外故障的威胁外,当您需要关闭其中一台服务器进行维护或其他例行工作时,故障转移系统也很有用。
在本文中,我们将讨论故障转移和容错,这将改善您将来的服务器操作。
什么是容错?
容错是指系统在一个或多个组件发生故障的情况下仍能继续运行的能力。容错系统使用冗余组件来确保系统始终持续运行。
对于任何对可靠性要求较高的系统,如银行系统或电信网络,容错都是必需的。通过使用某些技术,容错系统可以最大限度地降低停机和数据丢失的风险。
容错系统的主要原理
容错系统只有遵循某些原则才能确保高可用性和弹性,从而使关键系统能够继续运行并最大限度地减少停机时间。 遵循以下特定原则可以实现高水平的可靠性:
- 冗余。这指的是拥有多个关键组件(如服务器、存储设备和网络连接)实例。如果一个组件发生故障,冗余组件可以保持系统正常运行。
- 复制。这涉及将数据复制到多个位置。如果一份数据副本丢失,可以从另一份副本中恢复数据。
- 多样性。这是系统中使用不同类型的组件。例如,系统可能同时使用固态驱动器 (SSD) 和硬盘驱动器 (HDD)。如果 SSD 发生故障,系统可以继续使用 HDD。
由于所有这些特性,容错涉及复杂的系统,需要对系统的设计和内容采取综合的方法。
容错系统的类型
系统的容错既可以通过创建冗余服务器组件来实现,也可以通过创建可相互替换的服务器系统来实现。换句话说,根据冗余级别,有两种类型的容错系统:
- 服务器节点级冗余。这种类型的容错涉及在单个服务器节点内复制关键组件。例如,一个服务器节点可能有两个电源、两个网卡和两个硬盘。如果其中一个组件发生故障,服务器节点可以使用冗余组件继续运行。
- 服务器冗余。这种类型的容错使用多台服务器来创建容错集群。如果集群中的一个服务器节点发生故障,其他服务器节点可以接管其工作负载。
服务器节点级冗余比集群更便宜、更简单。但是,在服务器节点级提供容错能力可能比服务器冗余(集群)提供的可用性更低。应用程序或项目的最佳容错系统类型选择取决于具体要求。
容错与高可用性
高可用性和容错不是同一个概念。
高可用性是指无论原因如何,都旨在最大程度减少停机时间的系统设计。另一方面,容错系统即使发生一定数量的故障也能继续运行。
高可用性使用多个冗余元件和控制系统来激活和协调它们。而容错性则使用多个冗余元件和控制系统来使它们协同工作。
拥有容错系统并不一定意味着拥有高可用性系统,反之亦然。但是,高可用性和容错性可以很好地结合在一起,从而创建可靠的系统和服务。
什么是容错集群?
在容错系统中,多个节点协同工作以分担工作负载并执行任务。如果一个节点或组件发生故障,集群必须检测到故障并自动将故障节点的工作负载转移到其他正常运行的节点,以确保不间断运行。正是这种承受故障并从故障中恢复的能力使系统具有容错能力。
容错是通过硬件冗余、软件机制和系统架构相结合来实现的。这包括使用冗余硬件组件(如服务器、电源和网络连接)消除单点故障,以及使用软件技术(如负载平衡、数据复制和自动故障转移机制)在多个节点上分配和复制任务。
然而,即使您的武器库中有一个容错集群,您也不能忘记保护数据和整个基础设施的其他强制性技术。
容错和灾难恢复是两个密不可分的概念。当使用一组服务器时,保持服务中断后恢复运行的能力至关重要。
备份也是如此,对于数据来说,备份永远不是坏事。通过复制关键信息,您可以为自己提供安全缓冲,从而避免重新复制,甚至避免利润损失。
构建容错集群的基本方案
构建容错集群有许多基本方案,每个方案在应用程序复杂性和负载平衡方面有所不同:
- 主动/被动
所有计算都在主服务器上进行,主服务器发生故障时将激活副本服务器。这种配置成本高昂,因为每个节点都是副本。
- 主动/主动
断开连接的服务器的负载将分布在其他活动节点上,这些节点在软件和硬件方面必须相同。这比主动/被动集群提供了更高的可用性,但管理起来更复杂且成本更高。
- A+A
每个服务器节点都有自己的专用存储。这比传统的主动/主动集群提供了更高的可用性,但管理起来更复杂且成本更高。
- A+1
集群有一个主动服务器节点和一个被动服务器节点。主动服务器节点处理整个工作负载,而被动服务器节点用于故障转移。但是,被动服务器节点也可用于处理部分工作负载。当它完成任务时,它将恢复到待机状态。
- A+B
这是 A+1 集群方案的一种变体,其中被动服务器节点不用于故障转移。相反,它可以用于任何目的,例如运行批处理作业或提供额外容量。
值得注意的是,配置的选择取决于具体要求、可扩展性、预算限制和所需的容错水平。
构建容错集群需要什么?
要创建容错系统(集群),您将需要几个关键组件:
- 业绩盈余。
这意味着每个关键组件(例如服务器、存储设备和网络连接)都有多个副本。需要可用容量来将任务重新分配给其他服务器,并且在集群中,最大负载必须小于可用资源。例如,如果集群中有 12 台服务器,则负载不能超过其中 11 台服务器的运行容量。这允许在不损失容量的情况下重新分配断开连接的节点的任务。服务器性能监控仍然是一项重要任务。
- 每个节点共享数据访问。
如果没有这一点,就不可能组织一个容错集群;如果一台服务器发生故障,任务必须立即分配给其他服务器。同时,必须为数据库和最终用户提供完全相同(或备份)的通道。
- 软件合规性。
有必要在应用程序开发阶段尽早考虑在容错集群中使用应用程序的可能性。应用程序必须能够与通用的分布式数据存储一起工作,并在发生故障时的状态在另一个节点上重新启动,从而断开集群内的服务器。
- 负载均衡。
通过使用某种方法将工作负载分散到多个服务器或资源上,可以大大提高整个容错系统的性能和可靠性。在容错集群中,负载平衡是必要的,以确保没有服务器过载而发生故障。
- 水平扩展。
水平扩展可通过添加更多服务器或资源来增加系统容量。在容错集群中,可通过向集群添加更多节点来使用水平扩展来提高性能和可靠性。
我们将更多地讨论平衡和扩展,它们位于列表的最后,但与其他组件一样重要。
负载均衡
负载平衡可以与容错集群并行工作。使用大量服务器时,重要的是分配任务,以便所有节点的负载大致相等。否则,一些节点将超载,无法处理任务流,而其他节点将处于空闲状态。
静态负载平衡
静态负载平衡为容错集群中的每个服务器分配固定数量的请求,提供一种简单的负载平衡方法。
静态平衡算法:
- 循环平衡。使用域名系统 (DNS) 将流量一次分发到一台服务器。权威名称服务器会维护一个域的不同 A 记录列表,并针对每个 DNS 请求提供不同的记录。
- 加权轮换。管理员可以为每个服务器分配不同的权重。被认为能够处理更多流量的服务器会获得稍高的权重。权重可以在 DNS 记录中配置。
- IP 哈希。该算法将传入流量的源 IP 地址和目标 IP 地址组合起来,并使用数学函数将其转换为哈希值。根据哈希值,将连接分配给特定服务器。
静态平衡很容易实现,但如果工作负载没有在服务器之间均匀分布,则效率会很低。
动态负载平衡
动态负载平衡是一种更复杂的负载平衡方法,它考虑集群中每台服务器的当前负载并相应地分配请求。
动态负载平衡算法:
- 最少连接。此算法检查哪些服务器当前具有最少的连接并将流量路由到这些服务器。它假设所有连接都需要大致相同的处理能力。
- 加权最小连接。允许管理员为每台服务器分配不同的权重,假设某些服务器比其他服务器可以处理更多的连接。
- 加权响应时间。计算每台服务器的响应时间的平均值,并与每台服务器上的活动连接数相结合,以确定将流量引导到何处。通过将流量引导到响应时间最快的服务器,该算法可提供更快的用户体验。
- 基于资源。该算法根据每个服务器当前可用的资源来分配负载。
动态负载平衡比静态负载平衡更有效率,但实现起来也更复杂,在构建容错系统时应该考虑到这一点。
文件服务器的水平扩展
在处理打开或不断变化的文件时,部署容错集群会更加复杂。为了避免节点断开连接,使用水平可扩展的文件服务器 (SOFS,Scale-Out File Server)。如果发生故障,集群仍可保持完全正常运行。
SOFS 为应用程序和一般用途提供高可用性文件存储,尤其适合 Hyper-V 存储。可扩展文件节点允许您在多个集群节点之间共享同一个文件夹和文件。
SOFS 功能
文件共享是主动-主动的,这意味着集群中的所有节点都可以接受并满足客户端请求。
支持 SOFS 的文件共享的吞吐量或性能与添加到集群的节点数呈线性关系。您只需向集群添加节点即可提高吞吐量。
您无需创建多个具有单独集群磁盘的集群文件服务器,然后制定放置策略。只需创建 SOFS,然后添加 CSV 和文件共享即可。
然而,SOFS 并不适合所有工作负载。它最适合 Hyper-V 和 SQL 应用程序数据。共享文件 I/O 与普通的通用最终用户文件操作一样,不太适合同步写入 SOFS。
RAID 容错
RAID(独立磁盘冗余阵列)是一种使用多个磁盘来提高性能和可靠性的存储技术。RAID 系统可用于创建容错存储,可以承受一个或多个磁盘发生故障。
RAID 使用磁盘镜像和条带化技术。镜像将相同的数据复制到多个磁盘,而条带化则有助于将数据分散到多个磁盘上。
我们可以说容错 RAID 系统是服务器节点级别的一种冗余,因为它特定于存储系统。由于使用大量磁盘会增加系统故障之间的平均时间,因此冗余存储会增加容错能力。
虽然备份可以起到保险的作用但恢复起来需要很长时间,但是如果一个或多个磁盘出现故障,RAID 可以为您提供所需的数据,从而消除停机时间。
但这种系统也有缺点。由于阵列中几乎所有磁盘都是同时安装的,因此硬件的磨损是均匀的。因此,如果一个磁盘发生故障,其他磁盘很可能也会很快发生故障。与单磁盘存储系统相比,RAID 也是一种更昂贵的解决方案。然而,对于任何具有冗余资源的系统来说,成本都是一个问题。
容错系统中的性能和安全问题
尽管容错系统旨在发生故障时继续运行,但它们可能会对整体系统性能产生负面影响。冗余、故障检测和故障转移系统会增加资源成本,从而导致吞吐量降低。在这种情况下,必须仔细平衡容错和性能。
容错系统通常依赖复杂的软件算法和协议来检测和恢复故障。此外,容错系统中不同软件组件之间的交互可能导致复杂的故障排除过程。这不仅消耗软件和硬件资源,还消耗时间。
容错系统的性能和安全性受其设计复杂性的影响。例如,由于网络延迟和同步等因素,跨不同地理位置的多个数据中心的分布式系统中的容错变得更加复杂。
由于容错系统可使所有组件保持正常运行并确保其设计合理,因此它有助于防止安全漏洞。但是,这只适用于设计和维护合理的系统。攻击者可以快速禁用设计粗心的系统,从而让您损失金钱、客户和信任。
结论
通过构建容错系统,组织可以最大限度地减少停机时间,确保业务连续性,并为其用户或客户提供可靠的服务。容错对于任务关键型系统尤其重要,例如数据中心、云计算环境、金融机构、电信网络和其他业务连续性至关重要的应用程序。
现在您知道“容错”是什么意思了。为您的项目构建一个能够抵御中断和组件故障的服务器基础架构。只需从选择正确的服务器配置和位置开始。