AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 6702
Accepted
holiveira
holiveira
Asked: 2009-05-10 13:30:33 +0800 CST2009-05-10 13:30:33 +0800 CST 2009-05-10 13:30:33 +0800 CST

如果发生故障,如何自动更改 DNS A 记录以将我的站点指向辅助服务器?

  • 772

我的主机向我收取每月 50 美元的费用,以将我的服务器放在同一个 VLAN 上,以便我使用网络负载平衡功能创建一个集群。

我真的不需要在服务器之间分配负载,我正在寻找一种简单的方法来创建故障转移方案以防止服务器故障。但是,我认为这笔费用有点贵。

有什么方法可以在不使用 NLB 的情况下创建集群?也许是监视我的主服务器并在它出现故障时更改域的 DNS 的东西?

domain-name-system load-balancing failover
  • 5 5 个回答
  • 9625 Views

5 个回答

  • Voted
  1. Best Answer
    Dave Cheney
    2009-05-10T19:47:34+08:002009-05-10T19:47:34+08:00

    DNS 是模拟故障转移的糟糕选择。原因是

    • DNS 记录一段有效时间,为了实现实时故障转移,您需要将 DNS 条目上的 TTL 降低到如此低,以至于对您站点的每个请求都会导致 DNS 查找。这将严重减慢访问者的体验
    • 有人怀疑即使在今天,具有非常低 TTL 值的 DNS 整体也不会受到 ISP 和较旧的损坏名称服务器的尊重。
    • 使用 Round Robin DNS 不会提供故障转移,因为平均 50% 的请求将发送到列出的每个 IP。如果 HTTP 的更高级别协议内置了重试,这实际上会起作用。

    我的建议是

    • 如果您的第二台服务器在同一家托管公司,请考虑租用真正的负载均衡器,供您自己使用,或者大多数托管公司可以向您租用其共享负载平衡基础设施的一部分
    • 使用诸如 spread 或 linux HA 服务器之类的东西将服务分配给在物理服务器之间传递的浮动虚拟 IP。集群中的服务器相互监视并决定谁是虚拟 IP 的当前所有者。

    我强烈推荐阅读Theo Schlossnagle的Scalable Internet Architectures ,因为他详细介绍了这一点

    • 9
  2. Brent
    2009-05-10T16:13:57+08:002009-05-10T16:13:57+08:00

    您可以使用ldirectord设置一个单独的负载平衡框,它监视您的 Web 服务器,并在当前活动的任何服务器之间进行负载平衡(并且通过扩展,在一台服务器出现故障时保持站点正常运行)。我们使用此解决方案允许我们重新启动两个网络服务器中的任何一个,而不会影响站点的正常运行时间。

    事实上,如果你的网络服务器是 linux 机器,你可以在网络服务器本身上运行ldirectord,并使用心跳来保持ldirectord在 live 机器上运行。

    此解决方案允许您在两个或多个盒子之间共享一个公共 IP 地址(或多个),并完全避免 DNS 问题。

    • 2
  3. Justin Scott
    2009-05-10T14:03:19+08:002009-05-10T14:03:19+08:00

    一种方法是将您的站点放在两台不同的服务器上,然后在第三个位置设置一个站点监视器,以监视与主服务器(您的 DNS 通常指向的位置)的连接。如果它检测到站点已关闭,请让监视器执行脚本或点击动态 dns 提供商的更新 URL(例如DtDNS [我运营的] 或DynDNS.com),其中指定了备份服务器的 IP 地址您的域名/主机名。这将更新 DNS 记录并将流量定向到您的备份 Web 服务器。当主站点重新上线时,监控可以运行另一个脚本或 URL,将“真实”IP 恢复。

    这里的一个关键是让 DNS 托管在一个在其系统中具有 API 的提供商处,以便您的域可以快速更新,并保持 TTL 足够低,以便访问者可以相对快速地被重定向。

    另一个是必须从外部、客观的位置监控该站点。您不能在站点所在的同一 Web 服务器上运行监控。如果整个服务器宕机,监控/更新方法也会随之宕机。

    • 1
  4. John McC
    2009-05-10T14:18:33+08:002009-05-10T14:18:33+08:00

    SimpleFailover或多或少可以满足您的需求。记住 DNS 被缓存,所以它不是一个完美的解决方案。

    关于多个 A 记录,我最近看到了有关 Vista 和 Win Server 2008 实施RFC3484的讨论,这意味着您不能依赖循环,并且可能会从这些客户端获得不均匀的服务器负载。

    • 1
  5. Brent
    2009-05-10T16:09:26+08:002009-05-10T16:09:26+08:00

    DNS Made Easy允许您设置您的 DNS,以便如果服务器关闭,它会将您指向其他地方。在我们的例子中,我们有一个静态页面显示该站点已关闭,请稍后再试。

    如果以这种方式使用 DNS,则需要配置一个相对较短的 TTL 来绕过缓存问题。

    • 1

相关问题

  • 使用 IIS7 请求路由和负载平衡模块进行负载平衡

  • 为手动故障转移设置 linux Web 服务器的最有效方法是什么

  • 动态更新 /etc/resolv.conf 中列出的解析器

  • 内部名称解析

  • 软件http负载均衡器?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve