读书笔记:DNS原理与负载均衡

本篇主要介绍DNS原理以及如何利用DNS实现负载均衡,知识点来源于《linux运维最佳实践》

作用

DNS实现了域名到ip的映射

组成部分

域名服务器:监听udp、tcp的53端口,提供域名解析服务

解析器:访问域名服务器,并解析从域名服务器返回的结果

域名服务器的分类

权威域名服务器:又分为根域名服务器、顶级域名服务器、二级域名服务器,其中根域名服务器负责对.com、.cn、.org等顶级域名的向下授权,顶级域名服务器负责.com、.cn授权的服务器,二级域名服务器负责解析如sdo.com域的服务器

举个例子:获取www.example.cn的ip地址,首先向根域名服务器询问负责.cn域名解析的服务器地址,获取到结果后,向负责.cn域名解析的服务器(顶级域名服务器)询问负责example.cn域名解析的服务器地址,然后向负责example.cn域名解析的服务器(二级域名服务器)查询www.example.cn的ip地址

缓存域名服务器:负责接收解析器发来的dns请求,通过一次查询根域名服务器->顶级域名服务器->二级域名服务器来获得dns的解析条目,然后把响应结果返回给解析器,同时根据dns条目的ttl值进行缓存,下次有相同的dns请求时,直接返回缓存数据即可

转发域名服务器:负责转发dns请求,并返回结果给解析器

域名服务器的两种查询机制

递归查询:缓存服务器的查询机制,依次访问根域名服务器、顶级域名服务器、二级域名服务器获取最终的结果

迭代查询:权威域名服务器的查询机制,比如根域名服务器只会返回授权的顶级域名服务器列表,并不会代替客户端去访问顶级域名服务器,权威域名服务器是禁用递归查询的,因为如果配置成递归查询的话将会对权威域名服务器造成流量冲击,影响正常业务提供

构建自己的域名解析缓存

可利用域名缓存软件如nscd缓存域名解析结果,这样可以优化dns相应速度并且减少了dns对外部网络的依赖

利用BIND实现负载均衡

DNS实现了域名到ip的映射,当然最简单的情况是一个域名只映射到一个ip地址,但是在大型互联网服务构建过程当中并不会采用这种映射方式。很多情况下,一个域名可以映射到多个ip,不同地方用户获得的ip地址也可能不一样,这就可以实现就近服务、流量分发等功能

可以利用BIND实现DNS负载均衡,在BIND中,DNS的条目成为资源记录,资源记录的种类很多,但是常用的有A记录、CNAME记录和NS记录,一个域名可以有多个A记录,这些A记录的ip地址不同,那么每次访问BIND请求该域名的ip地址时,BIND会轮训返回不同的ip地址达到负载均衡的效果


cache1        IN        A        211.100.56.4
cache1        IN        A        211.100.56.5
cache1        IN        A        211.100.56.6


A记录:实现域名到ip的解析
CNAME记录:记录了域名的别名
NS记录:指定下级权威域名服务器

BIND还有更详尽的视图,可以解决如不同运营商用户如何获取更好的服务等问题,这里就不一一介绍了

总结

DNS是互联网领域最重要的系统之一,深入了解DNS原理有助于解决因DNS引发的相关问题或故障,DNS负载均衡也是实现互联网架构负载均衡的一种策略。

你可能感兴趣的