秋天这么快就来了,感冒如风。
最后一公里,只是一种寻找路径的方式,DNS就是一种寻路。。
在容器中运行DNS
在这里主要使用的容器的镜像是基于bind的,在其中封装了图形界面,从而可以在界面上直接进行配置相关的参数。
1、 使用Dokcerfile来编译自己的镜像
2、 Dockerfile内容
3、 区域数据文件,主要用来解析域kel.com
4、 named的全局配置文件,主要是来配置acl权限
5、 测试运行
在容器中进行测试修改:
可能出现的报错:(主要是查看日志,rndc是远程管理工具,用来进行加载,生成缓存文件,)
在使用rndc的时候,如果出现无法连接,可能的原因是rndc未进行配置,也可能是设置了端口的限制;在使用文件的时候,注意named的进程属主是named,从而要选择合适的目录来存放文件,否则权限不够;当显示无递归,查询权限时,注意查看acl规则。
漫谈DNS
为什么要玩玩DNS呢?
DNS作为最基础的服务存在于系统之中,而再看DNS的发展历史,从一个小小的hosts文件,再到一个集中式下载的hosts文件,再到一个分布式存储,也可以看出来是在慢慢的发展,追求高可用,追求高性能。
DNS最主要的作用就是将IP地址和域名进行解耦,也就是你只需要使用域名即可,无须关注ip地址,我后端换了ip地址,对于客户端来说,是无感知的。
对于客户端来说,一般的配置文件就是在/etc/resolve.conf中,你可能是自己手动配置的,也可能是DHCP获取到的,也就是一个nameserver了,在这里就可以进行域名的解析,无论是递归的方式还是迭代的方式,而对于一个高可用的NS来说,一般都是配置两个,而这两个并不是主从的关系,或许两个都是主,都是可用的解析的NS。
DNS最终会发展到什么样的形态,其实也就是提供一个api接口,从而可以添加删除修改域,添加删除修改各种A记录等,能够动态的刷新即可了。
DNS主从,采用AXFR/IXFR进行增量或者全量的数据区域文件传输。
DNS可以做简单的负载均衡,主要是为了提供后端的服务,不过权威服务器不能清除客户端的缓存值,那么是否可以认为,这段时间内必然是业务有损的?
DNS---httpdns---CDN,基本上这种发展路线了。
其目的主要是为了解决用户访问的最后一公里问题,也就是所有的资源都离用户最近的地方,而对于目前所在的形势来说,这种还是比较困难的。
每个运营商,每个数据中心,所创建的DNS服务器都有自己的缓存,而每次请求了权威服务器之后,都会将结果进行缓存,而请求的时候,每次出去的ip都是NS的ip,从而并不是用户的真正的ip,从而,如何精确的定位用户所在的位置,也是一个非常大的问题。
对于DNS来说,不知道用户在哪里,因为你的NS地址是自己写的,而对于httpdns来说,就必须要使用dns的客户端了,然后发送一个http请求过去,而对于http请求,则有用户具体的ip地址,从而可以大致判断用户所在的位置,从而选择一个就近的ip地址返回给用户。
而对于CDN来说就更加厉害了,将所有请求的资源放在用户身边,也就是一些静态资源,视频等内容,直接放在缓存里,当用户请求的时候,会直接进行GSLB的调度,返回用户请求的资源,从而提高更快的响应速度。