Web服务器的高可用性和复制

我有一个像这样的3层Web解决scheme:

  • 前端负载均衡+代理+静态内容
  • 后端带有2个Apache Web服务器,每个服务器服务于不同的站点
  • 将内容推送到Apache Web服务器的发布系统

所以我正在为后端Web服务器的高可用性解决scheme工作。 我的想法是复制后端服务器之间的内容,如果一个失败另一个将服务于所有的网站(这可能是手动或使用心跳)。

问题是这些网站在总大小和文件数量方面都很大。 我尝试使用rsync在服务器之间复制内容,但需要很长时间。 此外我想使用NFS来共享内容,但这不是高可用性的选项。 另一种方式是发布系统将内容推送到两个Web服务器,但是如果我将另一个Web服务器放在后端,会发生什么?

有一个更好的方法吗? 我不需要同时提供相同内容的两台服务器,但是同步的内容是必须的。

您应该考虑使用多节点文件系统(如OCFS或GFS)的DRBD(基于TCP / IP的RAID-1)。

您也可以考虑获得一个SAN,您可以将这些文件系统中的任何一个放入其中。

使用SAN而不是NFS服务器,RAID将处理高可用性。

您可以使用HAProxy + Keepalived作为负载均衡器。 对于复制思考光链路,如果以太网不能满足您的需求。 RSync是非常有效的IMAO(使用压缩数据的“-z”选项,它发现它非常有效)。 至less,如果你想要高性能,你可以将两个Apache作为虚拟机托pipe在同一台服务器上,然后用一个不错的RAID卡添加一些漂亮的磁盘(15K rpm)。 这应该为您提供您正在寻找的可用性

我使用Debian Lenny上的Heartbeat2进行故障转移,效果非常好。 我有一个Web应用程序由一个Web服务器提供服务,如果出现问题(例如,双节点主动 – 被动群集),将会故障转移到另一个Web服务器。 Web应用程序数据位于文件系统上,也位于MySQL数据库中。 我们在Master-Master复制模式下使用MySQL来处理数据库应用程序数据的镜像。 其余的由rsync处理,当我们更新生活。 这个装置在过去的6个月里一直在生产中,在现实生活中也很成功。 由于这个原因,我认为我们在整体正常运行时间里增加了9个。

我很惊讶你的rsync需要很长时间,因为你的Web服务器大概是在同一个数据中心或在同一个国家,除非它们是像ISO这样的大文件。 可能值得检查一下您使用的rsync选项是否可以优化。