什么是高可用性?

随着旨在满足关键系统可靠性和高性能的基础设施需求的增加,该条款可扩展性和高可用性,不能更受欢迎。在处理增加系统负荷普遍关注的问题,减少停机时间并消除单...

介绍

随着对设计用于关键系统的可靠且性能基础设施的需求的增加,术语可扩展性和高可用性不再受欢迎。 虽然处理增加的系统负载是一个常见的问题,减少停机时间和消除单点故障同样重要。 高可用性是大规模基础设施设计的质量,可以解决这些后面的考虑。

在本指南中,我们将讨论什么是高可用性意味着什么和如何可以提高您的基础设施的可靠性。

什么是高可用性?

在计算中,术语可用性用于描述服务可用时的时间段,以及系统响应用户做出的请求所需的时间。 高可用性是在给定时间段内确保高水平的操作性能的系统或组件的质量。

测量可用性

可用性通常表示为指示在给定时间段内从特定系统或组件预期多少正常运行时间的百分比,其中100%的值将指示系统从不故障。 例如,在一年内保证99%的可用性的系统可以具有高达3.65天的停机时间(1%)。

这些值是基于几个因素计算的,包括计划和非计划维护周期,以及从可能的系统故障中恢复的时间。

高可用性如何工作?

高可用性作为基础设施的故障响应机制。 它的工作方式在概念上相当简单,但通常需要一些专门的软件和配置。

什么时候高可用性重要?

当设置稳健的生产系统时,最小化停机时间和服务中断通常是一个高优先级。 无论您的系统和软件如何可靠,都会发生可能会导致应用程序或服务器崩溃的问题。
<unk>
为您的基础设施实施高可用性是一个有用的策略,以减少这些类型的事件的影响。 高可用性系统可以从服务器或组件故障自动恢复。

什么使系统高度可用?

高可用性的目标之一是消除基础架构中的单点故障。 单点故障是您的技术的一个组件,如果它不可用,将导致服务中断。 因此,对于没有冗余的应用程序的正确功能必需的任何组件都被视为单点故障。
<unk>
为了消除单点故障,您的的每一层都必须准备冗余。 例如,假设您有一个基础结构,包括负载均衡器后面的两个完全相同的冗余Web服务器。 来自客户端的流量将平均分布在Web服务器之间,但如果其中一个服务器发生故障,负载平衡器将所有流量重定向到剩余的联机服务器。

在这种情况下,Web服务器层不是单点故障,因为:

  • 用于相同任务的冗余组件就位
  • 在该层之上的机制(负载平衡器)能够检测组件中的故障并且适应其行为以及时恢复

但是,如果负载均衡器离线会发生什么?

利用所描述的情况,这在现实生活中并不罕见,负载均衡层本身保持单个故障点。 然而,消除这个剩余的单点故障可能是具有挑战性的; 即使您可以轻松配置额外的负载平衡器来实现冗余,但是在负载平衡器之上没有明显的点来实现故障检测和恢复。

冗余不能保证高可用性。 必须有一个机制来检测故障并在的某个组件不可用时采取行动。

冗余系统的故障检测和恢复可以使用从上到下的方法实现:顶部的层负责监视紧接在其下的层,以用于故障。 在我们前面的示例场景中,负载均衡器是顶层。 如果其中一个Web服务器(底层)不可用,负载均衡器将停止重定向该特定服务器的请求。

图01:负载平衡器/从上到下

这种方法往往更简单,但它有局限性:在您的基础架构中有一个顶点是不存在或不可达,这是负载均衡器层的情况。 在外部服务器中为负载均衡器创建故障检测服务将简单地创建新的单点故障。

对于这种情况,需要分布式方法。 多个冗余节点必须连接在一起作为一个集群,每个节点应该同样能够进行故障检测和恢复。

图02:集群/分布式

对于负载均衡器情况,由于Nameservers工作方式,还有一个额外的复杂性。 从负载平衡器故障中恢复通常意味着故障切换到冗余负载平衡器,这意味着必须进行DNS更改,以便将域名指向冗余负载平衡器的IP地址。 这样的更改可能需要大量的时间才能在Internet上传播,这将导致系统严重停机。

一个可能的解决方案是使用DNS轮循负载平衡 然而,这种方法是不可靠的,因为它离开故障转移的客户端应用程序。

更健壮和可靠的解决办法是使用,其允许灵活的IP地址重映射系统,如浮动IP地址 按需IP地址重映射通过提供静态IP地址,可以在需要时轻松重新映射,从而消除DNS变更中固有的传播和缓存问题。 域名可以保持与相同的IP地址关联,而IP地址本身在服务器之间移动。

这是使用浮动IP的高可用性基础设施的外观:

图03:浮动IP

高可用性需要哪些系统组件?

为了在实践中实现高可用性,必须仔细考虑几个组件。 不仅仅是软件实现,高可用性取决于以下因素:

  • 环境:如果所有的服务器都位于同一地区,环境条件,如地震或洪水可能需要你的整个系统瘫痪。 在不同的数据中心和地理区域中拥有冗余服务器将提高可靠性。
  • 设备:高可用性服务器应该是弹性的停电和硬件故障,包括硬盘和网络接口。
  • 软件:整个软件栈,包括操作系统和应用程序本身,必须处理意外故障可能潜在需要重新启动系统,例如制备。
  • 数据:数据丢失和不一致可以由多种因素造成的,并且它不局限于硬盘故障。 高可用性系统必须考虑到发生故障时的数据安全。
  • 网络:计划外的网络中断故障表现为高可用性系统的另一个可能的点。 重要的是,为可能的故障设置冗余网络策略。

什么软件可用于配置高可用性?

高度可用的系统的每一层将在软件和配置方面具有不同的需求。 然而,在应用程序级别,负载均衡器是创建任何高可用性设置的必要软件。

HAProxy的 (高可用性代理)是用于负载平衡的共同选择,因为它可以处理负荷在多个层平衡,并针对不同类型的服务器,包括数据库服务器

在系统中向上移动,为应用程序入口点(通常为负载均衡器)实施可靠的冗余解决方案很重要。 要消除这个单点故障,如前所述,我们需要在浮动IP后面实现一组负载平衡器。 Corosync和Pacemaker是创建这样的设置,无论在普遍的选择的UbuntuCentOS的服务器。

结论

高可用性是可靠性工程的一个重要子集,重点是确保系统或组件在给定时间段内具有高水平的操作性能。 乍一看,其实施似乎相当复杂; 然而,它可以为需要增加可靠性的系统带来巨大的好处。