让DNS运行在容器中

序言

    秋天这么快就来了,感冒如风。


    最后一公里,只是一种寻找路径的方式,DNS就是一种寻路。。

在容器中运行DNS

  在这里主要使用的容器的镜像是基于bind的,在其中封装了图形界面,从而可以在界面上直接进行配置相关的参数。

    1、 使用Dokcerfile来编译自己的镜像

让DNS运行在容器中

    2、 Dockerfile内容

让DNS运行在容器中

    3、 区域数据文件,主要用来解析域kel.com

让DNS运行在容器中

    4、 named的全局配置文件,主要是来配置acl权限

让DNS运行在容器中

    5、 测试运行

让DNS运行在容器中

    在容器中进行测试修改:

让DNS运行在容器中

    可能出现的报错:(主要是查看日志,rndc是远程管理工具,用来进行加载,生成缓存文件,)

让DNS运行在容器中

    在使用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的调度,返回用户请求的资源,从而提高更快的响应速度。


上一篇:信号在PCB板上的传输速度的计算方法


下一篇:AEC—exposure table