【问题标题】:Webserver failover网络服务器故障转移
【发布时间】:2016-02-06 21:14:22
【问题描述】:

我将运行一个动态网站,如果服务器停止响应,我想将故障转移到显示“我们因维护而停机”页面的静态网站。我一直在阅读,我发现动态切换 DNS 可能是一种选择,但这种变化会发生多快?每个人都会立即看到变化吗?有没有更好的方法来故障转移到另一台服务器?

【问题讨论】:

  • 这类问题最好在 serverfault.com 上解决

标签: dns webserver failover


【解决方案1】:

DNS 有一个 TTL(生存时间)并被缓存直到 TTL 过期。因此,DNS 切换不会立即发生。每个对您的站点进行缓存 DNS 查找的人仍然使用旧值。你可以设置一个非常短的 TTL,但这对性能来说很糟糕。 DNS 几乎肯定不是完成您正在做的事情的正确方法。

负载平衡器可以进行这种即时切换。所有流量总是首先到达负载均衡器,在正常情况下,负载均衡器会将请求代理到您的主 Web 服务器。在 Web 服务器崩溃的情况下,您可以让负载均衡器将所有 Web 流量定向到您的故障转移 Web 服务器。

【讨论】:

  • 谢谢!这正是我正在寻找的信息。我担心更改 DNS 会花费太长时间。如果我的服务器位于两个不同的位置,如果主服务器停机,我是否能够使用负载均衡器将负载切换到另一台服务器?
  • @yummm:只要负载均衡器处理请求,它就会将它定向到您告诉它的任何地方。顺便说一句,通常是负载均衡器和它路由到的 Web 服务器物理上靠得很近(在同一建筑物中)。此外,如果您无权访问硬件负载平衡器,例如。 F5(好贵!),看看 haproxy,一个软件负载均衡器(被 StackOverflow 使用!)。
  • 唯一的问题是我在 Windows 服务器上。 haproxy 似乎不支持 Windows。你知道有什么类似的东西可以在 Windows 操作的机器上运行吗?
  • @yummm:我不知道有一个好的 Windows 软件负载平衡器。顺便说一句:StackOverflow 在 Windows 上运行,前面有 haproxy(可能在 Linux 服务器上)。
【解决方案2】:

磅、perlbal 或其他软件负载平衡器可以做到这一点,我相信,是的

也许甚至 Apache 重写规则也允许这样做?不过,我不确定当动态服务器不可用时是否有办法进行分支。根据您的喜好自定义 Apache 404 响应?

【讨论】:

    【解决方案3】:

    首先重要的是要了解您想要故障转移的哪种故障,如果是应用程序/数据库错误并且服务器保持正常运行,您可以创建一个脚本来执行一些检查并将您的网站故障转移到另一个临时页面。 (更改 apache 配置或 .htaccess) 如果是硬件故障转移,DNS 解决方案是可以的,但它不是即时的,因此您会丢失一些用户流量。

    最理想的解决方案是使用代理(如 HAProxy)将 HTTP 请求转发到至少 2 个网络服务器,并自动检测其中一个是否发生故障并切换到工作的那个。

    如果您使用的是 Amazon AWS,则可以使用 ELB - 弹性负载均衡器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 2021-02-01
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 2018-06-13
      • 2012-09-14
      相关资源
      最近更新 更多