阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

探讨 DNS 解析

83次阅读
没有评论

共计 2592 个字符,预计需要花费 7 分钟才能阅读完成。

DNS 服务器

在现实世界中,当您进行阅览新闻、在线下单、下载文件或观看直播时,您需要通过访问域名来访问目标网站,例如 youtube.com、google.com 等。您只需记住这些网站的名称,而非它们的 IP 地址,因为与网站名称相比,IP 地址是很难记住的。因此,您需要一个作为 DNS 服务器的网站 / 域名地址本。

DNS 在日常生活中非常重要。每个在线的人都需要访问它,但同时,这对它来说也是一个非常大的挑战。如果 DNS 服务器出现故障,整个 Internet 网络都将关闭。

另外,上网的人分布在世界各地,如果每个人都去同一个地方访问某个服务器,延迟会非常大。因此,DNS 服务器必须设置为 高可用 高并发 分布式 的。

因此,它应具有如下树状层次结构:

探讨 DNS 解析

  • 根 DNS 服务器:返回顶级域 DNS 服务器的 IP 地址。
  • 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址。
  • 权威 DNS 服务器:返回对应主机的 IP 地址。

DNS 解析 过程

为了提高 DNS 解析性能,许多网络会根据位置部署 DNS 缓存服务器 DNS 解析过程 如下:(这里以访问 google.com 为例)

  • 客户端 会发出 DNS 请求 ,询问 google.com 的 IP 是什么,它会先在 浏览器缓存 中查找 google.com 的 IP 地址。
  • 然后请求将被发送到 本地 DNS 服务器 。本地 DNS 服务器由您的 网络服务供应商 (ISP, Internet Service Provider) 自动分配,这通常是您的 ISP 提供的路由器。
  • 本地 DNS 服务器 收到来自客户端的 DNS 请求,它会在其 缓存 中查找 google.com 的 IP 地址。如果它可以找到对应的条目,它将直接将 IP 地址返回给客户端。否则,本地 DNS 服务器会询问它的根域名服务器:“你能告诉我 google.com 的 IP 地址吗”?根域名服务器作为最高级别的 DNS 服务器,全球共 13 台。它不会直接解析域名,而起到一个“指路”的作用。
  • 根 DNS 服务器 收到本地 DNS 的请求,发现要查找域名的后缀是 .com,然后告诉本地 DNS 服务器:“好的,你要找的既然是 .com 后缀的域名,它是由 .com 管理的。这里是 .com 区域的 顶级域 DNS 服务器 的 IP 地址,去找它问吧”。
  • 本地 DNS 服务器 转向 .com 区域的 顶级域名服务器 ,并请求 google.com 的 IP 地址。顶级 .com 区域 DNS 服务器再次为该请求指明了方向。它提供了负责 google.com 的 权威 DNS 服务器 的 IP 地址。
  • 本地 DNS 服务器 然后转向了 权威 DNS 服务器 并询问 google.com 的 IP 地址。这次,google.com 的 权威 DNS 服务器 是域名解析结果的 原始来源 。它会将 google.com 的 IP 地址直接返回到 本地 DNS 服务器
  • 然后 本地 DNS 服务器 将 IP 返回给客户端 并将其 缓存。至此,DNS 解析完成

总结一下,我画了下面这张图:

探讨 DNS 解析

DNS 负载均衡

内部负载均衡

DNS 服务器首先进行 内部负载均衡。比如,应用要访问数据库,应该在应用中配置数据库的 IP 地址,还是应该配置数据库的域名呢?

很明显,应该配置域名,因为一旦数据库因为某种原因换到另一台机器上,如果多个应用都配置了这个数据库,一旦 IP 地址改变了,所有这些应用都需要重新修改。

但是,如果配置了域名,只要在 DNS 服务器中将域名映射到一个新的 IP 地址就完成了这项工作,如此大大简化了运维工作。

在此基础上,我们可以走得更远。例如,如何在访问它的多个应用程序之间进行负载均衡?只需将其配置为域名即可。在域名解析中,我们只需要配置策略,这次返回第一个 IP,下次返回第二个 IP,就可以实现负载均衡了。

全局负载均衡

为了保证我们的应用程序的 高可用性,它们经常被部署在多个计算机数据中心,而每个地方都会有自己的 IP 地址。

当用户访问一个域名时,这个 IP 地址可以轮询多个数据中心。如果某个数据中心由于某种原因宕机了,只要在 DNS 服务器中删除该数据中心对应的 IP 地址即可。这样就可以实现一定程度的高可用。

另外,我们肯定希望纽约的用户访问纽约的数据中心,西雅图的用户访问西雅图的数据中心,这样客户体验会非常好,访问速度会超级快。这就是 全局负载均衡 的概念。

我们来看看它是如何工作的,假设全国有多个地区,每个地区都有三个可用区域。

探讨 DNS 解析

  • 当客户端要访问 app.metaleap.com 时,需要将域名转换为 IP 地址才能访问,所以需要请求本地 DNS 解析器。
  • 本地 DNS 解析器首先检查本地缓存是否有此记录。如果有,直接使用。
  • 如果没有本地缓存,则需要请求本地 DNS 服务器。
  • 本地 DNS 服务器也需要检查本地是否有缓存,如果有则返回。
  • 如果没有本地 DNS,需要从根 DNS 服务器递归查找 .com 的顶级域名服务器,直到找到 metaleap.com 的权威 DNS 服务器,交给本地 DNS 服务器。权威 DNS 服务器通常会返回真实 IP 地址。

对于不需要 全局负载均衡 的简单应用,metaleap.com 的权威 DNS 服务器可以直接将域名 app.metaleap.com 解析为一个或多个 IP 地址,然后客户端可以使用多个 IP 地址进行轮询来实现 简单的负载均衡

但是对于复杂的应用,尤其是跨区域、跨数据中心的大型应用,需要更复杂的 全局负载均衡 机制,这需要专门的设备或服务器来做这件事——全局负载均衡器(GSLB,Global Load Balancer)

在 metaleap.com 的 DNS 服务器中,一般通过配置 CNAME,给 app.metaleap.com 起一个别名,如 app.vip.metaleap.com,然后告诉 本地 DNS 服务器 去请求 GSLB 来解析域名,GSLB 在解析这个域名的过程中,可以通过自己的策略来实现 负载均衡

图中绘制了两层 GSLB,分别为 数据中心 区域。我们希望不同数据中心的客户可以访问同一数据中心的资源,以提高吞吐量并减少延迟。

结论

DNS 是网络世界的通讯录,可以通过域名搜索地址,因为域名服务器是按树状结构组织的,所以域名搜索采用递归的方式,通过缓存来提升性能。

在域名和 IP 的映射过程中,应用程序有机会进行基于域名的负载均衡,可以是简单的负载均衡,也可以是基于地址、数据中心和区域的全局负载均衡。

链接:https://medium.com/geekculture/dns-deep-dive-421e321a0a06

(版权归原作者所有,侵删)

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-12-03发表,共计2592字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中