现在我正在使用DRBD在两个不同的XEN VPS上复制两个目录(/ var / www和/ var / spool / mail),彼此距离7000英里! 最重要的是,我使用透明的IPSec隧道VPN来连接私有层上的两个节点,似乎并不公平我知道,现在我将(www和mail)文件夹放在DRBD目录中,我只是软链接到每台机器,它的工作和复制,但由于我有太多的负载在networking级别(距离和安全)我的磁盘读/写速度是可怕的,我打开一个网页在6分钟甚至更多,我有邮件延迟和一天结束时,我面对(双裂脑),两个节点重新启动,这是当DRBD带来两个节点作为次要的,挂载过程将永远不会发生,导致没有活跃的根文件的Apache启动和在这个确切点冗余杀死可用性!
我试图释放DRBD分区上的负载,以加速一些东西,所以我把这两个目录都复制回原来的位置,并在DRBD分区上build立了一个软连接,但是这个没有用,现在我需要好的build议! (我正在使用OCFS2 BTW作为DRBD分区)
那么“不要复制超过7000英里缓慢和高延迟的链接开始”。
DRDB级别上的复制已经到位,但基本上是滥用它的:它专门devise用于低延迟高带宽场景。 您也可以在灾难恢复的情况下“asynchronous”使用它,因为复制落后和追赶,可以丢失一些数据。
如果你不在这两种情况之一,只是忘记使用像drdb的东西的想法。 在数据中心中组织本地数据,并使用复制和备份来合理解决问题。
例如,复制邮件缓冲没有意义。 网站stutff(网站等) – 没有任何意义,因为你可以使用其他工具来分发这些数据。
如果你使用一种特殊用途的技术,那就忽略这个限制,把它放到一个不适合你的情况下,就可以得到你在这里所描述的灾难。
DRDB是本地机器的高可用性function。 它允许在机器出现故障的情况下复制文件系统。 它的目的不是处理广域网情况,除非你使用asynchronous,并“写出来”(即复制到异地位置)。 即使如此,你仍然必须有带宽来处理它 – 这可能是税(如:1gbit +)。
正如TomTom和ThatGrameGuy所指出的那样,您的devise假设(即您可以通过DRBD获得您想要的)是有缺陷的。 DRBD对同步块设备非常有用(所以名称:Distributed Replicated Block Device )。 您可以理论上在TomTom所描述的当前场景中使用它(asynchronous模式,可以丢失一些数据的事情),但是您不会描述任何存在这种情况的地方。
这似乎也使得这个过程变得复杂得多:听起来你只需要一个简单的“主/从”环境。
对于networking材料
网站定期更换。 做一个可以恢复到远程服务器的网站备份是很容易的(或者把所有东西都存储在一个版本控制系统中,或者使用一个configurationpipe理系统把网站“推”到多个服务器上)。
对于数据库
现在网站通常是数据库支持的(通常这是唯一一个持续改变的部分),但是每个值得使用的数据库引擎都有某种复制能力(你说你已经在使用这种function了)。
configuration正确的数据库复制比复制数据库的DRBD要好,因为远程数据库引擎保证主服务器具有相同级别的ACID。
电子邮件
就像TomTom在答复中所说的那样,复制你的外发邮件假脱机程序是没有意义的。
如果您在队列中丢失了一个或两个电子邮件的主服务器,您的用户可以重新发送这些电子邮件,而且无论如何这是一个拐angular事件,因为除非收件人的服务器closures,否则电子邮件将在几秒钟内closures您的系统。 不值得担心。
人们的邮箱是另外一回事:在这里您将需要备份 (或支持复制的邮件系统)。 这可能意味着在故障转移到辅助服务器时(还原旧邮件时),人们无法访问旧电子邮件,但这通常是可以的,因为他们正在收到当前的电子邮件。 如果还原时间不可接受,您可以连续地将备份还原到辅助服务器(或者使用像rsync这样的方法使邮箱每隔几小时保持同步)。
在我上面描述的情况中有几个边缘情况,你应该知道的。
一,如果你的服务器“非常繁忙”,你可能需要正确地进行负载均衡(使用类似HAProxy的方式在“前端”服务器之间分发Web请求,并将邮件和数据库移动到他们自己的服务器上)。 这就是你如何正确扩展。
Techy computer-sciency解释:DRBD hackery带DRBD的带宽需求接近O(N ^ 2),其中N =节点数,我概述的解决scheme大致为O(N),其中N = DR的数目网站 – 而DR站点的数量不可能超过2)。
二,如果您的Web服务器将数据写入本地文件系统,则需要重新构build该解决scheme(将文件存储在数据库中,或存储在NoSQL数据库(如MongoDB)或中央存储服务器上(通过NFS或类似的方式) ,并可能将asynchronousDRBD复制到您的场外位置以获得近乎实时的灾难恢复) – 基本上,有一些解决scheme可确保本地文件写入function可供所有其他“前端”服务器使用。