DNS服务器
在网络世界里,你肯定记得住网站的名称,但是记不住网站的IP地址,因而也需要一个地址簿,这就是DNS服务器。
- 根DNS服务器:返回顶级域DNS服务器的IP地址
- 顶级域DNS服务器:返回权威DNS服务器的IP地址
- 权威DNS服务器:返回相应主机的IP地址
DNS解析流程
为了提高DNS的解析性能,很多网络都会就近部署DNS缓存服务器。于是,就有了以下的DNS解析流程。
- 电脑客户端会发出一个DNS请求,问www.163.com的IP是啥啊,并发给本地域名服务器(本地DNS)。那本地域名服务器是什么呢?如果是通过DHCP配置,本地DNS由你的网络服务商(ISP),如电信、移动等自动分配,它通常就在你的网络服务商的某个机房。
- 本地DNS收到来自客户端的请求。你可以想象这台服务器上缓存了一张域名与之对应IP地址的大表格。如果能找到www.163.com,就直接返回IP地址,如果没有,本地DNS会去问它的根域名服务器:“老大,能告诉我www.163.com的IP地址吗”,根域名服务器是最高层次的,全球共有13套。它不直接用于域名解析,但能指明一条道路。
- 根DNS收到来自本地DNS的请求,发现后缀是.com,说:“哦,www.163.com啊,这个域名是由.com区域管理的,我给你它的顶级域名服务器的地址,你去问问它吧”
- 本地DNS转向问顶级域名服务器:“老二,你能告诉我www.163.com的IP地址吗?”,顶级域名服务器就是大名鼎鼎的比如.com、.net、.org这些一级域名,它负责管理二级域名,比如163.com,所以它能提供一个更清晰的方向
- 顶级域名服务器说:“我给你负责www.163.com区域的权威DNS服务器的地址,你去问应该能问到”
- 本地DNS转向问权威DNS服务器:“您好,www.163.com对应的IP是啥呀”,163.com的权威DNS服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主
- 权威DNS服务器查询后将对应的IP地址告诉本地DNS。
- 本地DNS再将IP地址返回给客户端,客户端和目标建立连接。
负载均衡
站在客户端角度,这是一次DNS递归查询过程。因为本地DNS全权为它效劳,它只要坐等结果即可。在这个过程中,DNS除了可以映射为IP地址,它还可以做另外一件事,就是负载均衡。
DNS可以做内部的负载均衡。
一个应用要访问数据库,在这个应用是配置数据库的IP地址还是域名呢,配置域名,因为域名可以在不更改代码的情况下,一旦数据库发生问题,通过DNS更换IP。
同理,访问应用的时候,也可以这样做
DNS可以做全局负载均衡
为了保证我们的高可用,我们会部署多个机房,每个地方都会有自己的IP地址。当用户访问某个域名的时候,这个IP地址可以轮询多个数据中心。如果一个数据中心因为某种原因挂了,只要在DNS服务器里面,就将这个数据中心对应的IP地址删除,这可以实现一定的高可用。
另外,我们希望上海的用户访问上海的数据中心,北京的用户访问北京的数据中心。这就是全局负载均衡的概念
示例:DNS访问数据中心对象资源
小结
- DNS是网络世界的地址簿,可以通过域名查地址,因为域名服务器是按照树状结构组织的,因而域名查找是使用递归的方法,并通过缓存的方式增强性能;
- 在域名和IP的映射过程中,给了应用基于域名做负载均衡的机会,可以是简单的负载均衡,也可以根据地址和运营商做全局的负载均衡。