集群系统的可用性是指一个集群系统能否随时提供正确服务的能力。从定量的角度,可用性存在多种侧重不同的定义方法。较为常用的运行可用性(operational availability),定义为系统的正常运行时间(uptime)与系统总时间之比。在正常运行时间的计算中,无论何种原因导致的停机时间(downtime)都必须被扣除。因此,提高集群系统的可用性有两种思路:一是提高单个结点的硬件和软件的可靠性,从而使系统整体的可靠性和可用性相应地提高。二是着眼于系统整体的可用性,提高软件和硬件故障预测的准确度、故障检测和处理的速度,以使系统因故障造成的停机时间尽可能短。对于计算机系统的可用性级别,J.格雷(James Gray)提出了一个划分方法(见表)。
利用集群结点之间配置相同、互相连通的性质可以方便地实现心跳监听、进程冗余、数据冗余、故障切换等容错机制(见容错计算机系统)。这里的“心跳”是一种形象的说法,指的是高可用集群中的两个结点按照约定的时间间隔发送和接收消息,以确认发送方当前的运行状态。当心跳信号表明一个结点发生故障,或者另一个结点未在指定的时间间隔之内收到其发出的心跳,高可用性管理软件就会推断该结点已发生故障,然后就会将系统资源和服务负载迁移到事先指定或者动态选出的备用结点上,以保证系统服务不会中断。为了防止集群中常见的数据网络、管理网络的拥塞导致心跳停止的误判,高可用集群中的心跳消息可以通过专用的网络(如串口连接)来传递。最简单也最为常见的高可用集群形式是利用两个结点通过心跳监听实现互为备份,即“双机热备”。
系统类型 | 不可用时间/ (分钟/年) | 可用性/% | 可用性级别 |
无管理 | 50 000 | 90 | 1 |
有管理 | 5 000 | 99 | 2 |
良好管理 | 500 | 99.9 | 3 |
容错 | 50 | 99.99 | 4 |
高可用 | 5 | 99.999 | 5 |
甚高可用 | 0.5 | 99.999 9 | 6 |
超高可用 | 0.05 | 99.999 99 | 7 |