Java Enterprise System 部署的可用性策略包括以下各项:
负载平衡。使用冗余硬件和软件组件来分流处理负载。负载平衡器把对某个服务的任意请求引导至该服务的多个对称服务实例之一。如果任一实例发生故障,其他实例可以承担更大的负载。
故障转移。涉及对冗余硬件和软件的管理,在任何组件发生故障时提供对服务的不间断访问并保证关键数据的安全。
Sun Cluster 软件为后端组件管理的关键数据提供了故障转移解决方案,比如 Messaging Server 的消息存储和 Calendar Server 日历数据。
复制服务。复制服务为对同一数据的访问提供多个源。Directory Server 为 LDAP 目录访问提供多个复制和同步策略。
后续各节给出一些提供不同级别的负载平衡、故障转移和复制服务的可用性解决方案示例。
将服务的所有计算资源置于单个服务器上。如果服务器发生故障,整个服务便终止运行。
Sun 提供具有下列优点的高端服务器:
系统运行中更换和重新配置硬件组件
可在服务器的故障隔离域中运行多个应用程序
不必重新引导系统即可升级容量、执行速度及 I/O 配置
一台高端服务器的价格通常高于具有可比性的多服务器系统。不过,单个服务器可节省对数据中心多台服务器的管理、监视和驻扎成本。多服务器系统在负载平衡、故障转移和解除单个故障点方面的灵活性更强。
利用可提供负载平衡和故障转移两种功能的平行冗余服务器提高可用性的方法有若干种。下图显示的是组成一个 N+1 故障转移系统的两台复制服务器。其中一台服务器发生故障时,N+1 系统通过一个额外服务器继续提供 100% 容量。
上面水平冗余系统中每台服务器的计算能力都完全相同。一台服务器即可满足性能要求,另一台服务器作为备份服务器调入服务时,也可提供 100% 的性能。
N+1 故障转移设计的优点是,故障转移情况下仍可达到 100% 的性能。缺点是增加了硬件成本,而总体性能却未得到相应提升(因为一个服务器只在发生故障转移的情况下使用,平时备用)。
下图所显示的是这样一种系统:通过在两台服务器间分配性能负载来实现负载平衡和故障转移。
在上面水平冗余系统中所示的系统内,如果一台服务器发生故障,所有服务仍然可用,只不过性能只能达到完全性能的某一百分比。另一台服务器提供 6 CPU 计算能力,为要求的 10 CPU 的 60%。
这种设计的一个优点是,两台服务器均可用时有 2 个 CPU 的额外潜潜在容量。
下图显示的是,在多台服务器间分配负载来满足性能和负载平衡要求。
由于水平冗余系统所示的设计中有五台服务器,如果一台服务器发生故障,其余服务器可继续提供总计 8 个 CPU 的计算能力,达到 10 个 CPU 性能要求的 80%。如果在设计中增加一个具有 2 CPU 计算能力的服务器,实际得到的便是 N+1 设计。如果一台服务器发生故障,其余服务器可满足 100% 的性能要求。
这种设计具有下列优点:
单台服务器发生故障时的性能得到提升
即使不止一台服务器停机,仍然具有可用性
可轮换将服务器停机,以进行维护和升级
多台低端服务器的价格通常低于单台高端服务器
不过,增加服务器数量会使管理和维护成本大幅增加,还应考虑在数据中心驻扎服务器的成本。达到某一数量后,再增加服务器所得到的性能提升会越来越少。
对于要求高可用性(如四或五个九)的情况,可以考虑将 Sun Cluster 软件纳入可用性设计。群集系统是冗余服务器、存储器及其他网络资源相结合的产物。群集中的服务器彼此间不间断地通信,如果其中一台服务器脱机,群集中的其余设备会将该服务器隔离,并将故障节点上的任何应用程序或数据故障转移到另一节点。这一故障转移过程所需时间较短,几乎不用中断为系统用户提供的服务。
配置、管理和维护 Sun Cluster 软件需要额外的专用硬件和专门技能。