使用DNSPod来处理网站的均衡负载(转)
add by zhj:配置倒是蛮简单的,其实就是把域名与多个IP进行关联,在数据库中实现这个应该也是蛮简单的。
原文:http://kb.cnblogs.com/page/75571/
首先介绍下DNSPod。DNSPod 是一款免费智能DNS产品。DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的
服务器,网通的用户访问网通的服务器,达到互联互通的效果。能够让使用双线路或拥有多镜像的网站站长轻松实现智能DNS解析,让用户仅用单域名即可访问
到最快速的镜像。
如上图,我们可以给不同的线路(电信、网通、教育网)设置不同的IP(服务器),除此之外,DNSPod还支持,DNS轮询功能,可帮助网站进行均衡负
载。如下图:
接下来需要介绍下什么是DNS轮询。大多域名注册商都支持多条A记录的解析,其实这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,逐一分配
到不同的IP上,这样就完成了简单的负载均衡。
优点
- 基本上无成本,因为往往域名注册商的这种解析都是免费的;
- 部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网IP即可。
缺点
- 健康检查,如果某台服务器宕机,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。修改DNS记录全部生效起码要3-4小时,甚至更久;
- 分配不均,如果几台Web服务器之间的配置不同,能够承受的压力也就不同,但是DNS解析分配的访问却是均匀分配的。其实DNS也是有分配算法的,可以根据当前连接较少的分配、可以设置Rate权重分配等等,只是目前绝大多数的DNS服务器都不支持;
- 会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DNS解析无法将验证用户的访问持久分配到同一服务器。虽然有一定的本地DNS缓存,但是很难保证在用户访问期间,本地DNS不过期,而重新查询服务器并指向新的服务器,那么原服务器保存的用户信息是无法被带到新服务器的,而且可能要求被重新认证身份,来回切换时间长了各台服务器都保存有用户不同的信息,对服务器资源也是一种浪费。
DNS轮询原理:比如你添加了三条记录,分别是1,2,3
- 第一个用户请求,记录返回1,2,3
- 第二个用户请求,记录返回2,3,1
- 第三个用户请求,记录返回3,1,2
- 第四个用户请求,记录返回1,2,3
所有的记录都是均匀的返回给每一个请求的用户,但有时候用户可能一打开你的网站就马上退出(比如关掉了浏览器),有些用户可能会一直浏览你的网
站。因为DNS无法得知还有哪个用户还在访问你哪一台服务器,所以就会造成有些服务器访问的用户多,有些服务器访问的用户少(因为这台服务器访问时间短
的用户比较多)。最后就会出现访问用户不平均的情况。
DNS轮询的时候,IP是如何给出的?
首先,客户机发请求给递归服务器(地方宽带运营商服务器),递归服务器发请求给DNSPod解析服务器;
然后,DNSPod解析服务器将域名设置的所有轮询主机服务器IP返回给递归服务器,递归服务器将这些IP再返回给客户机;
最后,客户机的浏览器会随机访问其中的一个IP进行访问。
参考:https://support.dnspod.cn/Kb/showarticle/tsid/17/