什么用于基于软件的共享文件存储?

情况:build立一个负载均衡

目前我们所有的服务器(运行CentOS Linux)在我们的数据中心都是成对的:每台服务器都有一台镜像服务器。 目前我们没有采用任何负载均衡,所以serverA获取所有stream量,当发生故障时(硬件或软件),我们可以通过在serverB上configurationserverA IP地址来快速切换到serverB。 我们正在使用MySQL主/主复制(尽pipe我们可以简单地使用主/从复制进行当前设置)和rsync保持同步的vhost文件(serverA同步到serverB)。

这对我们来说工作的很好,但是效率很低,因为我们有50%的硬件在机器出现故障之前什么也不做。 我们正考虑在服务器对之前安装负载平衡器,这样我们就可以将负载分配到两台机器,并为每个群集添加额外的服务器。

问题:共享文件存储

设置它可能不会比将负载均衡器放在每个服务器对前面,然后将stream量分配给每个服务器对中的每个服务器。 除了一件事:文件存储。 目前rsync“推”从serverA到serverB的变化,但不是相反。 我们可以设置它,使rsync也从serverB运行到serverA,但问题是,rsync永远不知道是否创build或删除serverA上存在的文件,而不是serverB上的文件。 我看着Unison ,但是这个项目似乎已经停止了。

问题:基于软件的共享文件存储的最佳解决scheme是什么?

所以,我正在寻找一个不同的解决scheme。 请注意,我不想添加更多的硬件(所以没有NAS / SAN解决scheme)。 另外请注意,我们需要每个群集less量的存储(低于500GB),并且所有服务器都在同一个本地networking上。 我们有一个体面的备份解决scheme(备份每3小时运行一次)。

我一直在看DRBD ,这似乎很适合我们的情况,但我没有经验。 DRBD是我们走的路吗? 请分享您与这个和其他类似的解决scheme的经验。 任何想到的陷阱? 我在正确的轨道上? 请赐教:)

DRBD是伟大的。

好东西:

  • 它在复制数据方面做得非常出色
  • DRBD在一些情况下阻止了灾难的发生,它发现卷已经安装在另一个节点上,而我们从SAN获得的卷是无法告诉我们的。
  • 心跳已经对DRBD有很大的支持。

挑战:

  • 记得要正确地监视它,所以当它们发生时你会发现分裂的大脑 – 并且可以处理它。
  • 如果没有启用集群的文件系统,DRBD无法安装在两台服务器上 – 我对该部分没有任何经验。
  • 通过configurationDRBD使用所有可用带宽来同步磁盘,可以很容易地“服务”服务器。 只要configuration较低的吞吐量,你没事。

为了在几个节点上安装“相同的”文件系统,即使我们继续testing各种解决scheme,我们也会继续使用NFS。 一个设置我没有生产问题是在DRBD之上的EXT4之上的NFS。 我不敢用数据库文件系统来做这件事,但是wwwroot可以。

DRBD透明地实时镜像数据。 请注意以下几点:

  • 您需要双主模式的群集文件系统。 OCFS2仅支持CentOS 5.如果您使用的是CentOS 6,则应该使用GFS2 。
  • 虽然所有的服务器都在同一个本地networking上,但我仍然build议使用交叉电缆连接。
  • 你应该有一个监测机制来检测脑裂 ,例如:Nagios的check_drbd插件。
  • 不要忘记测量和优化 DRBD性能

如果你想要设置3或4个节点,请看看:

为什么不为每个集群设置两个(或更多)服务,并且默认情况下让每个服务运行一个?