【发布时间】:2017-07-07 21:09:18
【问题描述】:
Google 在多个位置拥有多台服务器。当我在网络浏览器中搜索 Google 时,DNS 如何将此名称映射到相应的 IP 地址? Google 在多个位置拥有多个服务器,具有不同的 IP。是否先使用负载均衡器?
【问题讨论】:
标签: web dns ip load-balancing
Google 在多个位置拥有多台服务器。当我在网络浏览器中搜索 Google 时,DNS 如何将此名称映射到相应的 IP 地址? Google 在多个位置拥有多个服务器,具有不同的 IP。是否先使用负载均衡器?
【问题讨论】:
标签: web dns ip load-balancing
大型反向代理服务器通常用于此目的,它还可以执行包括负载平衡在内的各种任务。对于客户端,您似乎只连接到一台服务器,而反向代理将服务器隐藏在其后面。
在小范围内,您可以通过将不同域名映射到不同 IP 地址的 DNS 设置来做类似的事情。见this article
【讨论】:
使用了几种不同的方法:
当请求域名时,DNS 服务器会查看发出请求的 IP 地址并返回附近服务器的 IP 地址。
处理大型共享缓存 DNS 服务器(如 ISP 名称服务器)需要一些复杂的扩展,但这是一般的想法。
Anycast 是一个奇怪的路由技巧,其中一个 IP 范围可以被多个 AS 通告。这将导致对该范围内 IP 地址的请求被路由到最近的服务器。
如果 DNS 服务器托管在任播 IP 上,则该服务器的不同实例可以配置为返回不同的 IP。这可以用作地理 DNS 的计算更简单的替代方案。
如果任播可用于将 DNS 路由到最近的服务器,为什么不直接进行下一步并使用它来路由 HTTP?
(事实证明,您通常不想这样做是有原因的:路由更改可能会中断 HTTP 连接。这不会影响 DNS,因为它通常通过 UDP 使用。不过,Cloudflare 还是会这样做,并且它通常工作正常……YMMV。)
【讨论】: