负载均衡策略简介

时间:2017-05-24作者:klpeng分类:系统架构浏览:2471评论:1

Web负载均衡(Load Balancing),简单地说就是给服务器集群分配“工作任务”,采用恰当的分配方式,非常重要。

下面简单介绍几种负载均衡的策略:


1. HTTP重定向

当用户发来请求的时候,Web服务器通过修改HTTP响应头中的Location标记来返回一个新的url,然后浏览器再继续请求这个新url,实际上就是页面重定向。通过重定向,来达到“负载均衡”的目标。例如在下载PHP源码包的时候,点击下载链接时,为了解决不同国家和地域下载速度的问题,服务器会返回一个离我们近的下载地址。重定向的HTTP返回码是302,如下图:

负载均衡策略简介

如果使用PHP代码来实现这个功能,方式如下:

负载均衡策略简介

这个重定向非常容易实现,并且可以自定义各种策略。但是,它在大规模访问量下,性能不佳。而且给用户的体验也不好,实际请求发生重定向,增加了网络延时。


2. 反向代理负载均衡

反向代理服务的核心工作主要是转发HTTP请求,扮演了浏览器端和后台Web服务器中转的角色。因为它工作在HTTP层(应用层),也就是网络七层结构中的第七层,因此也被称为“七层负载均衡”。可以做反向代理的软件很多,比如Nginx。

负载均衡策略简介

当然了,Nginx Plus的商业授权版也具有IP负载均衡的功能,可以实现基于IP+端口的四层负载均衡。



3. IP负载均衡

IP负载均衡服务是工作在网络层(修改IP)和传输层(修改端口,第四层),比起工作在应用层(第七层)性能要高出非常多。原理是,他是对IP层的数据包的IP地址和端口信息进行修改,达到负载均衡的目的。这种方式,也被称为“四层负载均衡”。常见的负载均衡方式是LVS(Linux Virtual Server,Linux虚拟服务),通过IPVS(IP Virtual Server,IP虚拟服务)来实现,当然也可以利用硬件来实现,比如f5(太贵)。

负载均衡策略简介

 


在负载均衡服务器收到客户端的IP包的时候,会修改IP包的目标IP地址或端口,然后原封不动地投递到内部网络中,数据包会流入到实际Web服务器。实际服务器处理完成后,又会将数据包投递回给负载均衡服务器,它再修改目标IP地址为用户IP地址,最终回到客户端。 

负载均衡策略简介

 


上述的方式叫LVS-NAT,除此之外,还有LVS-RD(直接路由),LVS-TUN(IP隧道),三者之间都属于LVS的方式,但是有一定的区别,这里就不做详细介绍。


IP负载均衡的性能要高出Nginx的反向代理很多,它只处理到传输层为止的数据包,并不做进一步的组包,然后直接转发给实际服务器。不过配置和搭建相当复杂。


4. DNS负载均衡

DNS(Domain Name System)负责域名解析的服务,域名url实际上是服务器的别名,实际映射是一个IP地址,解析过程,就是DNS完成域名到IP的映射。而一个域名是可以配置成对应多个IP的。因此DNS也可以作为负载均衡服务。


 负载均衡策略简介


这种负载均衡策略,配置简单,性能极佳。但不能自由定义规则,而且变更被映射的IP或者机器故障时很麻烦,还存在DNS生效延迟的问题。 


5. DNS/GSLB负载均衡

 费用比较高

 常用的CDN(Content Delivery Network,内容分发网络)实现方式,其实就是在同一个域名映射为多IP的基础上更进一步,通过GSLB(Global Server Load Balance,全局负载均衡)按照指定规则映射域名的IP。一般情况下都是按照地理位置,将离用户近的IP返回给用户,减少网络传输中的路由节点之间的跳跃消耗。 

 互联网一线公司,一般会自建CDN服务,中小型公司一般使用第三方提供的CDN。 


打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

  • 评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