什么是高可用性?

介绍

随着用于服务关键系统的可靠和高性能基础设施的需求的增加,可扩展性和高可用性的术语不能更受欢迎。虽然处理系统负载增加是常见的问题,但减少停机时间和消除单个故障点同样重要。

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

高可用性是什么?

在计算中,可用性一词被用来描述服务可用的时间,以及系统对用户提出的请求作出响应所需的时间。

测量可用性

可用性通常被表达为指向特定系统或组件在特定时间段内预期可用时间的百分比,其中100%的值表示系统永远不会故障,例如,在一年的期间保证99%可用性的系统可以有高达3.65天停机时间(1%)。

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

高可用性是如何工作的?

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

高可用性什么时候重要?

在建立强大的生产系统时,最小化停机时间和服务中断往往是优先事项,无论您的系统和软件的可靠性如何,可能会出现问题,可能会导致您的应用程序或服务器失效

为您的基础设施实现高可用性是一个有用的策略,以减少这些类型的事件的影响。

什么使一个系统高度可用?

高可用性的一个目标是消除基础设施中的单个故障点。单个故障点是您的技术堆栈的一部分,如果它变得不可用,则会导致服务中断。因此,任何对您的应用程序的正常功能所需的任何组件都被认为是单个故障点

为了消除单个故障点,您的堆栈的每个层必须做好准备。例如,假设您有一个由负载平衡器背后的两个相同的多余Web服务器构成的基础设施。来自客户端的流量将平等分布在Web服务器之间,但如果其中一个服务器下降,负载平衡器将重定向所有流量到剩余的在线服务器。

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

*相同任务的多余组件处于位置 *这个层顶部的机制(负载平衡器)能够检测组件的故障并调整其行为以便及时恢复

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

在描述的情况下,这在现实生活中并不罕见,负荷平衡层本身仍然是一个单一的失败点,但消除剩余的单一失败点可能具有挑战性;尽管您可以轻松配置额外的负荷平衡器来实现冗余,但在负荷平衡器上没有一个显而易见的点来实现故障检测和恢复。

仅限性不能保证高可用性. 必须有一个机制来检测故障并采取行动,当您的堆栈中的一个组件变得不可用。

过剩系统的故障检测和恢复可以通过从顶部到底部的方法实现:顶部的层将负责监控下方的层,以检测故障。 在我们之前的示例场景中,负载平衡器是顶层。

Diagram 01: Load Balancers / Top-to-bottom

这种方法往往更简单,但它有局限性:你的基础设施中会有一个顶层不存在或无法达到的地方,就像负荷平衡层一样。

在这种情况下,必须采用分布式方法:多个多余节点必须作为一个群集连接在一起,每个节点都应该平等地能够检测和恢复故障。

Diagram 02: Cluster / Distributed

对于负载平衡器的情况,然而,还有一个额外的复杂性,由于名称服务器的工作方式。从负载平衡器故障中恢复通常意味着转移到冗余负载平衡器,这意味着必须进行 DNS 更改,以便将域名指向冗余负载平衡器的 IP 地址。

一个可能的解决方案是使用 DNS round-robin load balancing

一个更强大和可靠的解决方案是使用系统,允许灵活的 IP 地址重复,如 保留 IP. 按需 IP 地址重复消除传播和缓存问题 DNS 变化,通过提供一个静态的 IP 地址,可以很容易地重复在需要时。

这就是使用保留IP的高度可用基础设施的样子:

Diagram 03: Reserved IPs

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

要在实践中实现高可用性,需要仔细考虑的几个组件。 远远超过软件实现,高可用性取决于以下因素:

  • **环境:**如果您的所有服务器都位于同一个地理区域,地震或洪水等环境状况可能会导致整个系统崩溃。在不同的数据中心和地理区域中拥有多余的服务器将增加可靠性
  • **硬件:**高可用服务器应对包括硬盘和网络接口在内的电源中断和硬件故障具有抵抗力
  • **软件:**整个软件堆栈,包括操作系统和应用程序本身,必须为处理可能需要重新启动系统的意外故障做好准备(例如 _) **数据:**数据损失和不一致可能是由几个因素引起的,并且不限于硬盘故障。

哪些软件可以用来配置高可用性?

高度可用系统的每个层次在软件和配置方面都有不同的需求,但在应用层面,负载平衡器代表了创建任何高可用性设置的必不可少的软件。

HAProxy(高可用性代理)是负载平衡的常见选择,因为它可以处理多个层的负载平衡,以及包括 数据库服务器在内的不同类型的服务器。

在系统堆栈中移动时,对于您的应用程序输入点,通常是负载平衡器,很重要的是要实施一个可靠的冗余解决方案. 如前所述,要消除这个单一的故障点,我们需要在保留IP背后实施一组负载平衡器。

结论

高可用性是可靠性工程的一个重要子集,旨在确保系统或组件在一定时间内具有高水平的操作性能。

Published At
Categories with 技术
comments powered by Disqus