高可用架构是指有许多不同的组件、模块或服务协同工作以保持最佳性能,而与高峰时间负载无关。
从最纯粹的意义上说,该系统允许企业在给定的时间内连续工作而不会出现故障。许多企业甚至无法承受一分钟的停机时间。考虑到数据是许多企业的命脉,即使只是很短的停机时间也可能造成难以置信的高昂代价。
在某些现实生活场景中,生活可能取决于为高可用性而构建的数据库。当患者到达急诊室时,医疗专业人员需要即时访问他们的医疗健康记录,以了解最佳治疗决策。访问此信息的任何延迟都可能产生毁灭性的影响。
注意:高可用性通常以用户可以使用服务的时间百分比来衡量。根据 Microsoft Network Developer Glossary,要使服务器被认为是“高可用性”,它需要实现 99.999% 的网络正常运行时间。
什么是高可用性集群?
高可用性集群是一组主机,它们合并为一个系统以防止停机。如果高可用性集群中的一台服务器出现故障,一旦检测到故障,任务关键型应用程序就会立即转移到另一台服务器。
任何系统都无法避免故障,而高可用性集群可确保无论不可避免的故障如何都能保持最佳性能水平。因此,它们往往被用于最关键的应用程序、网站和事务处理系统。
高可用性集群如何工作?
高可用性集群将利用已集成的多个系统,因此如果故障导致一个系统发生故障,则可以有效地利用另一个系统来维持正在使用的服务或应用程序的连续性。
高可用负载均衡集群在防止系统故障方面起着至关重要的作用。拥有一个负载均衡器实质上是在为同一网站或应用程序用户提供服务的不同 Web 节点之间分配流量。这减少了任何一台服务器的压力,允许每个集群更优化地工作,同时只允许将流量发送到健康的服务器。
高可用性集群概念
主动-被动集群
主动/被动集群由至少两个节点组成。顾名思义,并非所有节点都处于活动状态。如果一个节点处于活动状态,则第二个节点是只读的备用。被动服务器充当备份,如果主动服务器无法工作,将使用它。
双活集群
这种类型的集群通常使用至少两个同时执行相同服务的节点。在主动-主动集群中,两个节点都充当主节点,这意味着可以接受读取或写入。如果一个节点发生故障,用户将自动连接到另一个节点以确保服务的连续性。一旦第一个节点被替换,用户将在两个原始节点之间拆分。
主动/主动集群的首要好处是它允许您实现节点-网络平衡。如果检测到服务器故障实例,负载平衡器会将用户请求传输到随时可用的服务器,然后分析节点网络活动。然后,负载均衡器会将流量推送到能够为该流量提供服务的节点,从而实现更高级别的容错
该策略遵循循环过程,类似于循环模型,其中用户随机分布在可用节点中,或者相反,可能会遵循加权方案,其中一个节点基于百分比优先于另一个节点。
无共享与共享磁盘集群
分布式计算遵循的一般规则是不惜一切代价避免单点故障。这需要主动复制或替换资源,而不会在整个服务出现故障时中断任何因素。
想象一下,如果您有 50 个运行节点,由一个数据库提供支持。如果一个节点发生故障,它不会影响其他节点的持久状态,与运行节点的数量无关。
但是如果数据库出现故障,整个集群就会宕机,使数据库成为单点故障?这称为共享磁盘集群。
另一方面,如果每个节点都维护其数据库,则节点故障不会影响整个集群。这被称为无共享集群。
注意: 如果您想了解有关高可用性集群技术的更多信息,可以看此网络研讨会。凭借在软件行业 20 多年的经验,George Carbonnel 将解开您需要了解的所有内容,了解使用 Redis Enterprise 的集群技术如何提供高性能和高可用性。
高可用架构的要求
为了最大限度地提高持久性和高可用性,您需要满足许多不同的要求。这些包括:
负载均衡
负载平衡对于任何高可用架构都至关重要。它的主要功能是在后端服务器之间分配流量,以更有效地传输数据并防止服务器过载。任何负载平衡系统的先决条件是确定当出现节点故障时应执行的故障转移过程。
数据可扩展性
所有高可用性架构都必须考虑扩展数据库或磁盘存储单元的能力。您可以选择两种解决方案来实现可扩展性:
- 利用架构的主数据库并使用复制或分区使其具有高可用性;或者
- 确保各个应用程序实例能够维护自己的数据存储
地理多样性
我们生活在一个快节奏的数字世界中,现在必须能够在全球范围内分发高可用性集群。这样做将确保如果自然灾害袭击一个地点,所造成的影响不会妨碍他们提供服务的能力。
备份与恢复(灾难恢复)
尽管具有一致性,但高可用性架构总是容易受到某种可能中断服务的故障的影响。因此,如果一项服务出现故障,企业必须有一个可用的恢复策略,以使整个系统尽快重新运行。
这通常被称为灾难恢复——一组旨在在发生破坏性事件时使服务恢复完整功能的策略和程序。
如何衡量高可用性
高可用性通常以服务对用户可用的时间百分比来衡量。这是通过将总正常运行时间除以系统周期来完成的,然后将其乘以 100 得到一个百分比。根据 Microsoft Network Developer Glossary,要使服务器被认为是“高可用性”,它需要实现 99.999% 的网络正常运行时间。
可用性百分比通常被称为数字中的九位数。因此,四个 9 将是 99.99%。
注意: 99.99% 的可用性被认为是行业标准。
高可用性的最佳实践
您可以采取许多步骤来最大限度地提高高可用性,范围从您必须检查的组件数量到更换故障服务器。以下是一些可用于实现高可用性的实践。
实现地理冗余
地理冗余是抵御可能导致服务失败的自然灾害爆发的重要防线。这种做法涉及在不同的地理位置部署大量服务器,从而分散风险并允许架构在自然灾害袭击一个地区时回退到不同的服务器上。
注意: 您可以使用具有Active-Active Geo-Distribution的数据库轻松实现此目的。
使用故障转移解决方案
高可用性架构通常涉及许多提供故障转移功能的松散耦合服务器。故障转移被视为一种备份操作模式,当主系统的功能出现故障时会自动使用该模式。
实施负载均衡器
如前所述,负载均衡器会将传入流量分散到不同的服务器上,以降低任何停机的风险。请务必配置您的负载均衡器,以利用根据您的需求量身定制的算法来全面优化此解决方案。
确保您的数据同步符合您的恢复点目标 (RPO)
RPO 是您在不损害组织的情况下可以丢失的最大数据量的标志。这突出了您的业务作为一个整体的数据丢失容限,并且往往以时间单位来衡量,例如 1 分钟或 1 天。
将您的 RPO 设置为小于或等于 60 秒将帮助您保持最大可用性。这样做将确保如果出现主源故障,您不会丢失超过 60 秒的数据。
Redis 在高可用架构中的作用
Redis Enterprise 是一个强大的解决方案,适用于任何希望实现最大可用性的大型公司。它是一个实时数据平台,可确保五个九的可用性,提供卓越的自动化数据库弹性,同时降低硬件故障和云中断风险。
Redis Enterprise 满足最关键的企业应用程序的高可用性需求。它提供了业界领先的功能,通过以下方式提供99.999% 的可用性:主动-主动地理分布、自动故障转移、智能集群、无共享架构和全球分布。
如果想详细了解如何实现高可用性?可以观看我们的技术讲座网络研讨会-
“Redis Enterprise 的高可用性”。
原文标题:What is high availability architecture?
原文作者:John Noonan
原文地址:https://redis.com/blog/high-availability-architecture/