X

News, tips, partners, and perspectives for the Oracle Solaris operating system

使用 Solaris Cluster 提高 Sun Java System Application Server 的可用性

Guest Author

简介

Sun Java System Application Server 是在市场中处于领先地位的中间件产品之一,它具有强健的体系结构,具备良好的稳定性和易用性。Application Server 本身的设计中就带有一些高可用性 (high availability, HA) 功能,其形式为分布在多个节点上以避免发生单点故障 (single point of failure, SPoF) 的节点代理 (node agent, NA)。以下是有关此设计方案的简单示意图:




不过,从以上结构图中可以看出,域管理服务器 (Domain Administration Server, DAS) 并不具备高可用性。如果 DAS 中断,便无法完成管理任务。尽管在某个实例或 NA 发生故障或不可用时将客户机连接重定向至该群集的其他实例,但是最好应使用自动恢复功能来降低该群集中其余实例的负载。在一些关键的部署中,还需要考虑硬件、OS 和网络故障问题,此时正常运行时间是主要的考虑因素之一。 

为什么需要高可用性解决方案?

需要使用高可用性解决方案来处理一些故障(包括网络、硬件、操作系统故障和由人为错误导致的故障),出现此类故障时,Application Server 或任何用户级应用程序无法恢复至正常状态。除此之外,还有其他一些情况需要使用高可用性解决方案,例如,即使在进行 OS 或硬件的升级和/或维护操作时,仍需持续提供服务。

除了可以处理故障外,高可用性解决方案还有助于在部署中充分利用其他操作系统功能,如网络级负载分配、连接故障检测和虚拟化等。

如何确定最好的解决方案?

当客户意识到高可用性解决方案能够为他们的部署提供更好的支持时,他们需要确定具体选用市场中的哪种解决方案。回答以下问题将有助于客户做出决定:

这种解决方案是否十分成熟且非常强健?

供应商是否提供专为 Sun Java System Application Server 而设计的代理?

这种解决方案是否非常容易使用和部署?

这种解决方案是否具有很高的成本效益?

是否是一套完整的解决方案?是否能够为 Message Queue 等相关组件提供
高可用性?

另外,尤为重要的一点是,是否能够提供非常完善的技术支持(包括完整的文档、优质的客户服务和单一支持点)?

为什么选择 Solaris Cluster?

Solaris Cluster 是目前 Solaris 平台最好的高可用性解决方案。它与 Solaris 操作系统完美集成,可帮助用户在不修改其部署的情况下充分利用 Solaris 中引入的新功能。Solaris Cluster 支持在容器中运行应用程序,可让您更好地选择可用文件系统和处理器体系结构等。以下是一些主要优点:

内核级集成可充分利用 Solaris 功能,如容器、ZFS、FMA 等。

多种代理组合可支持市场上广泛使用的应用程序。

具有非常强健而快速的故障检测机制,即使负载很高时也具备良好的稳定性。

基于 IPMP 的网络故障检测和负载平衡。

同一个代理可用于 Sun Java Application Server 和 Glassfish。

可利用数据服务配置向导执行大多数常见的 Solaris Cluster 任务。

先进的隔离机制可避免数据损坏。

可通过监视磁盘路径来检测是否因断开连接而无法访问存储。

Solaris Cluster 如何提供高可用性?

Solaris Cluster 通过使用冗余组件提供高可用性。存储、服务器和网卡都是冗余的。下图说明了一个简单的双节点群集,该群集具有推荐的冗余互连,每个节点和每个公共网络接口都可访问存储。需要引起注意的是,这是推荐的配置,最低配置只需要一个共享存储、互连和公共网络接口。根据具体需要,Solaris Cluster 甚至还可以灵活地支持单节点群集。

LH = 逻辑主机名,用于在 NIC 之间移动 IP 地址的虚拟 IP 类型。

RAID = 适用的任何基于软件或硬件且可提供冗余和高性能的 RAID 机制。

可选择只为 DAS 单独提供高可用性,也可选择为节点代理提供高可用性。需要根据环境做出选择。对于高可用性部署而言,不必担心节点代理的可伸缩性,因为可将多个节点代理部署到单个 Solaris Cluster 安装中。这些节点代理是在多个资源组中配置的,其中每个资源组拥有一个逻辑主机、HAStoragePlus 和代理节点资源。在常规部署中,由于节点代理分布在多个节点上,因此不需要使用任何附加硬件,这是因为采用了高可用性体系结构。可通过基于软件或基于硬件的 RAID 来实现存储冗余。

发生故障时 Solaris Cluster 的故障转移步骤

