今天在看云风的铁路订票系统的简单设计 时,看到他提到通过动态DNS实现负载均衡;感觉自己对负载均衡这块一直是模模糊糊,有必要补补钙。
动态DNS(英语:Dynamic DNS,简称D-DNS)是一种把互联网域名指往可变IP地址的系统。简单的说,动态域名可以在你的电脑每次上网得到新的IP之后,自动设置了新域名的指向,使网上其他任何人访问该域名时,始终能定向到你机器的最新的正确IP上去,从而使得人们能使用一个能记忆的,对用户来说是永远不变的域名来访问你那台IP每天都在变化的机器。从而也就能实现了将个人电脑变成可以供任何人访问的“服务器”了。
当然,我所关心的是动态DNS技术在负载均衡方面的应用,那么让我们看看其实现原理:
DNS负载均衡技术的实现原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。
主要优点
这种技术的主要缺点如下:
第一,技术实现比较灵活、方便,简单易行,成本低,适用于大多数TCP/IP应用。不需要网络专家来对之进行设定,或在出现问题时对之进行维护。
第二,对于Web应用来说,不需要对代码作任何的修改。事实上,Web应用本身并不会意识到负载均衡配置,即使在它面前。
第三,Web服务器可以位于互联网的任意位置上。
主要缺点
DNS负载均衡技术在具有以上优点的时候,其缺点也非常明显,主要表现在:
第一,不能够按照Web服务器的处理能力分配负载。DNS负载均衡采用的是简单的轮循负载算法,不能区分服务器之间的差异,不能反映服务器的当前运行状态。所以DNS服务器将Http请求平均地分配到后台的Web服务器上,而不考虑每个Web服务器当前的负载情况。如果后台的Web服务器的配置和处理能力不同,最慢的 Web服务器将成为系统的瓶颈,处理能力强的服务器不能充分发挥作用。不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况。
第二,不支持高可靠性,DNS负载均衡技术没有考虑容错。如果后台的某台Web服务器出现故障,DNS服务器仍然会把DNS 请求分配到这台故障服务器上,导致不能响应客户端。
第三,可能会造成额外的网络问题。为了使本DNS服务器和其他DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分配,一般都要将DNS的刷新时间设置的较小,但太小将会使DNS流量大增造成额外的网络问题。
第四,一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。