大多域名注册商都支持对同一主机名添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同IP上,这样就完成了简单的负载均衡。如图所示为DNS轮询A记录解析图:
DNS轮询的成本非常低,在一些不重要的服务上被经常使用。虽然DNS轮询的成本非常低廉,但是,DNS负载均衡存在两个明显的缺点。
1.可靠性低
假设一个域名DNS轮询多台服务器,如果其中的一台服务器发生故障,那么所有的访问该服务器的请求将不会有所回应,这是任何人都不愿意看到的。即使从DNS中去掉该服务器的IP,但在Internet上,各地区电信、网通等宽带接入商将众多的DNS存放在缓存中,以节省访问时间,DNS记录全部生效需要几个小时,甚至更久。所以,尽管DNS轮询在一定程度上解决了负载均衡问题,但是却存在可靠性不高的缺点。
2.负载分配不均衡
DNS负载均衡采用的是简单的轮询负载算法,不能区分服务器的差异,不能反应服务器的当前运行状态,不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况。
DNS服务器是按照一定的层次结构组织的,本地DNS服务器会缓冲已解析的域名到IP地址的映射,这会导致使用该DNS的服务器的用户在一段时间内访问的是同一台Web服务器,导致Web服务器间的负载不均衡。 此外,用户本地计算机也会缓存已解析的域名到IP地址的映射。当多个用户计算机都缓存了某域名到IP地址的映射时,而这些用户又继续访问该域名下的网页,这时也会导致不同Web服务器的负载分配不均衡。 负载不均衡可能导致的后果有:某几台服务器负荷很低,而另外几台服务器负荷很高、处理缓慢;配置高的服务器分配到的请求少,而配置低的服务器分配到的请求多。 因此,DNS轮询方式仅适用于一些可靠性要求不高的服务器集群,例如:图片服务器集群、纯静态网页服务器集群等。