Date: 4月 26, 2022
部署仲裁/见证的最佳方式
在最近的一次会议上,一位客户提出了一个关于高可用性 (HA) 和仲裁/见证可行性需求的问题。 他们的问题是,“部署法定人数/见证人的最佳方式是什么?”他们的问题的答案很简单,没有单一的最佳方式来部署仲裁。为了理解为什么,让我们从定义三个关键的东西开始:什么是见证资源、仲裁资源和裂脑场景。
什么是裂脑?
在正常的集群环境中,受保护的应用程序在集群的主节点上运行。如果该主节点的应用程序发生故障,集群软件会将应用程序操作移动到辅助节点或远程节点,该节点承担主节点的角色。 在任何给定时间,只有一个主节点。
裂脑是指集群成员之间无法相互通信,但处于运行和可操作状态,随后同时拥有公共资源的情况。 实际上,您有两个公共汽车司机在争夺方向盘。裂脑,由于其破坏性,可能导致数据丢失或数据损坏,最好通过使用围栏、仲裁、见证或集群仲裁的仲裁/见证功能来避免。
在大多数集群管理器中,在以下情况下会维持仲裁:
- 所有服务器都能够看到所有集群对等方和见证服务器的相同状态
- 所有服务器都能够看到所有集群对等方的相同状态,但不是见证服务器
- 所有服务器都可以看到见证资源,尽管彼此看不到,并避免出现脑裂情况
在大多数集群管理器中,仲裁会在以下情况下丢失:
- 服务器无法看到所有集群对等点和见证服务器
- 服务器无法看到大多数集群对等方,即使它们可以看到见证服务器
- 服务器无法访问或维持对仲裁资源的访问以成功仲裁仲裁成员资格和资源访问
什么是见证资源(或服务器)?
见证资源是服务器、网络端点或设备,用于在集群具有偶数个成员时实现和维护仲裁。具有奇数成员的集群,使用集群多数,不需要使用见证资源作为集群服务器的所有成员来仲裁多数成员资格。
什么是仲裁和仲裁资源?
仲裁资源是一种资源(设备、系统、块存储、文件存储、文件共享等),用作仲裁集群状态和成员资格的手段。在某些集群管理器中,仲裁是集群内的一种资源,它帮助或需要任何集群状态和集群成员资格决策。在其他集群管理器中,quorum 起到了决胜局的作用,以避免脑裂。
部署仲裁的不止一种方法
鉴于仲裁的关键性质,HA 架构必须正确部署仲裁/见证资源,并且幸运(或不幸)没有单一的,部署仲裁的最佳方式。有几个因素可能会影响您的见证和仲裁资源的行为方式。这些因素包括:
1. 您的部署是本地、云还是混合
在存在额外存储设备(例如光纤通道存储、电源控制设备或连接或传统 stonith 设备)的本地数据中心中部署将为客户提供可能不驻留在云中的仲裁和见证功能的额外选项。同样,云和混合环境在可以部署的内容以及正在部署哪些用例仲裁以防止这些方面存在差异。 此外,延迟要求和差异可能会限制可用于仲裁/见证配置的设备和资源类型。
2. 你的恢复目标
在设计和构建仲裁和见证资源时,恢复目标也很重要。在示例两节点集群(节点 A 和节点 B)中,当节点 A 失去与节点 B 的连接时,恢复的最高优先级是什么。 如果见证/仲裁资源与节点 A 在同一网络中,这可能导致节点 A 保持在线,但与客户端断开,而节点 B 无法评估仲裁和接管。同样,如果仲裁设备仅存在于具有节点 B 的区域、数据中心或网络中,则丢失可能导致资源故障转移到已失效的网络或中心或远离功能和操作的主节点。
3. 基础架构中可用数据中心(或区域)的冗余
数据中心或区域的冗余也是具有仲裁/见证的 HA 拓扑中的一个重要因素。 如果您的数据中心只有两个级别的冗余,您必须了解将仲裁/见证节点放置在与主集群节点或备用集群节点相同的数据中心之间的权衡。 如果数据中心有两个以上的冗余层,例如第三个可用区或访问第二个区域,此选项将为集群提供更高级别的冗余。
4. 容灾要求
了解您真正的灾难恢复需求也是您设计中的一个主要因素。 如果您的集群管理器软件需要访问仲裁/见证以便从整个数据中心中断(或区域故障)中恢复,那么您需要了解这对您的设计的影响。许多高可用性软件包都有适用于这种情况的工具或方法,但如果您的软件没有,您的仲裁/见证人的设计和放置可能需要适应这一现实。
5. 集群内的成员数量及其位置
当集群包含奇数个节点时,通常不需要额外的仲裁/见证服务器。但是,如果在一个集群中只使用两个节点或部署一个并不总是可用的 DR 节点可能会改变您的架构。作为客户体验副总裁,我曾与部署了三个节点架构的客户合作,但为了节省成本,他们会自动定期关闭第三台服务器。
6.操作系统和集群管理器
关于仲裁/见证的最后一个因素是集群管理器和操作系统。在仲裁/见证的部署或仲裁状态的仲裁方面,并非所有的 HA 软件和集群管理器都是平等的。一些集群软件需要共享磁盘进行仲裁,其他更灵活地允许共享(NFS、SMB、EFS、Azure 文件和 S3)。了解您的集群管理器需要什么,以及它在仲裁方面支持的模式(简单多数、见证、文件共享等)不仅会影响您部署的内容,还会影响您的部署方式。
部署仲裁/见证服务器的唯一最佳方法是了解供应商对仲裁/见证的定义及其可用选项,了解您的要求,考虑数据中心(或云环境)提供的限制或机会并构建解决方案为您的关键系统提供最高级别的保护,防止出现裂脑、错误故障转移和停机。
-Cassius Rhue,客户体验副总裁