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

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

情况:设置负载均衡器

目前,我们的数据中心内的所有服务器(运行 CentOS Linux)都是成对的:每台服务器都有一个镜像服务器。我们目前没有使用任何负载平衡,因此服务器 A 会接收所有流量,当服务器 A 发生故障(硬件或软件)时,我们可以通过在服务器 B 上配置服务器 A 的 IP 地址来快速切换到服务器 B。我们正在使用 MySQL 主/主复制(尽管我们可以简单地使用主/从复制来进行当前设置)和 rsync 来保持 vhost 文件同步(服务器 A 同步到服务器 B)。

这对我们来说效果很好,但效率很低,因为在一台机器发生故障之前,我们有 50% 的硬件处于无用状态。我们正在考虑在服务器对前面放置负载平衡器,这样我们就可以将负载分配到两台机器上,并为每个集群添加额外的服务器。

问题:共享文件存储

设置它可能不会花费太多时间,只需在每对服务器前面放置一个负载平衡器,然后让它将流量分配到每对服务器即可。除了一件事:文件存储。目前,rsync 将更改从服务器 A“推送”到服务器 B,但不能反过来。我们可以将其设置为 rsync 也从服务器 B 运行到服务器 A,但问题是 rsync 永远不知道是否要创建或删除存在于服务器 A 但不存在于服务器 B 上的文件。我查看了齐奏,但该项目似乎已经停止。

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

因此,我正在寻找其他解决方案。请注意,我不想添加更多硬件(因此没有 NAS/SAN 解决方案)。还请注意,每个集群需要的存储空间较少(低于 500GB),并且所有服务器都在同一个本地网络上。我们有一个不错的备份解决方案(每 3 小时备份一次)。

我一直在关注DRBD这似乎很适合我们的情况,但我没有这方面的经验。DRBD 对我们来说是可行的吗?请分享您使用这个和其他类似解决方案的经验。有什么陷阱需要考虑吗?我走在正确的道路上吗?请指教我 :)

答案1

DRBD 很棒。

优点:

  • 它在复制数据方面做得非常出色
  • DRBD 在一些案例中避免了灾难,它发现卷已经安装在另一个节点上,而我们从 SAN 获取的原始卷无法告诉我们这一点。
  • Heartbeat 已经为 DRBD 提供了很好的支持。

挑战:

  • 记住要适当地监控它,这样当裂脑发生时你就能发现它并处理它。
  • 如果没有支持集群的文件系统,DRBD 就无法在两台服务器上安装 —— 我对此没有任何经验。
  • 通过配置 DRBD 使用所有可用带宽来同步磁盘,很容易“DOS”服务器。只需配置较低的吞吐量,就可以了。

为了在多个节点上安装“相同”的文件系统,我们不断回到 NFS,尽管我们一直在测试各种解决方案。在生产中,我可以轻松使用的设置是 NFS 位于 EXT4 之上,位于 DRBD 之上。我不敢对数据库文件系统这样做,但对于 wwwroot 来说没问题。

答案2

DRBD 以实时、透明的方式镜像数据。请注意以下几点:

  • 您需要一个用于双主模式的集群文件系统。 OCFS2仅支持 CentOS 5。如果你使用 CentOS 6,你应该使用 GFS2 反而。
  • 虽然所有服务器都在同一个本地网络上,但我仍然建议使用交叉电缆进行连接。
  • 你应该有一个监控机制来检测裂脑,例如:Nagios的 检查 插入。
  • 别忘了测量和优化DRBD 性能

如果您想设置 3 或 4 个节点,请查看:

答案3

为什么不为每个集群设置两个(或更多)服务并默认在每一侧运行一个服务?

相关内容