什么分布式文件系统的双节点故障转移设置?

我试图build立一个由两台服务器组成的冗余设置,

  • 数据库(MySQL master-master在主动/被动模式下)
  • 文件系统(分布式/复制
  • 我们的应用软件(使用分布式文件系统保持同步)

大多数情况下,两台服务器中的一台将成为“主要”服务器,另一台将复制所有数据,并将用于分配工作量(Gearman)。 在主服务器出现故障的情况下,一切都切换到“备用”服务器,该服务器将成为“主动”服务器并继续工作。

为了降低两台服务器完全失败的风险,它们在两个遥远的数据中心(相同的国家/直接连接)中在地理上是分开的

我读了很多关于分布式文件系统,但仍然没有线索,哪个解决scheme适合只有两个节点…

对分布式文件系统有更多的要求:

  • 必须符合POSIX标准
  • 必须在两个方向复制一切 (所有数据必须在两台服务器上都可用)(所有数据都可以在任何地方更改)
  • 与现有数据有关的当前统计数据应该在未来被复制:
    • 30 GB的数据 ,自3年以来不断增长
    • 在7500个目录中约有300万个文件
    • 平均文件大小约。 5-10kb ; 有10-50 MB的大文件
    • 大多数文件都是定期在一天中添加,一旦处理就移动到另一个目录(类似于基于文件的邮件服务器)
    • 一天一次,几千个文件(前一天收到的)被存档到一些TAR档案中,并“离开”
    • 在添加文件时,首先将数据写入以“。”开始的临时文件。 然后在完成时重命名。 只有很less的现有文件正在改变。
  • 系统应该处理意外的连接损失,重启服务器等。
  • 没有问题,如果复制滞后1-2秒,但它应该始终处于一致的状态
  • 正如所说,分配。 的filesys。 将只包含两个节点,但是如果我可以添加额外的节点/服务器将会是一个很大的好处,未来我是否需要更多的计算能力

更新/更多细节:

  • 我只需要“在两台服务器上存储的文件,立即同步”的意义上的冗余。 当访问文件时,我不需要文件系统从另一台服务器读取数据,只是因为本地硬盘出现故障。 当本地硬盘故障时,整个服务器机器被认为是“坏”,因此应该停止工作。

哪种文件系统适合在这种情况下?

XtreemFS似乎是你想要实现的。 你也许可以用CephFS做几乎相同的事情。

尝试DRBD。 这不是文件系统,而是块设备。

http://lwn.net/Articles/329543/

协议A:一旦本地磁盘写入完成,就认为写入完成,并且数据包已经被放置在对等体的发送队列中。 在节点故障的情况下,可能会发生数据丢失,因为要写入远程节点磁盘的数据可能仍在发送队列中。 但是,故障切换节点上的数据是一致的,但不是最新的。 这通常用于地理上分离的节点。

单一主要:主要指定给予一个集群成员。 由于只有一个集群成员操纵数据,所以这种模式对于传统的文件系统如ext3或XFS很有用。

另见http://www.drbd.org/home/feature-list/了解更多详情。