负载均衡


1、负载均衡的几种实现方式


     1)基于HTTP重定向负载均衡(响应码302)


          浏览器发送请教到负载均衡服务器,服务器根据算法找到一台服务主机,然后在响应码中返回302及实际的IP地址,浏览器收到请教后进行目标ip重定位访问


           优点:实现简单   


           缺点:浏览器需要交互两次才能得到结果,响应时间长,速度慢,一般网站比较少采用


          浏览器-》负载均衡服务器-》找到真实主机,加到返回302码的目标ip上-》浏览器-》根据302的ip重新发起请求=》真实主机-》响应-》浏览器



     2)基于DNS域名解析服务负载均衡


          DBS负载均衡一般DNS解析服务商都会有提供,浏览器请教域名时,域名下配置了多台真实的主机地址,浏览器访问域名时,DNS解析找到可服务的主机IP进行服务,把处理结果返回给用户


          优点:DBS负载发生在域名,基于网络层,可以根据用户的地理位置选取离用户最近的主机,加速用户访问速度


          缺点:如果有某些服务主机挂了,DNS因为是基于缓存主机服务的,更新不及时,有可能访问还是挂掉的主机,而且控制权在第三方,服务商难干预。


     一般大型网站都会采取该方式作为一级负载均衡,DNS负载的主机IP一般是服务商的负载均衡主机,再通过负载均衡主机进行真实web服务分发


          浏览器=》DNS域名解析,并找到真实ip-》响应-》浏览器


     3)反向代理负载均衡(一般采用nginx或apache)


        软伯负载均衡一般作为分发器,所有服务请教经过应用软件类nginx,nginx根据请教进行不同真实主机服务的分发请求来达到负载均衡的目标


       优点:配置简单、可以根据多种策略进行负载均衡,成本低,效率介于HTTP重定向之间好


        缺点:负载均衡服务器会成为请求的瓶颈,需要对负载均衡应用服务进行集成搭建。


      目前网站采用该方式较多


     浏览器-》负载均衡服务-》找到真实主机ip-》发送请教-》真实主机响应-》负载均衡服务-》响应-》浏览器


    4)IP负载均衡(在内核进程完成数据分发,性能比反向代理好)


      在网络层修改目标ip进行负载均衡


     浏览器请求-》网关服务器-》修改目标ip地址-》真实地址处理-》响应-》网关服务器-》响应-》浏览器


     优点:网络层修改目标ip进行负载均衡,性能比反向代理好


     缺点:修改ip目标地址时需要把源地址改成本身网关ip,这样目标主机才能正常返回数据给网关服务器,集群最大的吞吐量受限于负载均衡器的网卡带宽。


 


  5)链路层级的负载均衡


    多台服务器地址改成与负载均衡网关同样的虚拟ip,客户端访问网关服务器,网关服务器修改mac地址,转到真实的服务mac主机上,mac因为虚拟ip和实际访问的ip一样,可以能正常处理浏览器的请求


    优点:少一层的请求响应返回操作,请求效率高,拥有nginx服务器的负载效果,但减少了数据收集返回一层请求


    目前linux下比较知名的开源负载均衡器:LVS(linux virtiual server)


 浏览器-》负载均衡服务-》修改成对应主机mac地址-》真实主机响应-》浏览器




2、负载均衡的原因及实现算法


1)轮询


2)加权轮询


3)随机数


4)最少连接数


5)源地址散列(ip hash/IP粘滞)