群集包括下列特性:
无单一失效点硬件配置
群集可以包含双控制器的 RAID 阵列、多个网络频道、以及冗余的不间断电源(UPS)系统来确保不会出现导致程序停运或数据丢失的单一失效情况。
另外,你还可以设置低费用的群集来提供比“无单一失效点”群集稍低的可用性。譬如,你可以设置带有单控制器的 RAID 阵列和只有单个以太网频道的群集。
![]() | 注记 |
---|---|
某些低费用的方法,如软件 RAID 和多初始器并行 SCSI,不适用于共享群集贮存区,或与之不兼容。详情请参阅第 1.1 节。 |
服务配置体制
群集使你能够轻松地配置个别服务来使数据和应用程序具有高可用性。要创建一项服务,你需要指定服务所使用的资源以及服务的属性,包括服务名称、应用程序的启动、停止和状态脚本、磁盘分区、挂载点、以及你优选的要在其上运行该服务的群集成员。添加了一项服务后,群集管理软件就会把这些信息贮存在共享贮存区上的群集配置文件中,这样,所有群集成员都可以存取这些配置信息。
群集为数据库应用程序提供了使用简便的体制。譬如,数据库服务(database service)给数据库应用程序提供高可用性数据。在某个群集成员上运行的应用程序,如万维网服务器,给数据库客户系统提供网络存取能力。如果服务失效转移到另一个群集成员,应用程序仍旧能够存取共享的数据库数据。一个可网络存取的数据库服务通常被指派了一个 IP 地址,这个地址以及服务都会被失效转移以便保持客户的透明存取能力。
群集服务体制还可以被简便地扩展到其它应用程序。
失效域
通过把服务分配给限制的失效域(restricted failover domain),你可以限定在失效转移情况下有资格运行服务的成员。(被分配给限制的失效域的服务不能在没有包括在失效域中的成员上启动。)你可以通过首选项来给失效域中的成员排序,从而确定某个特定成员会运行这个服务(只要该成员处于活跃状态)。如果服务被分配给无限制的失效域(unrestricted failover domain),服务就可以在任何可用的群集成员上被启动(如果失效域中的所有成员都不可用的话)。
数据完好性保证
要保证数据完好性,在某一时刻只有一个群集系统能够运行服务或存取服务数据。在群集硬件配置中使用电源开关能够使某个成员在失效转移情况下重新启动另一个成员上的服务前重开它的电源。这会防止两个系统同时存取同一数据从而损坏它们。虽然这并不是必要的部件,但我们仍推荐你使用电源开关来确保所有失效情况下的数据完好性。监视定时器是另一种确保服务失效转移的正确操作的电源控制方法。
群集管理用户界面
群集管理界面提供了进行以下管理任务的设施:创建、启动、和停止服务;把服务从一个成员重新定位到另一个成员;修改群集配置(添加或删除服务或资源);以及监视群集成员和服务。
以太网频道接合
要监视其它成员的健康状况,每个成员都监视远程电源开关的健康状况,并且通过网络发出心跳试通。由于以太网频道接合,多个以太网接口被配置成仿佛是一个一样,从而减少了典型的切换型以太网系统连接中的单一失效点所带来的威胁。
用于仲裁信息的共享贮存区
共享的状态信息包括群集是否活跃。服务状态信息包括服务是否在运行以及哪个成员正在运行该服务。每个成员都检查这些信息来保证其它成员处于最新状态。
在一个只有两个成员的群集中,每个成员都定期把一个时间戳和群集状态信息写入位于共享磁盘贮存区的两个共享群集分区上。要保证正确的群集操作,如果某成员无法在启动时写入主共享群集分区和屏蔽共享群集分区,它将不会被允许加入群集。此外,如果某群集成员不更新其时间戳,或者到系统的“heartbeats”(心跳)失败了,该成员就会从群集中删除。
图 2显示了系统在群集配置中的通信方式。注意,用来通过串口进入系统控制台的终端服务器不是必需的群集部件。
服务失效转移能力
如果硬件或软件失效情况出现了,群集会采取恰当的行动来保持应用程序的可用性和数据完好性。例如,如果某成员失效了,另一个成员(在相关的失效转移域中的,若使用了的话;或在群集中的的另一个成员)会重新启动那些服务。已经在该成员上运行的服务将不会受到影响。
当失效的系统重新引导并能够写入共享群集分区后,它就能够重新加入群集来运行服务。依据服务的配置情况而定,群集可以重新在成员间平衡服务。
手工重新定位服务的能力
除了自动转移失效服务外,群集还使你能够在一个群集系统上完整地停止服务,然后在另一个系统上启动它们。你可以在按计划进行对某个成员系统的维护任务的同时,仍旧提供应用程序和数据可用性。
事件记录设施
为确保问题在影响服务可用性之前被检测到并被解决,群集守护进程使用传统的 Linux syslog 子系统来记录消息。你可以定制所记录消息的严重性级别。
应用程序监视
群集服务体制还可以监视应用程序的状态和健康情况。这样,如果出现了应用程序特有的失效情况,群集会自动重新启动该应用程序。在应用程序失效情况下,它会试图在最初运行它的成员上重新启动;如果这不奏效,它会试图在另一个群集成员上启动。你可以通过给服务分配失效域来指定哪些成员具备运行该服务的资格。