我将运行一个动态网站,如果服务器停止响应,我想将故障转移到一个显示“我们正在维护”页面的静态网站。我一直在阅读,我发现动态切换 DNS 可能是一种选择,但这种变化会发生多快?每个人都会立即看到变化吗?有没有更好的方法来故障转移到另一台服务器?
3 回答
DNS 有一个 TTL(生存时间)并被缓存,直到 TTL 过期。因此 DNS 切换不会立即发生。每个对您的站点进行缓存 DNS 查找的人仍然使用旧值。你可以设置一个非常短的 TTL,但这对性能来说很糟糕。DNS 几乎肯定不是完成您正在做的事情的正确方法。
负载均衡器可以进行这种立即切换。所有流量总是首先到达负载均衡器,在正常情况下,负载均衡器会将请求代理到您的主 Web 服务器。在 Web 服务器崩溃的情况下,您可以让负载均衡器将所有 Web 流量引导到您的故障转移 Web 服务器。
磅、perlbal 或其他软件负载平衡器可以做到这一点,我相信,是的
也许甚至 Apache 重写规则也允许这样做?不过,我不确定当动态服务器不可用时是否有办法进行分支。根据您的喜好自定义 Apache 404 响应?
首先重要的是要了解您想要故障转移的哪种故障,如果它是应用程序/数据库错误并且服务器保持运行,您可以创建一个脚本来进行一些检查并将您的网站故障转移到另一个临时页面。(更改 apache 配置或 .htaccess)如果是硬件故障转移,DNS 解决方案是可以的,但它不是立即的,所以你会失去一些用户流量。
最理想的解决方案是使用代理(如 HAProxy)将 HTTP 请求转发到至少 2 个网络服务器,并自动检测其中一个是否发生故障并切换到工作的那个。
如果您使用的是 Amazon AWS,您可以使用 ELB - Elastic Load Balancer