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 / 问题 / 424785
Accepted
IMB
IMB
Asked: 2012-09-06 19:42:36 +0800 CST2012-09-06 19:42:36 +0800 CST 2012-09-06 19:42:36 +0800 CST

如果不推荐 DNS 故障转移,那推荐什么?

  • 772

作为他非常受欢迎的问题的后续问题:为什么不推荐 DNS 故障转移?,我认为大家一致认为,由于缓存,DNS 故障转移并非 100% 可靠。

然而,投票最高的答案并没有真正讨论在两个不同数据中心之间实现故障转移的更好解决方案。提出的唯一解决方案是本地负载平衡(单个数据中心)。

所以我的问题很简单,跨数据中心故障转移的真正解决方案是什么?

domain-name-system
  • 3 3 个回答
  • 6846 Views

3 个回答

  • Voted
  1. symcbean
    2012-09-07T03:49:50+08:002012-09-07T03:49:50+08:00

    这开始是作为评论......但它变得太长了。

    可悲的是,前一个问题的大部分答案都是错误的:他们假设故障转移与 TTL 有关。投票最高的答案是错误的,特别是没有引用任何来源。TTL 应用于整个区域记录,与 Round Robin 无关。

    来自 RFC 1794(这是关于循环 DNS服务的全部内容)

    There is no use in handing out information with TTLs of an hour [or less]
    

    (IME 在你得到完全传播之前接近 3 小时)。

    来自 RFC 1035

    When several RRs of the same type are available for a
     particular owner name, the resolver should either cache them
     all or none at all
    

    RFC 1034 规定了负缓存的要求——一种指示所有请求必须从权威 DNS 服务器新鲜提供的方法(在这种情况下,TTL 确实控制故障转移)——根据我的经验,对此的支持各不相同。

    由于任何故障转移都必须在客户端堆栈的高层实施,因此可以说它不是 TCP/IP 或 DNS 的一部分——实际上,SIP、SMTP、RADIUS 和其他运行在 TCP/IP 之上的协议定义了客户端应该如何与 Round 一起工作Robin - RFC 2616 (HTTP/1.1) 值得注意的是没有提及它应该如何表现。

    然而,根据我的经验,在过去 10 年中编写的每个浏览器和大多数其他 HTTP 客户端都会透明地检查额外的 A RR,如果连接似乎花费的时间比预期的要长。不仅仅是我:

    • http://www.nber.org/sys-admin/dns-failover.html
    • http://blog.engelke.com/tag/client-retry/
    • http://support.rightscale.com/12-Guides/Designers_Guide/Cloud_Solution_Architectures/Designing_and_Deploying_High-Availability_Websites
    • http://www-archive.mozilla.org/docs/netlib/dns.html

    故障转移时间因实施而异,但在几秒钟内。这不是一个理想的解决方案,因为(由于 DNS 的限制)失败节点的发布采用 DNS TTL - 同时你必须依赖客户端检测。

    Round-Robin 不能替代站点内的其他 HA 机制。但它确实是对它的补充(编写 HAProxy 的人建议使用一对通过循环 DNS 访问的安装)。它是跨多个站点实现 HA 的最佳受支持机制:事实上,据我所知,它是标准客户端上可用的唯一受支持的故障转移机制。

    • 10
  2. Best Answer
    Skaperen
    2012-09-06T19:56:03+08:002012-09-06T19:56:03+08:00

    整个数据中心需要停机或无法访问才能应用。然后通过将 IP 地址路由到另一个数据中心,可以访问您在另一个数据中心的备份。这将通过不再提供来自主数据中心的 BGP 路由公告来实现。然后将使用来自辅助数据中心的辅助公告。

    较小的企业通常不够大,无法证明便携式 IP 地址分配的费用和他们自己的自治系统编号来宣布 BGP 路由。在这种情况下,提供者将多个位置是可行的方法。

    您要么必须通过原始 IP 地址联系到您,要么通过 DNS 更改 IP 地址联系到您。由于 DNS 的设计目的不是按照“故障转移”所需的方式执行此操作(用户可能至少在您的 TTL 或某些缓存服务器强加的 TTL 内无法访问),因此转到备份站点相同的 IP 是最好的解决方案。

    • 5
  3. Ben Lessani
    2012-09-07T05:17:48+08:002012-09-07T05:17:48+08:00

    双 DC 冗余的最简单方法是在两个站点之间使用 L2 MPLS VPN,同时维护两个站点之间的 BGP 会话。

    然后,您基本上可以为每个服务器拥有一个物理 IP 和一个在两者之间浮动的虚拟 IP(HSRP/VRRP/CARP 等)。您的 DNS 将被路由到这个特定的 IP 并相应地定向。

    下一个考虑因素是脑裂——但这是另一个问题了。

    Juniper 写了一篇关于使用 MPLS 进行双 DC 管理的优秀白皮书,您可以在此处获取 PDF http://www.juniper.net/us/en/local/pdf/whitepapers/2000407-en.pdf

    • 2

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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