DNS 负载均衡

转自:http://blog.csdn.net/cywosp/article/details/38017027算法

 

    在上一篇文章(http://blog.csdn.net/cywosp/article/details/38014581)中讲到了使用HTTP重定向来实现服务器的负载均衡,本文则讲解另外一种实现服务器集群的负载均衡方案——DNS域名解析。
    DNS(Domain Name System)是因特网的一项服务,它做为域名和IP地址相互映射的一个分布式数据库,可以令人更方便的访问互联网。人们在经过浏览器访问网站时只须要记住网站的域名便可,而不须要记住那些不太容易理解的IP地址。在DNS系统中有一个比较重要的的资源类型叫作主机记录也称为A记录,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。若是你有一个本身的域名,那么要想别人能访问到你的网站,你须要到特定的DNS解析服务商的服务器上填写A记录,过一段时间后,别人就能经过你的域名访问你的网站了。DNS除了能解析域名以外还具备负载均衡的功能,下面是利用DNS工做原理处理负载均衡的工做原理图:
                
    由上图能够看出,在DNS服务器中应该配置了多个A记录,如:
      www.apusapp.com IN A 114.100.20.201;
      www.apusapp.com IN A 114.100.20.202;
      www.apusapp.com IN A 114.100.20.203;
所以,每次域名解析请求都会根据对应的负载均衡算法计算出一个不一样的IP地址并返回,这样A记录中配置多个服务器就能够构成一个集群,并能够实现负载均衡。上图中,用户请求www.apusapp.com,DNS根据A记录和负载均衡算法计算获得一个IP地址114.100.20.203,并返回给浏览器,浏览器根据该IP地址,访问真实的物理服务器114.100.20.203。全部这些操做对用户来讲都是透明的,用户可能只知道www.apusapp.com这个域名。

    DNS域名解析负载均衡有以下优势:
1. 将负载均衡的工做交给DNS,省去了网站管理维护负载均衡服务器的麻烦。
2. 技术实现比较灵活、方便,简单易行,成本低,使用于大多数TCP/IP应用。
3. 对于部署在服务器上的应用来讲不须要进行任何的代码修改便可实现不一样机器上的应用访问。
3. 服务器能够位于互联网的任意位置。
4. 同时许多DNS还支持基于地理位置的域名解析,即会将域名解析成距离用户地理最近的一个服务器地址,这样就能够加速用户访问,改善性能。
 
    同时,DNS域名解析也存在以下缺点:
1. 目前的DNS是多级解析的,每一级DNS均可能缓存A记录,当某台服务器下线以后,即便修改了A记录,要使其生效也须要较长的时间,这段时间,DNS任然会将域名解析到已下线的服务器上,最终致使用户访问失败。
2. 不可以按服务器的处理能力来分配负载。DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差别,不能反映服务器当前运行状态,因此其的负载均衡效果并非太好。
3. 可能会形成额外的网络问题。为了使本DNS服务器和其余DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分配,通常都要将DNS的刷新时间设置的较小,但过小将会使DNS流量大增形成额外的网络问题。

    事实上,大型网站老是部分使用DNS域名解析,利用域名解析做为第一级负载均衡手段,即域名解析获得的一组服务器并非实际提供服务的物理服务器,而是一样提供负载均衡服务器的内部服务器,这组内部负载均衡服务器再进行负载均衡,请请求发到真实的服务器上,最终完成请求。

 
 
参考:
[1] http://zh.wikipedia.org/zh/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F
[2] http://blog.csdn.net/flynetcn/article/details/3733574
[3] 《大型网站技术架构——核心原理与案例分析》
相关文章
相关标签/搜索