性能、可伸缩性和可靠性是所有企业应用程序的重要特性。尽管可通过多种方法来改善性能和可靠性,但是此模式群集强调如何将为任意数量的应用程序或用户提供服务的系统组合起来,以获得更好的可伸缩性和可用性。本章中的模式为有效地适应负载和高峰通信量的变化以及改善可用性奠定了基础。
满足运行要求
当今的企业应用程序必须满足不断增加的运行要求(包括提高可用性、改善性能以及能够在应用程序负载增加时满足这些要求)。这就要求应用程序和支持性基础结构的设计能够最大程度地实现可伸缩性和可用性。
可伸缩性
可伸缩性是指一个或多个系统在保持可接受的性能级别的同时能够处理不断增加的需求。为了有效地扩展某个系统,必须确定日益增加的需求的本质,并了解它对各个系统组件的影响。在确定限制性组件之后,可以向上扩展或向外扩展。
向上扩展
向上扩展策略是在单个服务器中提高资源(如处理器、内存或存储器)处理负载的能力。例如,可以通过增加处理器或内存的数量来向上扩展在多处理器操作系统之上建立的数据库群集。
向外扩展
向外扩展策略是通过增加服务器(从而增加这些服务器的整体容量)来增加基础结构级处理负载的能力。
可用性
可用性是指服务器、运行于服务器上的软件或应用程序的可测量运行时间,它依靠仔细的设计和运行原则,包括更改控制、严格测试以及快速升级和后备机制)。为了 实现最高级别的可用性,一定要在设计中找出所有故障单点。高可用的设计过程应该分析体系结构中的每个组件,以验证系统的整体性能不依赖于任何一个执行特定功能或提供对某块特定信息的访问的单一硬件或软件。
模式概述
该模式群集从Server Clustering(服务器群集)开始,它强调使用服务器群集来设计基础结构级以满足特定的可用性和可伸缩性要求。服务器群集是通过互连以形成统一虚拟计算资源的两台或更多台服务器。
服务器群集通过以下方式提高了系统的可用性:确保在一个服务器因故障或计划的关机而变得不可用时,群集中的另一个服务器可以负担工作负载,从而确保应用程序 仍对用户可用。群集还通过以下方式来增强可伸缩性:在维持当前性能级别的同时支持更多的用户,或者改善当前用户的应用程序性能。通过服务器群集来增强可伸 缩性的同时还可以增加服务器的冗余,从而有助于提高系统可用性,如上所述。
Server Clustering 模式强调群集是通用性设计技术,该技术将应用于另外两种设计模式:Load-Balanced Cluster (负载平衡群集)和Failover Cluster(故障转移群集)。图 1 显示了性能和可靠性模式群集。
图 1 性能和可靠性模式群集
Load-Balanced Cluster
Load-Balanced Cluster 模式解决如何通过设计和实现可伸缩的基础结构级来维护可接受的性能。此模式描述实现以下功能的常用方法:通过一组只读或应用程序服务器或这些服务器场来平衡传入的 Internet 协议 (IP) 通信量。
负载平衡功能将请求分布到服务器场(请参阅“Server Farm”)中的所有正常工作的服务器上,从而增强了包含 Web 服务器、流媒体服务器和虚拟专用网 (VPN) 服务器等服务器的基础结构级的性能、可用性和可伸缩性。当负载平衡群集中的某台服务器失败时,负载平衡服务器还通过将负载重新分布到其余服务器上来提供故障转移功能。
Failover Cluster
Failover Cluster 模式有助于设计高可用的应用程序基础结构级,以防在单台服务器出现故障或者以它为宿主的软件出现故障时丧失服务。此模式描述故障转移群集以及它们如何为读/写存储(如数据库、消息传递系统以及文件和打印服务)提供高可用性。
在故障转移群集中,如果某台服务器变得不可用,另一台服务器会接管其任务并继续为最终用户提供服务,该过程被称为故障转移。进行故障转移时,用户可以继续使用应用程序,并且不会意识到是另一台服务器在提供服务。
性能和可靠性模式
表 1 列出了性能和可靠性模式群集中的模式。这些模式的排列方式为较晚的模式构建在较早的模式之上。这意味着发展方向是从更一般的模式(如 Server Clustering)发展到更具体的模式(如 Failover Cluster)。