我为一个小型ISP工作,我们主持了大约250个域名以及与之相关的所有内容:DNS,邮件,垃圾邮件过滤和备份。 目前,我们有单独的DNS服务器(其中两个)和邮件服务器(外发邮件实际上在辅助DNS服务器上,但之前在其自己的服务器上)。 过去,这是作为一项保险措施完成的。 我们最需要的是一些doofus(通常是你的)真正的软pipe服务器,取出DNS和邮件,或者垃圾邮件发送者阻塞我们的SMTP服务器,阻止发送邮件。 过去,这是一个问题,我们的服务器已经按照现在的方式与之对抗了。
然而,像Sun的Cobalt RAQ(以前的版本)和Virtualmin这样的集群解决scheme似乎迎合了一体化的方式,然后通过冗余服务器来处理故障。 到目前为止,我已经避免了这一点,但是我们已经在我们的Web服务器上使用了Virtualmin了一段时间了,我想扩展到将它用于高可用性集群。 我们的networking合作伙伴最近build立了一个数据中心,消除了我们所有的其他bug,比如networking,散热和电源问题,所以现在唯一的问题就是我在这个月初发生了一个服务器问题。
我们避免走这条路线的一个更重要的原因是我们的硬件要求不是特别高。 一台服务器可以轻松处理我们托pipe的所有网站(大部分是平面网站)。 另外,负载平衡路由器往往是昂贵且复杂的。 我真正希望做的是build立一个冗余的双节点集群,这样当我连接一个服务器(不pipe可能是多less)时,我们不会在8-12小时内重build它。
我需要知道的是如何开始,如果我真的有能力打扰这种事情。
我发现使用负载均衡是我向Web服务器引入高可用性的首选解决scheme。 暂存代码部署,不闲置可用资源和引入冗余是有优势的。 LVS是我的首选解决scheme。 其他人似乎喜欢庞德 ,我也对HAProxy感兴趣。 使用LVS,在Web服务器上configurationldirectord服务器和使用arptables可以是一个直接的实现。 通过使用心跳进行故障切换来实现主动/被动服务器实现,可以防止LVS发生单点故障。
现在,如果您共享托pipe销售帐户,引入高可用性和自动故障转移将变得更加复杂。 因此,您可能必须考虑多个服务器可以使用心跳线访问和configuration主动/被动服务器的冗余存储解决scheme。 DRBD好像在这里可能有用。
您可以使用完全开放源代码和商品硬件来实现完全高可用性解决scheme,而不会出现单点故障。 如果你想要额外的build议,我会很乐意提供帮助。 这是我最喜欢的领域之一。
我们最近做的是在我们的集群上设置ucarp ,并设置4个相同configuration的节点。 我们运行一个内部开发的web应用程序,所以当不作为前端服务的时候,4个节点实际上是做后端工作的。
UCARP和我放在一起的几个脚本将自动在另一个节点上启动一个IP,当服务节点开始工作时。 NGINX是我们的前端服务器,它处理确保请求路由到可用节点。
所有这一切的结果是,我可以没有任何警告地敲掉我们的任何4个节点,服务将在几秒钟内自动迁移到另一个可用的节点。 (到那个节点的现有连接被中断,但是在任何特定的时刻只有一点小小的麻烦,当他们重新加载时,其他地方的事情将全速恢复。)UCARP将检测IP连接中的故障—如果其他事情正在发生不好的,你必须找出一种办法,把IP连接从坏节点上剔除,所以其他function节点就会接pipe。
所有4个节点安装一个nfs导出的文件系统,由一对运行drbd的机器处理