有没有办法本地化 dns 条目?这意味着,来自亚洲的用户将 mydomain.com 解析为另一个 IP,而不是来自美国或欧洲的用户。这将有助于为用户提供附近的服务器。DNS 是迄今为止唯一使用的技术,这意味着我无法放置一些软件路由或中央系统来代替 dns 来解决这个问题。
有没有办法本地化 dns 条目?这意味着,来自亚洲的用户将 mydomain.com 解析为另一个 IP,而不是来自美国或欧洲的用户。这将有助于为用户提供附近的服务器。DNS 是迄今为止唯一使用的技术,这意味着我无法放置一些软件路由或中央系统来代替 dns 来解决这个问题。
是的,目前有两种流行的解决方案来解决这个问题。
第一个称为
Anycast
,其中同一个 IP 块实际上在世界各地的多个位置使用。也就是说,您域的名称服务器始终返回相同的 IP 地址,但该 IP 地址实际上分配给了多组物理服务器。你可以在这里阅读更多关于它的信息http://en.wikipedia.org/wiki/Anycast
第二种技术再次涉及 AnyCast,但是这一次,被选播的 IP 地址范围是指我们的名称服务器本身。由于名称服务器也只会从最接近的客户端请求(由 BGP 的魔力决定),它们自己可以返回逻辑上对客户端本地的 IP 地址。
谷歌的 l.google.com 域就是一个例子
来自澳大利亚的房东
来自美国的主机
因此,CNAME
www.google.com
解析为www.l.google.com
,但是当您解决该问题时,根据您的位置,您的客户端会收到一组不同的 IP 地址。这是因为接收请求的名称服务器www.l.google.com
是本地名称服务器,相对于客户端。我有同样的问题。我们公司在俄罗斯和中国都有客户,他们都需要快速连接到我们的服务。我们使用 Amazon Route 53 Geo dns 并刚刚创建了两条记录,一条将客户从中国路由到我们的东京区域集群,将客户从俄罗斯路由到伦敦。
如果您只想本地化亚洲、北美和欧洲的服务器,那么您可以决定自己运行 webapp 和 DNS。
使用 DNS,您可以使用水平分割 DNS方法,这可以通过您的 DNS 服务器的集成功能(他们可能称之为GeoDNS)或通过将不同 IP 地址范围重定向到不同运行的防火墙来实现DNS 服务器的实例(您可以在本地计算机上运行服务器的多个不同副本,它们将侦听不同的本地 IP 地址)。
通过回复来自RIPE和 AfriNIC IP 地址的DNS 请求并
A
记录您在欧洲的主机、来自APNIC(亚洲主机)的请求以及来自/8块由ARIN、 LACNIC 和 /8 地址空间的其余部分管理,并A
记录您在北美的服务器。这在某些情况下会产生一些错误的结果(一些 /8 块在欧洲和北美之间共享,一些地址空间是任播等),但最坏的情况是受影响方的一些额外延迟,所以,它不应该没什么大不了的。(而且,是的,应该有一种方法可以让这些事情变得更容易,但是,到目前为止,似乎还没有。)