本章介绍在使用 Sun Cluster 系统之前需要了解的与 Sun Cluster 系统的硬件和软件组件相关的主要概念。
本章包含以下几节:
群集节点是运行 Solaris 软件和 Sun Cluster 软件的计算机。 Sun Cluster 软件使群集中可以具有二到八个节点。
群集节点通常与一个或多个磁盘相连。 未连接到磁盘的节点使用群集文件系统来访问多主机磁盘。 在并行数据库配置中,所有的节点共享对某些或全部磁盘的并行访问。
群集中的每一节点都会知道另一节点的加入或离开。 此外,群集中的每一节点还都会知道本地运行的资源和在其它群集节点上运行的资源。
同一群集中的节点应具备相似的处理能力、内存和 I/O 容量,以便能够在性能不显著下降的情况下实现故障切换。 由于可能发生故障切换,每个节点都应具有足够的能力在其它节点发生故障时达到服务水平约定。
群集互连是对用于在群集节点间传送群集专用通信和数据服务通信的设备进行物理配置。
当系统管理员隔离故障并检修通信时,冗余互连使得操作可以通过仍存在的互连继续进行。 Sun Cluster 软件检测、检修通信并通过检修过的互连自动重新启动通信。
有关详细信息,请参阅群集互连。
群集成员监视器 (CMM) 是一组分布式代理,这些代理通过群集互连交换消息来完成以下任务:
使所有节点上具有一致的成员视图(仲裁)
驱动同步重新配置以响应成员更改
处理群集分区
在出现故障的节点没有检修好之前,将其放置在群集之外,从而确保所有群集成员之间具有完全的连通性
CMM 的主要功能是建立群集成员关系,这需要在随时加入群集的节点之间达成群集范围的协议。 CMM 检测每个节点上的重要群集状态更改,例如,一个或多个节点之间的通信中断。 CMM 依赖传输内核模块生成传输到群集中其它节点的传输介质所需的心跳。 如果 CMM 在定义的超时范围内未检测到某个节点的心跳,CMM 就认为该节点出现了故障,并启动群集重新配置以重新确定群集成员。
说明群集成员的更改,如某个节点加入或离开群集
确保出现故障的节点离开群集
确保出现故障的节点在检修好之前处于非活动状态
防止群集将自身划分为一些节点子集
有关群集如何防止将自身划分为多个独立群集的详细信息,请参阅数据完整性。
群集配置系统信息库 (CCR) 是适用于群集范围的分布式专用数据库,用于保存与群集的配置和状态有关的信息。 要避免破坏配置数据,每个节点必须知道群集资源的当前状态。 CCR 可确保所有节点看到的群集都一样。 当出现错误或进行恢复时,或当该群集的一般状态更改时,CCR 被更新。
群集和节点名称
群集传输配置
Solaris Volume Manager 磁盘集或 VERITAS 磁盘组的名称
可以控制每个磁盘组的节点的列表
数据服务的有效参数值
数据服务回叫方法的路径
DID 设备配置
当前群集状态
通过监视应用程序本身、文件系统和网络接口,Sun Cluster 系统使用户和数据之间的“路径”上的所有组件高度可用。
Sun Cluster 软件快速检测节点故障,并为出现故障的节点上的资源创建等效的服务器。 Sun Cluster 软件确保未受出现故障的节点影响的资源在恢复期间一直可用,出现故障的节点的资源在恢复后立即可用。
每个 Sun Cluster 数据服务都具有一个故障监视器,该监视器定期探测数据服务以确定其运行情况是否良好。 缺省监视器检验应用程序守护程序是否正在运行以及客户机是否正在接受服务。 根据探测返回的信息,启动预定义的操作(例如,重新启动守护程序或进行故障切换)。
Sun Cluster 软件支持磁盘路径监视 (DPM)。 通过报告辅助磁盘路径出现的故障,DPM 改善了故障切换和转移的整体可靠性。 监视磁盘路径有两种方法。 第一种方法由 scdpm 命令提供。 使用此命令,您可以监视、取消监视或显示群集中磁盘路径的状态。 有关命令行选项的详细信息,请参阅 scdpm(1M) 手册页。
监视群集中磁盘路径的第二种方法由 SunPlex Manager 图形用户界面 (GUI) 提供。 SunPlex Manager 提供了监视的磁盘路径的拓扑视图。 该视图每 10 分钟更新一次,以提供有关失败的强制回应数目的信息。
每个群集节点有自己的 IP network multipathing 配置,不同的群集节点,IP network multipathing配置可以不同。 IP network multipathing监视以下网络通信故障:
网络适配器的传送和接收路径已停止传送包。
网络适配器与链路的连接断开。
交换机上的端口不传送、接收包。
系统引导时某个组中的物理接口不可用。
仲裁设备是被两个或多个节点共享的磁盘,该设备进行投票来仲裁是否运行群集。 只有达到了仲裁票数,群集才能运行。 当群集分成若干单独的节点组时,仲裁设备用来确定哪些节点组构成新的群集。
群集节点和仲裁设备都会投票以形成仲裁。 缺省情形下,群集节点在引导并成为群集成员时,其仲裁投票计数为一。 当正在安装节点时,或当管理员将节点置于维护状态时,节点的投票计数可以是零。
仲裁设备获取仲裁投票计数,该票数基于设备连接的节点数。 当设置仲裁设备时,设备获取一个最大投票计数 N-1,其中 N 是仲裁设备的连接票数。 例如,连接到两个投票计数非零的节点的仲裁设备的仲裁投票计数为一(二减一)。
Sun Cluster 系统试图防止数据被破坏并确保数据完整性。 因为群集节点共享数据和资源,所以决不能将群集分割成同时处于活动状态的多个独立分区。 CMM 确保在任何时候仅有一个群集有效。
群集分区会引起两种类型的问题: 群集分割和失忆。 当节点间的群集互连失效,并且群集被分成多个子群集而每个子群集认为自己是唯一的分区时,会发生群集分割。 不知道其它子群集的子群集可能会导致共享资源冲突,例如重复的网络地址和数据被破坏。
如果所有节点都认为群集处于不稳定的状态,就会发生失忆。 以一个具有节点 A 和节点 B 的双节点群集为例。如果节点 A 关闭,仅更新节点 B 中的 CCR 配置数据,而不更新节点 A 中的CCR 配置数据。如果稍后节点 B 关闭,并重新引导节点 A,则节点 A 将使用 CCR 的旧内容运行。 该状态称为失忆,它可能导致使用旧配置信息运行群集。
群集分割和失忆可以通过以下方法避免:赋予每个节点一个选票,并规定只有获得多数票数才能成为有效群集。 获得多数票数的分区拥有仲裁,因此允许其运行。 该多数投票机制适用于节点多于两个的群集。 在双节点群集中,多数为二。 如果这样的群集分为两个分区,则需要使用外部投票才能使其中一个分区获得仲裁。 此外部投票由仲裁设备提供。 仲裁设备可以是在两个节点间共享的任何磁盘。
表 2–1 说明 Sun Cluster 软件如何使用仲裁来避免群集分割和失忆。
表 2–1 群集仲裁及群集分割和失忆问题
分区类型 |
仲裁解决情况 |
---|---|
群集分割 |
仅使获得多数票数的分区(子群集)作为群集(其中仅能有一个拥有多数票数的分区)运行。 节点失去仲裁竞争后,则该节点停止使用。 |
失忆 |
在引导群集时,保证至少有一个节点是最新的群集成员之一(因而有最新的配置数据)。 |
群集的一个主要问题是引起群集分区的故障(称作群集分割)。 当此故障发生时,并不是所有节点都可以通信,所以单个节点或节点子集可能会试图组成单独的群集或群集子集。 每个子集或分区都可能“认为”它对多主机磁盘具有唯一访问权和所有权。 多节点试图写入磁盘可能导致数据被破坏。
故障防护通过防止对磁盘的访问,限制了节点对多主机磁盘的访问。 当节点脱离群集时(它或是发生故障,或是分区),故障防护确保了该节点不再能访问磁盘。 只有当前成员节点有权访问磁盘,从而确保数据的完整性。
Sun Cluster 系统使用 SCSI 磁盘保留来实现故障防护。 使用 SCSI 保留,故障节点就将与多主机磁盘“隔离”开来,使它们无法访问那些磁盘。
当群集成员检测到另一个节点不再通过群集互连进行通信时,它启动故障防护措施来避免这个出现故障的节点访问共享磁盘。 当故障防护发生时,防护节点停止使用,并且其控制台上显示“保留冲突”消息。
快速故障报警机制停止使用出现故障的节点,但是它不防止出现故障的节点重新引导。 停止使用后,节点可能重新引导并试图重新加入群集。
如果某节点与群集中其它节点失去连接,并且它不属于可获取仲裁的分区的一部分,它将被另一节点强行从该群集中删除。 属于可获取仲裁的分区的另一个节点将保留放置在共享磁盘上。 根据快速故障报警机制,停止使用不拥有仲裁的节点。
全局文件系统使群集中的任何文件对于所有节点来说都是可访问和可视的。 与此类似,Sun Cluster 软件使群集中的所有设备在整个群集中都是可访问和可视的。 即,I/O 子系统使得可以从任何节点访问该群集中的任何设备,而不管该设备实际附加在何处。 这样的访问被称为全局设备访问。
Sun Cluster 系统使用全局设备来使得群集中的所有设备在整个群集中对于任何节点都具有高度可访问性。 通常,如果从节点无法访问某个全局设备,则 Sun Cluster 软件切换到该设备的另一条路径,并将访问重定向到该路径。 由于不管使用哪条路径,设备都使用同一名称,因此重定向全局设备非常容易。 访问远程设备就像是访问使用同一名称的本地设备。 而且,访问群集中全局设备时所用的 API 与访问本地设备相同。
Sun Cluster 全局设备包括磁盘、CD-ROM 和磁带。 但是,唯一支持的多端口全局设备是磁盘。 这意味着 CD-ROM 和磁带设备目前还不是高可用性的设备。 每个服务器上的本地磁盘也不是多端口的,因而也不是高可用性设备。
群集为其包含的每个磁盘、CD-ROM 和磁带设备指定唯一的 ID。 这使得从群集中任何节点访问每个设备都是一致的。
Sun Cluster 软件使用设备 ID (DID) 驱动程序来管理全局设备。 此驱动程序可自动给群集中的每个设备(包括多主机磁盘、磁带驱动器和 CD-ROM)指定的 ID。
DID 驱动程序是群集的全局设备访问功能的基本构成部分, 它探测群集的所有节点,并生成唯一磁盘设备列表。 DID 驱动程序还给每个设备指定对于该群集的所有节点都一致的唯一主号码和次号码。 通过 DID 驱动程序指定的唯一 DID 而不是传统的 Solaris DID 访问全局设备。
这样可以确保访问磁盘(例如,Solaris Volume Manager 或 Sun Java System Directory Server)的任何应用程序使用的路径对于整个群集来说是一致的。 对于多主机磁盘,这种一致性尤其重要,因为每个设备的本地主号码和次号码可能随着节点的不同而变化。 这些号码还可以更改 Solaris 设备命名惯例。
Sun Cluster 软件还管理本地设备。 只有正在运行服务并物理连接到该群集的节点才可以访问这些设备。 本地设备可能比全局设备具有性能优势,因为本地设备不需要同时复制多个节点上的状态信息。 如果该设备的域出现故障,将删除对该设备的访问,除非设备可以被多节点共享。
磁盘设备组使卷管理器磁盘组成为“全局磁盘组”,因为它对底层磁盘提供多路径和多主机支持。 物理连接到多主机磁盘的每个群集节点都提供了一条到磁盘设备组的路径。
在 Sun Cluster 系统中,通过将多主机磁盘登记为磁盘设备组,Sun Cluster 软件可以控制多主机磁盘。 这样,Sun Cluster 系统可以了解节点分别对应于哪个卷管理器磁盘组。 Sun Cluster 软件为群集中的每个磁盘设备和磁带设备各创建一个原始磁盘设备组。 这些群集设备组将保持脱机状态,直到通过装载全局文件系统或通过访问原始数据库文件来将它们作为全局设备进行访问。
数据服务是软件和配置文件的组合,它使得无需修改 Sun Cluster 配置,应用程序就可以运行。 当在 Sun Cluster 配置中运行时,应用程序作为在资源组管理器 (RGM) 控制下的资源运行。 数据服务使您可以将应用程序(例如,Sun Java System Web Server 或 Oracle 数据库)配置成在群集上而不是在单一服务器上运行。
数据服务软件实现了对应用程序执行以下操作的 Sun Cluster 管理方法:
启动应用程序
停止应用程序
监视应用程序中出现的故障并从这些故障恢复
数据服务的配置文件定义了 RGM 中表示该应用程序的资源的特性。
RGM 控制群集中故障切换和可伸缩数据服务的处理。 RGM 负责在群集中的选定节点上启动和停止数据服务,以响应群集成员的更改。 RGM 使数据服务应用程序可以利用群集框架。
RGM 将数据服务作为资源进行控制。 这些实现由 Sun 提供,或者由使用普通数据服务模板、数据服务开发库 API (DSDL API) 或资源管理 API (RMAPI) 的开发者创建。 群集管理员在称为资源组的容器中创建和管理资源。 RGM 和管理员操作使资源和资源组在联机和脱机两种状态之间进行切换。
资源类型是一个特性集,描述群集中的应用程序。 该集合包含有关如何在该群集的节点上启动、停止和监视应用程序的信息。 资源类型还包含特定于应用程序的特性,要在该群集中使用此应用程序,需要定义这些特性。 Sun Cluster 数据服务具有多个预定义的资源类型。 例如,Sun Cluster HA for Oracle 的资源类型为 SUNW.oracle-server,Sun Cluster HA for Apache 的资源类型为 SUNW.apache。
资源就是在群集范围内定义的资源类型的实例。 资源类型使群集上可以安装应用程序的多个实例。 初始化资源时,RGM 为特定于应用程序的特性指定值,并且该资源继承资源类型级别上的任何特性。
数据服务使用多种类型的资源。 例如 Apache Web Server 或 Sun Java System Web Server 应用程序使用它们所依赖的网络地址(逻辑主机名和共享地址)。 应用程序和网络资源组成由 RGM 管理的一个基本单元。
由 RGM 管理的资源被放置在资源组中,这样可以将它们作为一个单元进行管理。 资源组是一组相关或互相依赖的资源。 例如,源于 SUNW.LogicalHostname 资源类型的资源可能与源于某个 Oracle 数据库资源类型的资源放置在同一资源组中。 如果对资源组启动故障切换或转移,该资源组将作为一个单元迁移。
数据服务使应用程序成为高可用性、高伸缩的服务,有助于防止重要的应用程序在群集中出现任何单一故障后发生中断。
当配置数据服务时,必须将该数据服务配置为以下数据服务类型之一:
故障切换数据服务
可伸缩数据服务
并行数据服务
故障切换是一个过程,通过它群集自动将应用程序从出现故障的主节点重定位到指定的冗余辅助节点。 故障切换应用程序有以下特性:
仅能在群集的一个节点上运行
不支持群集
高可用性依赖于群集框架
如果故障监视器检测到一个故障,它将试图在同一节点上重新启动该实例,或者在另一个节点上启动实例(故障切换),这取决于该数据服务是如何配置的。 故障切换服务使用故障切换资源组,它是应用程序实例资源和网络资源(逻辑主机名)的容器。 逻辑主机名是一些可以配置到节点上的 IP 地址,然后自动在原始节点解除配置,并配置到另一节点上。
客户机可能会有一个短暂的服务中断,并可能需要在故障切换结束后重新连接。 不过,客户机并不知道提供该服务的物理服务器中的变更。
可伸缩数据服务可以使应用程序实例在多个节点上同时运行。 可伸缩服务使用两个资源组: 包含应用程序资源的可伸缩资源组和包含可伸缩服务依赖的网络资源(共享地址)的故障切换资源组。 可伸缩资源组可以在多个节点上联机,因此服务的多个实例可以同时运行。 提供共享地址的故障切换资源组每次只在一个节点上联机。 提供可伸缩服务的所有节点使用同一共享地址来提供该服务。
群集通过单一网络接口(全局接口)接收服务请求。 根据由负载平衡策略设置的多个预定义算法中的一个,将这些请求分发到节点。 群集可以使用负载平衡策略来平衡几个节点间的服务负载。
通过使用并行数据库,Sun Cluster 系统提供了一种环境来使群集的所有节点共享应用程序的并行执行。 Sun Cluster Support for Oracle Parallel Server/Real Application Clusters 是一组软件包,安装之后可以使 Oracle Parallel Server/Real Application Clusters 在 Sun Cluster 节点上运行。 此数据服务还使得可以使用 Sun Cluster 命令管理 Sun Cluster Support for Oracle Parallel Server/Real Application Clusters。
并行应用程序被设定成在群集环境中运行,从而可以通过两个或多个节点同时控制应用程序。 在 Oracle Parallel Server/Real Application Clusters 环境中,多个 Oracle 实例协同提供对同一共享数据库的访问。 Oracle 客户机可以使用任一实例来访问数据库。 因此,如果一个或多个实例出现故障,客户机可以连接到剩余的实例并继续访问数据库。