了解仲裁和 epsilon

仲裁和 epsilon 是集群运行状况和功能的重要衡量指标,它们共同指示集群是如何处理可能出现的通信和连接问题的。

仲裁是确保集群完全正常运行的前提。如果集群处于仲裁状态,则过半数的节点运行状况良好,并可相互通信。如果失去仲裁状态,则集群将无法完成正常的集群操作。一次只能有一组节点处于仲裁状态,因为其中所有节点会共享一个数据视图。因此,如果允许两个非通信节点以不同方式修改数据,则无法再将这些数据协调到一个数据视图中。

每个节点都参加表决,选择一个节点为主节点;其余每个节点为二级节点。主节点负责在集群内同步信息。形成仲裁后,系统会通过持续表决来维持这种仲裁关系。如果主节点脱机,而集群仍处于仲裁关系中,则会从仍保持联机的节点中选出一个新的主节点。

由于集群中可能会出现两个部分的节点数量正好相等的情况,因此,其中一个节点会有一个额外的表决权重百分比,称为 epsilon。如果一个大型集群中两个相等部分之间的连接发生故障,而所有节点运行状况均正常,则具有 epsilon 的那组节点将保持仲裁关系。例如,下图显示了一个四节点集群,其中两个节点发生故障。但是,由于其中一个正常运行的节点持有 epsilon,因此,整个集群仍会保持仲裁关系,即使运行状况正常的节点没有过半数也是如此。


本图周围的文字提供说明。

创建集群时,系统会自动将 epsilon 分配给第一个节点。如果持有 epsilon 的节点运行状况不正常、接管其高可用性配对节点或由其高可用性配对节点接管,则 epsilon 会自动重新分配给另一个 HA 对中运行状况正常的节点。

使节点脱机可能会影响集群是否还能保持仲裁关系。因此,如果您要执行的操作会使集群脱离仲裁关系,或者会使其因丢失仲裁而造成中断,则 Data ONTAP 会发出警告消息。您可以在高级权限级别使用 cluster quorum-service options modify 命令禁用仲裁警告消息。

一般来说,假设集群节点间连接可靠,则较大的集群要比较小的集群更加稳定。与双节点集群相比,包含 24 个节点的集群更容易保持“过半数的节点外加 epsilon”这样的仲裁要求。

双节点集群在保持仲裁方面具有一定的难度。双节点集群会使用集群 HA,其中,两个节点均不具有 epsilon,而是会持续进行表决,以确保一个节点发生故障后,另一个节点对数据拥有完全读写访问权限,并可访问逻辑接口和管理功能。