讲到负载均衡,几乎所有地方都必须要讲一下基于DNS的方式,因为这实在是最基本、最简单的方式了。当然,也几乎所有地方都说到这种方式的种种缺点,不过,既然很基本,就还是要说明一下。
作者:zdnet安全频道 来源:论坛整理 2008年10月27日
关键字: 负载均衡
讲到负载均衡,几乎所有地方都必须要讲一下基于DNS的方式,因为这实在是最基本、最简单的方式了。当然,也几乎所有地方都说到这种方式的种种缺点,不过,既然很基本,就还是要说明一下。
下面这段讲得很清楚:
最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。
DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽量保证不同的客户计算机能均匀获得不同的地址。由于DNS数据具备刷新时间标志,一旦超过这个时间限制,其他DNS服务器就需要和这个服务器交互,以重新获得地址数据,就有可能获得不同IP地址。因此为了使地址能随机分配,就应使刷新时间尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址,然而将过期时间设置得过短,将使DNS流量大增,而造成额外的网络问题。DNS负载均衡的另一个问题是,一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。
尽管存在多种问题,但它还是一种非常有效的做法,包括Yahoo在内的很多大型网站都使用DNS。
比较一下DNS方式与专业的负载均衡软件如PCL负载均衡软件,会发现DNS的问题在于,一是往往不能根据系统与服务的状态来判断负载,二是往往不能建立较复杂的负载均衡算法,而最主要的是DNS往往有缓存,简单分配负载问题不大,如果是应用集群这个就是无法接受的。
那么,为什么象Yahoo在内的大型网站都使用DNS方式呢?因为对于门户网站来讲,应用形态单一且简单,重要的是服务器数量与分布,而如果出现短时间对于少量用户的服务中断问题并不大(比如有100台服务器,有一台不行了,即使DNS有缓存,也关系不大,用户重新刷一下,就很可能又分配到其他机器上了)。
但是,对于应用系统而言,比如两三台服务器,跑着比较复杂的应用,DNS方式就完全不适合了,这个时候,就要用专业的负载均衡软件了。