dns - 使用 DNS 使用多个 A 记录进行故障转移

标签 dns

最近我注意到,为一个主机名设置多个 A 记录不仅可以用于循环负载平衡,还可以用于自动故障转移。

所以我尝试测试它:

  1. 我从我们的域加载了一个页面
  2. 记录了我们的哪些服务器为该页面提供了服务
  3. 关闭了该主机上的网络服务器
  4. 重新加载页面

事实上,浏览器会自动尝试不同的服务器来加载页面。这适用于 Opera、Safari、IE 和 Firefox。只有 Chrome 尝试不同的服务器失败。

但是在将该服务器离线几分钟并查看访问日志后,我发现对其他服务器的请求数量并没有显着增加。当 3 台服务器中有 1 台离线时,我预计对其余 2 台服务器的访问量大约会增加 50%,但我只看到了 7-10%。这只能意味着基于 DNS 的故障转移不适用于大多数浏览器/访问者,这与我刚刚测试的内容直接矛盾。

有人知道基于 DNS 的网络浏览器故障转移是怎么回事吗?自动故障转移对我有效但对大多数访问者无效的可能原因是什么?

最佳答案

发生的情况是浏览器没有执行自动 DNS 故障转移。

如果您在一个域上有多个 A 记录,那么当您的名称服务器请求您在浏览器中输入的域的 IP 时,它会向 SOA 请求一个记录。它可以是任何 A 记录。然后它传递它。

有些域名服务器足够“聪明”,可以在获取的 A 记录不起作用时请求新的 A 记录,而有些则不然。因此,如果您设置多个 A 记录,那么您将设置伪冗余故障转移,但仅限于那些拥有“智能”名称服务器的人。其余的则通过掷骰子来决定他们获得哪个 IP,如果有效,那么就很好,如果不能,那么它将无法加载,就像在 Chrome 中为您所做的那样。

如果你想专门测试这个,那么你可以使用 Windows 中的主机文件 C:\Windows\system32\drivers\etc\hosts/etc/hosts在 Linux 中指定您想要哪个 IP 与哪个域一起使用,以查看是否获得真正的故障转移 - 因为在实际中您将遇到的是网络上的 DNS 服务器将根据其 TTL 缓存您的域名解析。因此,如果/当您遇到真正的故障时,该 IP 仍然需要解析,否则会被外包给另一个名称服务器。

关于dns - 使用 DNS 使用多个 A 记录进行故障转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5319649/

相关文章:

amazon-web-services - AWS Route 53 如何实现基于延迟的路由?

javascript - Meteor.js 部署到 "example.com"还是 "www.example.com"?

Python DNS 解析器和原始 TTL

ruby-on-rails - CloudFlare SSL + Heroku 自定义域不起作用

windows - Chrome DNS 查找时间本地地址

amazon-web-services - 同一域上的两个不同 AWS 应用程序具有不同的子文件夹

linux - DNS 服务器 Oracle Linux、VirtualBox

google-app-engine - 如何使 google app engine 端点在 mailgun 域中得到验证

javascript - 有没有办法在 node.js 中枚举服务器的所有已知主机名?

c#:从域中获取 CNAME 和 MX 记录?