一个域名可能有多个对应的IP地址吗?


86

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

可能吗?我们可以为一个域名注册多个备份IP地址吗?


它不会完全以这种方式工作(使用循环)。如果您多次查询主机,则每次查询时都会返回不同的IP,而不仅仅是主机出现故障时。
karatedog

@karatedog,我以为如果套接字连接无法连接到第一个IP,套接字连接将尝试连接到下一个IP
Akash Kava 2012年

4
@AkashKava:单个连接具有多个内部步骤。简化:应用程序查询DNS并获取IP地址。然后,它连接到该IP地址。如果该连接失败,则只有明确进行编码后,应用程序才会返回第一步并再次查询DNS。而且多次查询DNS服务器不一定会为您提供不同的IP地址。简而言之,原始DNS无法用于负载平衡目的。
karatedog

我们可以使用这种技术来扩展多个负载均衡器吗?
Vikas Verma

Answers:


62

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


3
这取决于您对恢复时间的期望。如果提供的服务可能会停机几秒钟或几分钟,则可以相应地更新DNS(例如,取出发生故障的系统的IP)。如果这是不可接受的,则DNS无法帮助您,您必须使用负载平衡器和高可用性网络结构。
延斯·布拉德勒

您知道客户端如何从列表中选择其IP吗?是随机选择还是客户应该选择列表中的第一个?因为在第一种情况下,循环/循环不是很有用。
托比亚

DNS服务器的工作是混洗或轮换记录。大多数客户只会使用第一条记录。例如,可以将Bind9配置为对这种类型的记录集应用不同的排序:bind.isc.org/doc/arm/9.13/Bv9ARM.ch05.html#rrset_ordering
Jens Bradler

我们可以使用这种技术来扩展多个负载均衡器吗?
Vikas Verma

45

你能行的。大家伙也一样。

第一个查询:

» 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之间的相对顺序保持不变。

更新:我看到一些评论吹嘘DNS循环不方便进行故障转移,所以这里是摘要:DNS用于故障转移。因此,这显然不利于故障转移。它从未被设计为故障转移的解决方案。


1
我们是否需要启用某些功能才能使Round Robin正常工作或由每个DNS服务器自动完成?我有一个Linux和一个MS DNS。
Akash Kava 2012年

3
如果Google不涵盖故障转移,为什么要这么做呢?
Joseph Persie

12
@JosephPersie:因为DNS不用于故障转移。通过将多个IP赋予相同的域名,传入的请求就可以在监听这些IP地址的服务器之间简单地分配。可以将其视为没有后端运行状况检查的第一级负载平衡。如果您没有成千上万的服务器,则不需要此:-)
karatedog

当负载均衡器关闭并且请求转发到同一个均衡器时会发生什么?
Jitendra Vispute

1
@JitendraVispute:DNS不知道返回的IP地址背后的服务。简而言之,如果DNS服务器刚刚返回的IP地址后面有损坏的服务器或服务,则对该IP的请求将失败。
karatedog

2

是的,这是可能的,但是并不像詹斯所说的那样方便。使用像Alteon这样的下一代负载平衡器,它使用称为DSSP(分布式站点状态协议)的专有协议,该协议执行常规站点检查以确保该服务在本地或全球(即不同的地理区域)均可用。但是,您需要在主DNS中通过将URL或服务配置为该IP或服务的权威名称服务器来将URL或服务委派给该设备。通过执行此操作,设备将根据您从多个指标中选择的方式回答DNS查询,在该位置它将通过轮询解决具有服务或未拥塞的IP 。


1
这听起来像是广告,而不是任何东西,并且负载平衡器在DNS领域(在规范方面)并不是出色的执行者。确切地说:“在您的主DNS中委派URL或服务”时,在您将区域(域)委派给其他名称服务器时,域名服务器/ DNS中没有URL或服务的概念。“作为该IP或服务的权威名称服务器。” 因此,名称服务器是区域/域的权威,而不是IP地址或服务的权威。
Patrick Mevzek '18年

从工作的角度来看,它们确实有效,因为所有CDN都可以使用负载均衡器来有效地处理负载,这已成为事实上的标准,因为它们可以结合GEO-LOCATION之类的高级功能来提供甚至与您或您附近的IP地址。适用于对其他指标具有高度响应能力的服务器。
Ezra A.Mosomi

1
他们确实同时引入了许多问题。没有灵丹妙药,一切都有特色和缺点。任何名称服务器都可以进行地理位置定位并根据客户端使用不同的IP进行回复,而无需负载均衡器。甚至还有一个标准可以帮助您:EDNS客户端子网。
Patrick Mevzek '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.