接入网负载均衡问题一直是我们关注的话题,可能好多人还不了解如何解决负载均衡问题,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。大部分的个人网站在一开始或许只是跟几十人上百人共享的一个虚拟主机空间,然后随着内容的增加和访问量的增长,虚拟主机的带宽、空间已经不能满足需求,站长就得开始考虑为网站购置一台独立的服务器,使用100M共享甚至是10M独享带宽;而当网站继续发展,访问的用户也已经遍布大江南北,站长又得考虑电信网通的互通问题。
在南方和北方各放置一台服务器作为镜像站点,或是采用双线接入;当这个网站访问量更大时,一味的增加带宽和设置镜像站点无疑会使网站运营成本剧增,加上单个服务器本身也有性能和线程的瓶颈,在并发访问量较大并且集中在一台服务器的时候,“Server too busy”就出现了,而这时站长应该采用什么方式使得网站在高访问量的时候仍然拥有较好的访问效果呢?这就牵涉到负载均衡的话题。我们之前讨论过CDN,其实CDN除了加速之外,也具有分流的效果,因此在负载均衡领域也有不少应用,其实基本上缓存(Cache)+镜像技术都有分流作用,但是如何分流还是需要一个负载均衡设备进行引导,所以,我们今天专门讨论负载均衡技术。
关于负载均衡服务
负载均衡服务能够平衡服务器群中的所有的服务器和应用之间的通信负载,根据实时响应时间进行判断,将任务交由负载最轻的服务器来处理,以实现真正的智能通信管理和最佳的服务器群性能。负载均衡技术控制第四层到第七层的应用/内容,从而对不同类型的客户和应用实现了优先级划分和差别服务,使用第七层智能会话恢复技术,同时可以检测出HTTP 400,500和600系列的错误。它透明地将交易重新定向到另一台服务器,从而使系统能够完成该交易。服务器故障切换和多重冗余特性可以让通信绕过故障点,从而使网站始终保持运行和可访问性。关于实现负载均衡的方法,网上也有不少相关讨论,以下做一些引用:
1、基于特定服务器软件的负载均衡
很多网络协议都支持“重定向”功能,例如在HTTP协议中支持Location指令,接收到这个指令的浏览器将自动重定向到Location指明的另一个URL上。由于发送Location指令比起执行服务请求,对Web服务器的负载要小的多,因此可以根据这个功能来设计一种负载均衡的服务器。
任何时候Web服务器认为自己负载较大的时候,它就不再直接发送回浏览器请求的网页,而是送回一个Location指令,让浏览器去服务器集群中的其他服务器上获得所需要的网页。在这种方式下,服务器本身必须支持这种功能,然而具体实现起来却有很多困难,例如一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送Location指令,Location指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。
因此这种方式实际应用当中并不多见,使用这种方式实现的服务器集群软件也较少。有些特定情况下可以使用CGI(包括使用FastCGI或mod_perl扩展来改善性能)来模拟这种方式去分担负载,而Web服务器仍然保持简洁、高效的特性,此时避免Location循环的任务将由用户的CGI程序来承担。
2、基于DNS的负载均衡
由于基于服务器软件的负载均衡需要改动软件,因此常常是得不偿失,负载均衡最好是在服务器软件之外来完成,这样才能利用现有服务器软件的种种优势。最早的负载均衡技术是通过DNS服务中的随机名字解析来实现的,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。