需要简单的高可用性文件共享

需要简单的高可用性文件共享

我正在寻找在两个 Linux 服务器之间以高可用性方式共享单个文件的最简单方法。(版本和发行版并不重要,我正在寻找通用解决方案。)

我有两台服务器,每台服务器都有自己的本地磁盘和 NFS 共享,以及它们之间的其他服务。我有一个文件,两台服务器都需要访问,但除了这两台服务器之外,没有其他服务器需要访问它。

如果任一服务器崩溃,我希望该文件的最新内容可供剩余的服务器使用。(显然,另一台服务器应该在恢复时获取更改。)

该文件是状态文件,可能每次只有一台服务器写入该文件。状态文件大小未知,但很小。可能在 1 块到 2M 之间。状态文件的大小可能会根据停机时间的长短而增长。

如果不添加外部硬件,有哪些选项可以实现这样的高可用性文件共享?

答案1

有很多解决方案 - 对于一个文件,我可能会使用 GlusterFS - 但我认为您应该有 3 个服务器用于仲裁,否则您将不得不解决恢复时的裂脑问题。您应该能够在每个流行的发行版上轻松安装它,并且配置它的时间不超过一个小时。

答案2

如果这对服务器以热冷模式运行(即每次只有其中一台访问文件),DRBD是实现目标的快速而稳定的方法。DRBD 的设计考虑到了裂脑保护,因此它应该“足够好”。

来自 DRBD 网站的简短介绍:

分布式复制块设备 (DRBD) 是一种基于软件的、无共享的复制存储解决方案,可在主机之间镜像块设备(硬盘、分区、逻辑卷等)的内容。

DRBD 镜像数据

  • 实时. 当应用程序修改设备上的数据时,复制会持续发生。
  • 透明地. 应用程序不需要知道数据被存储在多个主机上。
  • 同步或者异步地。使用同步镜像时,在所有主机上执行完写入操作后,应用程序才会收到写入完成通知。使用异步镜像时,当本地完成写入操作时(通常是在写入操作传播到其他主机之前),应用程序才会收到写入完成通知。

由于这是块级复制,因此您需要进行一些额外的配置。例如,您必须在复制设备上创建一个文件系统,并且需要挂载该文​​件系统。默认的推荐配置仅允许一台主机挂载文件系统(以避免出现脑裂情况),因此您一次只能访问一个节点上的数据。

整个过程是有据可查还有一些简单的指南可用的。

如果你对自动化更感兴趣,起搏器 + DRBD是一个非常常见的组合,甚至在起搏器指南这也是对 DRBD 本身的一个很好的介绍。

PS 有趣的是DRBD 的起搏器指南我上面链接的几乎完美地描述了你的问题。

即使你正在提供静态网站,手动将该网站的内容同步到集群中的所有机器也不是理想的选择。对于动态网站(例如 wiki),这甚至不是一个选择。不是每个人都能负担得起网络附加存储,但无论如何数据都需要保持同步。

输入 DRBD,它可以被认为是基于网络的 RAID-1。

相关内容