Solaris Cluster 提供了一套先进的算法,用于确定是要重新启动应用程序还是要故障转移到冗余节点。通常,IP 地址、应用程序二进制文件和数据所在的文件系统以及应用程序资源本身会组成一个逻辑实体,称为资源组 (resource group, RG)。顾名思义,IP 地址、文件系统和应用程序本身都是资源,它们中的每一个分别由一个资源类型 (resource type, RT) 来标识,通常称为代理。恢复机制(即重新启动或故障转移到另一个节点)由超时、重新启动次数和故障转移历史记录综合决定。代理通常包含启动、停止和检验方法,这些方法在每次应用程序变更状态时用于启动、停止和检验先决条件。此外,还包含一种探测程序,将在预定的时间段内执行该探测程序,以确定应用程序的可用性。

Solaris Cluster 提供两种适用于 Sun Java System Application Server 的 RT 或代理。其中资源类型 SUNW.jsas 用于 DAS,而 SUNW.jsas_na 用于节点代理。探测机制涉及执行 "asadmin list-domain" 和 "asadmin list-node-agents" 命令,并对输出进行解释以确定 DAS 和节点代理是否处于理想的状态。如���发生故障转移,Application Server 软件、文件系统和 IP 地址会移至冗余节点。有关更多详细信息,请参阅 Sun Cluster 数据服务指南 (http://docs.sun.com/app/docs/doc/817-6398)。

以下是说明当服务器崩溃时如何进行故障转移的简单示意图。
 

在上面提到的设置中,如果只是其中的一个 NIC 出现故障,
Application Server 则不会故障转移到第二个节点。属于同一个 IPMP 组的冗余 NIC 托管着 DAS 和 NA 使用的逻辑主机。将会出现临时网络延迟,直到将逻辑主机从 nic1 移到 nic2 为止。

推荐在 Application Server 部署中使用全局文件系统 (Global File System, GFS),因为在安装了配置文件和二进制文件(注:在一些特定部署中会安装二进制文件)的文件系统上,除了日志之外,写入活动很少。因为 GFS 始终挂载在所有节点上,这样一来,当节点崩溃或出现其他类似问题时,可以缩短故障转移时间并快速启动 Application Server。

维护与升级

在维护与升级期间,可利用使 Solaris Cluster 实现故障恢复功能的相同机制来提供持续的服务。 

在任何有计划的 OS 维护或升级期间,RG 将会切换到冗余节点,而且需要维护的节点将重新引导至非群集模式。执行规定的操作后,节点会重新引导至群集。群集中的其余节点均可重复相同的步骤。

Application Server 的维护或升级取决于二进制文件、数据以及配置文件的存储方式。 

1.) 将二进制文件存储在节点的内部硬盘中,将与域和节点代理相关的文件存储在共享存储中。这种方法对于需要频繁更新的环境来说是最佳的选择。缺点在于,由于修补程序或升级程序中存在的种种差异,应用程序二进制文件可能出现不一致。

2.) 将二进制文件和数据都存储在共享存储中。这种方法可以始终提供一致的数据,但很难在不停止服务的情况下进行升级和维护。

需要考虑组织中所采用的步骤和过程来做出选择。

其他功能

Solaris Cluster 还提供了利用“关联 (affinity)”概念来提供协同定位服务的功能。例如,可在生产环境被切换到某个节点时使用负关联来撤离测试环境,或使用正关联将 Application Server 资源移到托管数据库服务器的那个节点上以提供更好的性能等。

Solaris Cluster 具有一个非常直观、易用的 GUI 管理工具,称为 Sun Cluster Manager,可利用该工具来执行大多数管理任务。

Solaris Cluster 具有一种内置的遥测功能,可用于监视 CPU、内存等资源的使用情况。


Sun Java Application Server 不需要进行任何修改就可使用 Solaris Cluster,由于该代理本身就是基于此情况设计的。

相同的代理也可用于 Glassfish。

使用 Sun Java Message Queue 代理的 HA 也可使 Message Queue Broker 具有高可用性。

根据 Sun 一贯秉承的理念,正在逐步开展该产品的源代码开放工作,现已在 CDDL 许可下提供了可用的代理。

基于同一个代码库的开放源代码产品已出现在 OpenSolaris 发行版中,称为 Open High Availability Cluster。有关该产品和社区的更多详细信息,请访问 http://www.opensolaris.org/os/communities/ohac。

该开放源代码产品还具有一个综合的测试套件,可顺利地帮助用户全面测试他们的部署。有关更多详细信息,请参阅 http://opensolaris.org/os/community/ha-clusters/ohac/Documentation/Tests/


总结

对业务关键型环境来说,可用性(即在发生各种故障时依然可以提供服务的能力)是一项非常重要的指标。Solaris Cluster 凭借与 Solaris OS 的完美集成、良好的稳定性以及专为 Sun Java System Application Server 设计的代理而成为可为 Application Server 提供高可用性的最佳选择。
 

Madhan Kumar
Solaris Cluster 工程设计部门

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.