【问题标题】:Is it possible that one domain name has multiple corresponding IP addresses?一个域名可以有多个对应的IP地址吗?
【发布时间】:2012-05-02 17:34:10
【问题描述】:

例如,当我们连接到www.example.com 时,首先我们尝试连接到192.0.2.1。如果第一次尝试失败,那么我们尝试192.0.2.222

有可能吗?一个域名可以注册多个备用IP吗?

【问题讨论】:

  • 它不会完全以这种方式工作(使用循环)。如果您多次查询主机,它会在您每次查询时返回不同的 IP,而不仅仅是在主机发生故障时。
  • @karatedog,我假设套接字连接如果无法连接到第一个 IP,它将尝试连接到下一个 IP
  • @AkashKava:一个连接有多个内部步骤。简化:应用程序查询 DNS 并获取 IP 地址。然后它连接到该 IP 地址。如果该连接失败,应用程序将不会返回到第一步并再次查询 DNS,除非明确编码执行此操作。多次查询 DNS 服务器不一定会给你不同的 IP 地址。所以简而言之,股票 DNS 不能用于负载平衡。
  • 我们可以使用这种技术来扩展多个负载均衡器吗?

标签: dns


【解决方案1】:

这是循环 DNS。这是一个非常简单的负载平衡解决方案。通常,DNS 服务器会为每个传入的 DNS 请求轮换/打乱 DNS 记录。不幸的是,这不是故障转移的真正解决方案。如果其中一台服务器发生故障,一些访问者仍将被定向到这台发生故障的服务器。

【讨论】:

  • 这取决于您对恢复时间的期望。如果提供的服务可能会关闭几秒钟或几分钟,您可以相应地更新 DNS(例如取出故障系统的 IP)。如果这不可接受,DNS 无法帮助您,您必须使用负载平衡器和高可用性网络结构。
  • 你知道客户端如何从列表中选择它的ip吗?是随机选择还是客户应该选择列表中的第一个?因为在第一种情况下,循环/循环不是很有用。
  • DNS 服务器的工作是洗牌或轮换记录。大多数客户端将只使用第一条记录。例如 Bind9 可以配置为对这种类型的记录集应用不同的排序:bind.isc.org/doc/arm/9.13/Bv9ARM.ch05.html#rrset_ordering
  • 我们可以使用这种技术来扩展多个负载均衡器吗?
【解决方案2】:

你可以做到。大个子也一样。

第一个查询:

» host google.com 
google.com has address 74.125.232.230
google.com has address 74.125.232.231
google.com has address 74.125.232.232
google.com has address 74.125.232.233
google.com has address 74.125.232.238
google.com has address 74.125.232.224
google.com has address 74.125.232.225
google.com has address 74.125.232.226
google.com has address 74.125.232.227
google.com has address 74.125.232.228
google.com has address 74.125.232.229

下一个查询:

» host google.com
google.com has address 74.125.232.224
google.com has address 74.125.232.225
google.com has address 74.125.232.226
google.com has address 74.125.232.227
google.com has address 74.125.232.228
google.com has address 74.125.232.229
google.com has address 74.125.232.230
google.com has address 74.125.232.231
google.com has address 74.125.232.232
google.com has address 74.125.232.233
google.com has address 74.125.232.238

如您所见,IP 列表旋转,但两个 IP 之间的相对顺序保持不变。

更新:我看到几个 cmets 吹嘘 DNS 循环如何不方便进行故障转移,所以这里是总结:DNS 用于故障转移。所以这显然不适合故障转移。它从未被设计为故障转移解决方案。

【讨论】:

  • 我们是否必须启用某些东西才能使此循环运行,还是由每个 DNS 服务器自动完成?我有一个 linux 和一个 MS DNS。
  • 如果不涵盖故障转移,谷歌为什么要这样做?
  • @JosephPersie:因为 DNS 不用于故障转移。通过将多个 IP 分配给同一个域名,传入的请求简单地在侦听这些 IP 地址的服务器之间进行拆分。将其视为一级负载平衡,无需后端健康检查。如果您没有数千台服务器,则不需要这个:-)
  • 当负载均衡器关闭并且请求被转发到同一个均衡器时会发生什么?
  • @JitendraVispute:DNS 不知道它返回的 IP 地址背后的服务。简而言之,如果DNS服务器刚刚返回的IP地址后面有损坏的服务器或损坏的服务,那么对该IP的请求将失败。
【解决方案3】:

是的,这是可能的,但正如 Jens 所说的那样不方便。使用像 Alteon 这样的下一代负载平衡器,它使用称为 DSSP(分布式站点状态协议)的专有协议,该协议执行定期站点检查,以确保服务在本地或全球(即不同的地理区域)可用。但是,您需要在您的主 DNS 中通过将其配置为该 IP 或服务的 Authoritative Name Server 来将 URL 或服务委派给设备。通过这样做,设备会回答 DNS 查询,根据您从多个指标中选择的方式,它将通过 Round-Robin不拥塞 来解析具有服务的 IP .

【讨论】:

  • 这听起来更像是广告而不是任何东西,负载均衡器在 DNS 世界中并不是出色的表现者(就规范而言)。准确地说:“在您的主 DNS 中委派 URL 或服务”在名称服务器/DNS 中没有 URL 或服务的概念,当您委派您将区域(域)委派给其他名称服务器时。 “作为该 IP 或服务的权威名称服务器。”因此,名称服务器对区域/域具有权威性,而不是 IP 地址或服务。
  • 从工作的角度来看,它们确实有效,所有 CDN 都使用负载均衡器来有效地处理这一点已成为事实上的标准,因为它们可以结合 GEO-LOCATION 等高级功能来提供甚至在您附近的 IP 地址或在其他指标中具有高度响应性的服务器的 IP 地址。
  • 它们确实同时引入了许多问题。没有灵丹妙药,一切都有特点和缺点。任何名称服务器都可以根据客户端进行地理定位并使用不同的 IP 进行回复,无需负载均衡器。甚至还有一个标准可以提供帮助:EDNS 客户端子网。
猜你喜欢
  • 2022-08-20
  • 1970-01-01
  • 2014-06-18
  • 2020-05-27
  • 1970-01-01
  • 2012-11-30
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多