我们在全球设有多个办事处,但我们的数据中心主要位于两个中心位置(北美和欧洲)。各个办公室之间存在相对较高的延迟,因此我们尝试将服务托管在离用户最近的位置(即加拿大员工在美国使用 Exchange 服务,而不是在欧洲。)
此设置在大多数情况下运行良好。在使用 Active Directory、Exchange 或 DFS 等服务时,客户端依靠 AD 中的现有站点信息来确定最近的位置。
现在,我们请求拥有一个通用 DNS 名称来访问托管在北美和欧洲的某些 Web 服务。以前,我们使用单独的 DNS 名称(na-service.domain.local 或 eu-service.domain.local),但这对我们的最终用户来说变得很麻烦。
我们所有的内部 DNS 目前都托管在使用 Microsoft DNS 的 Windows 2003 和 2008 服务器上。有没有办法将 Microsoft DNS 服务配置为仅响应具有“本地”IP 地址的请求?我知道配置多个 A 记录会导致循环式响应,这并不理想。我们也可以在每个位置使用主区域并且只输入本地 IP 地址,但是我们还有数百个其他 DNS 条目需要手动复制到每个服务器。
如果这不能用 MS DNS 完成,还有其他低成本的替代方案吗?我知道 F5 Networks 有可以处理这个问题的产品,但这是相当高的费用。
您可能会对 Microsoft DNS 服务器中的“子网优先级”功能感到满意。它是否对您有帮助取决于您的子网的寻址方式以及地理“本地”服务器的寻址方式。此功能在 Windows Server 2003 和 2008 中默认启用。
我建议阅读该功能。查看“子网优先级”标题下的http://technet.microsoft.com/en-us/library/dd197495(WS.10).aspx 。
BIND 中的“查看”功能可能也可以满足您的需求,但是您谈论的是部署并行 DNS 基础设施和大量配置。
如果您可以控制基于 Web 的应用程序,您可以做一些现成的事情,例如嵌入一些 Javascript 来“检测”用户的位置并在客户端重定向它们。这有点像丛林联盟,但它可能会满足您的需求。
我在工作中曾多次问过这个问题,尽管它从未得到实施,所以这对我来说是纯粹的理论。
我能想出的最好的解决方案(hack?)是拥有一个不被复制的通用 dns 子域。然后只需将本地服务器放入该设置中。所以你会有这样的事情:
NA DNS 服务器
service.domain.local
web01.service.domain.local -> 10.10.10.200
欧盟 DNS 服务器
service.domain.local
web01.service.domain.local -> 10.200.200.200
因此,连接到 web01.service.domain.local 的客户端将从默认 dns 服务器中获取服务的本地 IP。您可以让它们在 EU 和 NA 内部复制,但不要在 EU 和 NA 之间复制区域。
正如先前的答案所述,BIND 的视图看起来像您想要的。它允许名称服务器将同一名称服务器的不同配置呈现给您定义的客户端组。
可以通过单独的 IP 地址或前缀(如 10.10.1.192/26)定义这些组。希望您的欧盟和美国东道主可以通过这种方式加以区分。
很好的附带好处:您的两台服务器可以(几乎)相同地配置,BIND-wise,因此可以充当彼此的故障转移。
考虑 Views 的一个好方法是它是 DNS 服务器的虚拟化版本。有点。
BIND 可在 www.isc.org 免费获得。
Windows Server 2016 DNS 中的新功能允许您定义策略来处理此类场景。更多信息可以在这里找到。
解决方案是否必须通过 DNS 完成?如果不是,这听起来像是IP Anycast的完美候选者。有关更多详细信息,请参阅此问题,但简而言之,它是一种网络架构,允许您从多个位置通告相同的 IP 地址,客户端路由到 IP 的“最近”(从网络成本的角度来看)实例。这样,您可以简单地为您的 DNS 记录指向一个全局 VIP(虚拟 IP)。
除了 BIND Views,新版本的 Windows Server(目前处于技术预览阶段)还有一个名为DNS Policies的功能,它看起来非常有希望实现您的目标。
我遇到过同样的问题。如果域是 domain.local 并且我希望 webmail.domain.local 根据站点做出不同的响应,我创建了一个新区域webmail.domain.local(非 AD 集成)并在 webmail 服务器的本地 IP 地址中添加了一个通配符条目.
该域没有在任何地方复制,但我在每个站点上都使用了主/从配置以实现冗余。
尽管如果您需要在许多站点上经常维护,这将变得一团糟。