我将运行一个动态网站,如果服务器停止响应,我想要故障转移到一个显示“我们正在停机进行维护”页面的静态网站。我一直在阅读,我发现动态切换DNS可能是一种选择,但这种变化会以多快的速度发生?每个人都会立即看到变化吗?有没有更好的方法来故障转移到另一台服务器?
发布于 2009-11-23 14:44:46
DNS有一个TTL (生存时间)并被缓存,直到TTL过期。因此,DNS切换不会立即发生。对您的站点进行缓存DNS查找的每个人仍然使用旧值。您可以设置一个非常短的TTL,但这对于性能来说是很糟糕的。DNS几乎肯定不是完成您正在做的事情的正确方法。
负载均衡器可以进行这种即时切换。所有流量总是首先到达负载均衡器,在正常情况下,负载均衡器会将请求代理到您的主web服务器。在web服务器崩溃的情况下,您可以让负载均衡器将所有web流量定向到故障转移web服务器。
发布于 2009-11-23 16:18:23
pound、perlbal或其他软件负载均衡器可以做到这一点,我相信,是的。
也许甚至Apache重写规则也可以允许这样做?不过,我不确定是否有办法在动态服务器不可用时进行分支。根据您的喜好定制Apache404响应?
发布于 2014-08-16 19:25:49
首先,重要的是要了解你想要故障转移的故障类型,如果是app/db错误并且服务器仍然正常运行,你可以创建一个脚本来做一些检查,并将你的网站故障转移到另一个临时页面。(更改apache config或.htaccess)如果是硬件故障转移,那么DNS解决方案是可以的,但它不是立即的,因此您将丢失一些用户流量。
最理想的解决方案是使用代理(如HAProxy)将HTTP请求转发到至少两台over服务器,并自动检测其中一台服务器是否出现故障并切换到正常工作的服务器。
如果您使用的是Amazon AWS,则可以使用ELB - Elastic Load Balancer
https://stackoverflow.com/questions/1781406
复制相似问题