DNS协议

DNS协议

  • DNS 是网络世界的地址簿,可以通过域名查地址,因为域名服务器是按照树状结构组织的,因而域名查找是使用递归的方法,并通过缓存的方式增强性能
  • 在域名和 IP 的映射过程中,给了应用基于域名做负载均衡的机会,可以是简单的负载均衡,也可以根据地址和运营商做全局的负载均衡。

DNS服务器:记得住网站的名称,但是很难记住网站的 IP 地址,因而也需要一个地址簿

由此可见,DNS 在日常生活中多么重要。每个人上网,都需要访问它,但是同时,这对它来讲也是非常大的挑战。一旦它出了故障,整个互联网都将瘫痪。另外,上网的人分布在全世界各地,如果大家都去同一个地方访问某一台服务器,时延将会非常大。因而,DNS 服务器,一定要设置成高可用、高并发和分布式的。于是,就有了这样树状的层次结构。

img

DNS 解析流程

DNS解析域名的过程其实是一个自顶向下的过程

  1. 电脑客户端会发出一个 DNS 请求,在本地DNS服务器中进行要访问的网址的地址薄的查找。如果是通过 DHCP 配置,本地 DNS 由你的网络服务商(ISP),如电信、移动等自动分配,它通常就在你网络服务商的某个机房。
  2. 在本地DNS服务器中回有客户端请求域名的相应ip的记录
    1. 如果有,就直接返回ip地址
    2. 如果没有,本地 DNS 会去问它的根域名服务器
  3. 根 DNS 收到来自本地 DNS 的请求,发现后缀是 .com,这个域名是由.com 区域管理,转向顶级域名服务器。
  4. 本地 DNS 转向问顶级域名服务器,顶级域名服务器比如 .com、.net、 .org 这些一级域名,它负责管理二级域名,比如 163.com,所以它能提供一条更清晰的方向。
  5. 顶级域名服务器回复 www.163.com 区域的权威 DNS 服务器的地址
  6. 本地 DNS 转向问权威 DNS 服务器
  7. 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。
  8. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。
img

总结一下就是:本地DNS缓存-》本地DNS服务器(运营商)-》根域名服务器(.com)-》顶级域名服务器(163.com)-》权威域名服务器-》权威服务器回复ip地址给本地DNS-》本地DNS返回ip给客户端

DNS 内部负载均衡

例如,一个应用要访问数据库应该配置域名,因为一旦这个数据库,因为某种原因,换到了另外一台机器上,而如果有多个应用都配置了这台数据库的话,一换 IP 地址,就需要将这些应用全部修改一遍。但是如果配置了域名,则只要在 DNS 服务器里,将域名映射为新的 IP 地址,这个工作就完成了,大大简化了运维。

在这个基础上,我们可以再进一步。例如,某个应用要访问另外一个应用,如果配置另外一个应用的 IP 地址,那么这个访问就是一对一的。但是当被访问的应用撑不住的时候,我们其实可以部署多个。但是,访问它的应用,如何在多个之间进行负载均衡?只要配置成为域名就可以了。在域名解析的时候,我们只要配置策略,这次返回第一个 IP,下次返回第二个 IP,就可以实现负载均衡了。

DNS 全局负载均衡

**全局负载均衡,就是就近访问原则。**为了保证我们的应用高可用,往往会部署在多个机房,每个地方都会有自己的 IP 地址。当用户访问某个域名的时候,这个 IP 地址可以轮询访问多个数据中心。如果一个数据中心因为某种原因挂了,只要在 DNS 服务器里面,将这个数据中心对应的 IP 地址删除,就可以实现一定的高可用。

DNS 访问数据中心中对象存储上的静态资源

  1. 访问 object.yourcompany.com,需要将域名转换为 IP 地址进行访问,所以它要请求本地 DNS 解析器。
  2. 本地 DNS 解析器先查看看本地的缓存是否有这个记录。
  3. 如果本地无缓存,则需要请求本地的 DNS 服务器。
  4. 本地的 DNS 服务器一般部署在你的数据中心或者你所在的运营商的网络中,本地 DNS 服务器也需要看本地是否有缓存,如果有则返回
  5. -7. 如果本地没有,本地 DNS 才需要递归地从根 DNS 服务器,查到.com 的顶级域名服务器,最终查到 yourcompany.com 的权威 DNS 服务器,给本地 DNS 服务器,权威 DNS 服务器会返回真实要访问的 IP 地址,返回ip地址时候有两种负载均衡方案。
    1. 不需要做全局负载均衡
      • yourcompany.com 的权威 DNS 服务器可以直接将 object.yourcompany.com 这个域名解析为一个或者多个 IP 地址,然后客户端可以通过多个 IP 地址,进行简单的轮询,实现简单的负载均衡。
    2. 需要做全局负载均衡 主要针对:跨地域跨运营商的大型应用
      • 本地DNS通过层层递归的方式,到权威DNS,权威DNS通过CNAME,返回给本地DNS,让DNS到第一层GSLB去解析CNAME的IP
      • 两层GSLB,先找运营商,再找地理位置
        • 第一层 GSLB,通过查看请求它的本地 DNS 服务器所在的运营商,就知道用户所在的运营商。假设是移动,通过 CNAME 的方式,通过另一个别名,告诉本地 DNS 服务器去请求第二层的 GSLB。
        • 第二层 GSLB,通过查看请求它的本地 DNS 服务器所在的地址,就知道用户所在的地理位置,然后将距离用户位置比较近的 Region 里面,六个内部负载均衡(SLB,Server Load Balancer)的地址,返回给本地 DNS 服务器。
        • 本地 DNS 服务器将结果返回给本地 DNS 解析器。
        • 本地 DNS 解析器将结果缓存后,返回给客户端。
        • 客户端开始访问属于相同运营商的距离较近的 Region 1 中的对象存储,当然客户端得到了六个 IP 地址,它可以通过负载均衡的方式,随机或者轮询选择一个可用区进行访问。对象存储一般会有三个备份,从而可以实现对存储读写的负载均衡。
img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值