在故障转移群集中,仲裁见证是一个通过参与仲裁投票过程来帮助维护群集高可用性的组件。 仲裁是一个概念,用于确定群集在保持运行的情况下可以承受的故障数量。
在群集中,每个节点都有一票,并且仲裁见证也可以有一票。 投票总数决定仲裁结果。 要使群组投入运行,必须有一半以上的投票处于活动状态。 如果投票数低于这个阈值,群集就会停止运行,以避免出现“脑裂”的情况,即群集的两个部分都认为自己是活动部分,从而导致数据损坏。
仲裁见证的作用是在节点数量为偶数或某些节点发生故障时提供额外投票,以实现或维持多数票。 如果有效投票数低于所需的多数票数,则群集将停止运行,以防止出现“裂脑”情况。 裂脑是指群集的不同部分都认为自己在独立运作的一种情况,这可能导致数据不一致或损坏。
仲裁见证的类型
有三种不同类型的仲裁见证可以配置,以维持高可用性并防止出现裂脑情况。 每一种仲裁见证都在群集的仲裁健康状态中充当公正投票。
- 云见证 - 基于云的服务,如 Azure Blob 存储
- 磁盘见证 - 所有节点都可访问的共享磁盘
- 文件共享见证 - 所有节点均可访问的共享文件夹
为了确保持续运行和数据完整性,这些仲裁见证各自提供了一种独特的方法来实现群集操作的多数投票。 最佳做法是将仲裁配置为奇数个投票要素。 如果群集具有偶数个投票节点,则添加磁盘见证或文件共享见证。 此配置允许群集承受一个额外节点的故障。 此外,增加见证投票可确保即使有一半的群集节点同时失效或失去连接,群集也能继续运行。 根据所选的仲裁配置,群集将配置为以下仲裁模式之一:
模式 | DESCRIPTION |
---|---|
多数节点(无见证) | 仅节点具有投票。 没有配置任何仲裁见证。 群集仲裁取决于活跃群集节点的多数票。 |
带有见证的多数节点(磁盘或文件共享) | 节点具有投票。 此外,仲裁见证有一票。 群集仲裁取决于活跃群集节点的多数票,包括任何见证票。 仲裁见证可以是指定的磁盘见证或文件共享见证。 |
无多数(仅磁盘见证) | 没有节点具有投票。 仅磁盘见证有一票。 群集仲裁依赖于磁盘见证的状态。 通常,不建议使用此模式,并且不应该选择它,因为它为群集创建了单点故障。 |
注释
如果使用文件共享见证或云见证,在关闭所有群集节点进行维护之前,不要忘记在最后一个活动节点上重启群集服务。 这可确保群集重新上线后能顺利恢复运行。 像这样的见证类型不会存储最新的群集数据库,这可能会导致设备启动时出错。 要了解详细信息,请参阅事件 1561。
小提示
可以使用 Get-ClusterNode cmdlet 检查群集节点的 DynamicWeight 属性,从而验证分配给节点的动态投票。 DynamicWeight 值为 0 表示该节点没有仲裁投票权,而值为 1 则表示该节点具有仲裁投票权。
云见证
云见证不同于传统的群集仲裁见证配置,因为它使用云中的 Azure 虚拟机(VM)作为仲裁见证而不是物理数据中心。 云见证使用 Azure Blob 存储来读取和写入 Blob 文件,系统将该文件用作实现仲裁的决定性投票。 下图显示了使用云见证的示例配置。
云见证配置不需要第三个独立的数据中心,并且可以获得额外的投票,以防止在其他数据中心之一关闭时完全关闭。 它不需要额外的站点来存储仲裁见证,也不需要现场数据中心所需的定期物理维护。
除了冗余外,使用云见证功能还有其他好处:
使用 Azure Blob 存储可消除在公有云中托管 VM 通常所需的额外维护开销。
可将同一 Azure 存储帐户用于多个群集。 唯一的要求是,每个群集只使用一个 Blob,并以群集的唯一 ID 命名 Blob 文件名。
降低存储帐户的持续成本,因为 Blob 文件不需要太多数据,并且仅在群集节点状态发生变化时进行更新。
Azure 附带内置的云见证资源类型。
云见证不会存储群集数据库的副本。
磁盘见证
磁盘见证是故障转移群集中使用的一种仲裁见证,有助于维护群集的高可用性。 磁盘见证是群集中所有节点都能访问的共享磁盘。 磁盘见证包含少量存储空间,用于存储群集配置数据库。 此存储空间包括有关群集的重要信息,如每个节点的状态和群集资源的所有权。 以下是其工作原理:
磁盘见证被配置为共享存储,所有节点都可以访问,但任何时候都只有一个节点可以写入。
当群集服务启动时,每个节点都会与磁盘见证通信,以读取最新的群集配置。
磁盘见证参与仲裁投票过程。 如果节点发生故障,磁盘见证会提供额外的投票,这有助于防止出现脑裂情况。
如果具有网络分区,则分区中能访问磁盘见证的那一侧会继续运行,拥有最多选票的那一侧会继续运行,从而保持群集的完整性。
磁盘见证在具有偶数个节点的群集中很有用,它可以充当决胜局以确保始终有多数投票。 在多个节点同时发生故障的情况下它也很有用,因为磁盘见证可以帮助维持仲裁。
使用磁盘见证的主要好处在于,它提供了一种一致可靠的方法,让所有节点能够就群集的当前状态达成一致。 一致性是确保故障转移群集正常运行的关键。 值得注意的是,磁盘见证不存储用户或应用程序数据,它仅用于群集配置数据库和仲裁投票。
文件共享见证
当群集包含偶数个投票节点时,应配置见证。 如果一半的群集节点同时关闭或断开连接,则添加见证投票会使该群集继续运行。 文件共享见证是一种仲裁见证,它使用服务器消息块 (SMB) 文件共享在日志文件中维护群集信息。 此文件共享可以托管在服务器、USB 存储器或网络附加存储 (NAS) 上。
文件共享见证对具有复制存储的多站点群集也大有裨益。 可以在以下情况下,使用文件共享见证:
无法使用云见证,因为群集节点没有可靠的 Internet 连接或没有 Internet 连接。
无法使用磁盘见证,因为没有任何共享驱动器可用于磁盘见证。 例如,存储空间直通群集、SQL Server Always On 可用性组 (AG) 或 Exchange 数据库可用性组 (DAG)。 这些类型的群集都不使用共享磁盘。
此示例是一个简化的配置,其中两个现场数据中心内有两个节点。 在典型的群集中,每个节点都有一票,一个文件共享见证给仲裁见证额外投一票。 额外的这一票使得即使其中一个数据中心关闭,群集也继续运行。 在此示例中,群集仲裁可能有 5 票,它只需要获得 3 票就能继续运行。
然而,你可能会注意到,除了这两个数据中心外,还有第三个数据中心作为文件共享见证。 此数据中心与其他两个站点分开,它托管一个用于备份系统文件共享的文件服务器。 文件共享见证在此群集仲裁配置中充当仲裁见证,从而确保即使其中一个数据中心意外关闭,系统仍然会运行。
拥有文件共享见证提供了足够的冗余,使文件服务器保持高度可用。 但应记住,在单独站点中的另一服务器上托管文件共享见证需要设置、定期维护以及与其他站点的独立连接。
见证配置
最佳做法是将仲裁配置为奇数个投票要素。 如果群集有偶数个投票节点,请添加磁盘见证或文件共享见证,以确保高可用性。 此配置使群集能够承受一个额外节点的故障。 此外,增加见证投票可确保即使有一半的群集节点同时失效或失去连接,群集也能继续运行。
当所有群集节点都能访问共享磁盘时,通常建议使用磁盘见证。 另一方面,在涉及复制存储的多站点灾难恢复场景中,文件共享见证是首选。 只有当存储解决方案支持从所有站点对复制存储进行读写访问时,才可以使用复制存储来配置磁盘见证。 要了解有关见证配置类型的详细信息,请参阅部署仲裁见证。
节点投票分配
在高级仲裁配置中,可以为单个节点分配或移除仲裁投票。 默认情况下,群集中的每个节点都会被分配一票。 但是,即使一个节点的投票被删除,它仍然可以参与群集,接收群集数据库的更新,并仍然能够托管应用程序。
在特定的灾难恢复场景中,可能会考虑删除某些节点的投票。 例如,在多站点群集中,可以删除位于备份站点的节点的投票,以防止它们影响仲裁的计算。 通常只有在计划进行站点间手动故障切换时,才建议采用这种方法。 不建议用节点投票分配来强制执行奇数个投票节点。 相反,你应该配置磁盘见证或文件共享见证。
动态仲裁管理
动态仲裁管理是一种高级配置选项,允许群集动态调整其仲裁多数要求。 此功能可使群集在节点依次关闭时仍能保持运行,从而使群集在最后一个剩余节点上运行。
动态仲裁管理为故障转移群集提供了更大的灵活性和弹性,使其成为在动态环境中保持高可用性的重要功能。 启用动态仲裁管理后,群集可根据当前群集状态自动调整分配给节点的票数,确保群集能够承受节点故障或计划关闭,同时维持仲裁。 如果启用动态仲裁管理,则只有配置为分配了节点投票的节点才可以动态分配或删除其投票。
重要注意事项:
- 动态仲裁管理不允许群集承受大多数投票成员同时失效的情况。 在节点发生故障或关闭时,群集必须仍有仲裁多数才能继续运行。
- 如果某个节点的投票被显式删除,群集就无法动态添加或删除该投票。
- 在启用了存储空间直通的群集中,群集最多只能容忍两个节点故障。
仲裁配置的常规建议
群集软件会根据节点数量和共享存储的可用性,自动确定新群集的仲裁配置。 此默认配置通常最适合群集。 建议在创建群集后,将其部署到生产环境之前,重新检查仲裁设置。
要检查详细的仲裁配置,可以使用验证配置向导或 Test-Cluster cmdlet 运行验证仲裁配置测试。 在故障转移群集管理器中,所选群集的基本仲裁配置将显示在摘要部分中。 另外,也可以通过运行 Get-ClusterQuorum cmdlet 来获取有关仲裁资源的详细信息。
可以随时运行验证仲裁配置测试,以确保群集的仲裁设置达到最佳状态。 测试结果会显示是否建议更改配置,并提供最佳设置。 如果需要调整,可以使用配置群集仲裁向导应用建议的更改。 一旦群集投入生产,应避免修改仲裁配置,除非经过彻底评估并确认该更改对于群集的特定要求是必要的。 在以下情况下,你可能想要考虑更改仲裁配置:
- 添加或逐出节点
- 添加或删除存储
- 长期节点或见证失败
- 在多站点灾难恢复方案中恢复群集
另请参阅
在 Azure Local 中设置群集见证