![什么是稳定、防故障、可扩展的 Galera 集群实现](https://linux22.com/image/661933/%E4%BB%80%E4%B9%88%E6%98%AF%E7%A8%B3%E5%AE%9A%E3%80%81%E9%98%B2%E6%95%85%E9%9A%9C%E3%80%81%E5%8F%AF%E6%89%A9%E5%B1%95%E7%9A%84%20Galera%20%E9%9B%86%E7%BE%A4%E5%AE%9E%E7%8E%B0.png)
语境:我们正在使用 MariaDB Gallera 集群(只有 2 个主节点)来运行 Web 应用程序。昨晚我们遇到了电源故障,现在我们似乎无法恢复数据,并且发现两个节点上的数据库都已损坏。我们对此设置的最初印象是,如果一个节点发生故障,另一个节点将迅速充当主节点。
我的问题是,
有没有办法设置一个集群,这样总有一个备份节点,如果其中一个节点出现故障,该节点将自动进行复制?特别是在发生电源故障的情况下。
画廊集群的正确实现是什么?
答案1
我们使用一个 Galera 集群,该集群有 5 个节点,前面有一个负载均衡器,它会不断检查所有节点。我们的配置是,只有一个节点为来自负载均衡器的连接提供写入和读取目标,其他节点是热备用。但当然,Galera 也支持多主读写,因此您可以根据自己的喜好进行调整。
最小集群规模需要为 3,因为它必须是奇数,以避免节点之间的连接因任何原因中断时出现脑裂情况。(您也可以使用仲裁器,但更简单的设置是使用至少 3 个适当的集群节点。)我们使用 5 个节点,以便更轻松地升级集群并提高弹性。
Galera 还支持通过 WAN 建立集群,但这需要在服务器设置中进行一些额外的调整,以免破坏服务器性能。通常,具有 3 个以上节点且具有冗余网络和电源的集群应该适合应用程序。
您在问题中没有提到的是您在 Galera 集群上使用的数据库引擎类型。看到您出现损坏,我认为可能是 MyISAM?如果是这种情况,您需要迁移到使用 InnoDB,因为 MyISAM 实际上不受 Galera 支持。它还具有其他一些好处,例如更具弹性的写入,即使在集群实际上崩溃并且您需要恢复数据库的不太可能的情况下,也可以避免数据损坏。
答案2
第一个问题的答案与计算中的大多数问题一样:是的,只要您有足够的资源和时间。如果集群位于某种数据中心环境中,则希望有某种带外管理接口,如专用管理 NIC 和/或 KVM 系统。
现代数据中心管理解决方案英特尔数据中心管理器或者Raritan 数据中心管理系统让用户能够设置策略,以便在断电后自动重启系统、发送通知,甚至可能开始启动异地或基于云的故障转移节点。但是,设置和配置此类安全网的所有方面可能需要很大的成本和专业知识水平,它需要大量设备,而且如果没有停机时间,很难进行彻底的测试和准备。
另一个常见的节点管理工具是纳吉奥斯这使得可以实现远程电源管理和控制。
除了带内和带外管理选项外,还可以使用 CM 工具设置配置管理服务器,例如盐或者厨师有助于确保节点配置正确,并大大简化配置新节点的任务,即使在陌生或远程环境中也是如此。存储和数据库要求以及网络环境将有助于确定适当的集群架构,特别是在存储、电源和备份方面。在某些情况下,生成 kickstart 克隆或某种类似的安装辅助工具(如 SUSE 系统上的 AutoYaST)可能会很有用。这将允许您快速构建干净的节点并在发生硬件故障时从快照或备份中导入必要的数据。
保存使用以下方式构建的自定义系统映像KIWI 构建系统导入、安装或复制必要数据是另一种选择。使用 KIWI 可以创建可在各种场景中部署的映像,包括作为 VM、通过 PXE、可启动 DVD/USB 等。出于各种原因,使用 KIWI 或其他操作系统构建工具设计适合您需求的完美自定义映像可能会非常有益。
如果不知道您认为可接受的长度,那么第二个问题就很难具体回答。具有额外远程备份、自动故障转移和恢复功能的多站点高可用性集群所需的设置和资源与集群所需的设置和资源截然不同,在集群中,“高可用性”意味着集群所在的建筑物有电源和互联网才能工作。希望其中的一些信息对您有用。