大型网站架构系列:负载均衡详解(1)

面对大量用户访问、高并发请求,海量数据,可使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言好比(Go,Scala)等,当单机容量达到极限时,咱们须要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。算法

从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不一样的机器上,实现大规模分布式系统。分布式和业务拆分解决了,从集中到分布的问题,可是每一个部署的独立业务还存在单点的问题和访问统一入口问题,为解决单点故障,咱们能够采起冗余的方式。将相同的应用部署到多台机器上。解决访问统一入口问题,咱们能够在集群前面增长负载均衡设备,实现流量分发。数据库

负载均衡(Load Balance),意思是将负载(工做任务,访问请求)进行平衡、分摊到多个操做单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。编程

本文是负载均衡详解的第一篇文章,介绍负载均衡的原理,负载均衡分类(DNS负载均衡,HTTP负载均衡,IP负载均衡,链路层负载均衡,混合型P负载均衡)。部份内容摘自读书笔记。浏览器

本次分享大纲

  1. 负载均衡原理
  2. DNS负载均衡
  3. HTTP负载均衡
  4. IP负载均衡
  5. 链路层负载均衡
  6. 混合型P负载均衡

1、负载均衡原理

系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。纵向扩展,是从单机的角度经过增长硬件处理能力,好比CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提高,不能知足大型分布式系统(网站),大流量,高并发,海量数据的问题。所以须要采用横向扩展的方式,经过添加机器来知足大型网站服务的处理能力。好比:一台机器不能知足,则增长两台或者多台机器,共同承担访问压力。这就是典型的集群和负载均衡架构:以下图:缓存

  • 应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,进行处理,并返回相应数据。
  • 负载均衡设备:将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器。(一种把网络请求分散到一个服务器集群中的可用服务器上去的设备)

 负载均衡的做用(解决的问题):安全

1.解决并发压力,提升应用处理性能(增长吞吐量,增强网络处理能力);服务器

2.提供故障转移,实现高可用;网络

3.经过添加或减小服务器数量,提供网站伸缩性(扩展性);架构

4.安全防御;(负载均衡设备上作一些过滤,黑白名单等处理)并发

2、负载均衡分类

根据实现技术不一样,可分为DNS负载均衡,HTTP负载均衡,IP负载均衡,链路层负载均衡等。

2.1DNS负载均衡

最先的负载均衡技术,利用域名解析实现负载均衡,在DNS服务器,配置多个A记录,这些A记录对应的服务器构成集群。大型网站老是部分使用DNS解析,做为第一级负载均衡。以下图:

优势

  1. 使用简单:负载均衡工做,交给DNS服务器处理,省掉了负载均衡服务器维护的麻烦
  2. 提升性能:能够支持基于地址的域名解析,解析成距离用户最近的服务器地址,能够加快访问速度,改善性能;

缺点

  1. 可用性差:DNS解析是多级解析,新增/修改DNS后,解析时间较长;解析过程当中,用户访问网站将失败;
  2. 扩展性低:DNS负载均衡的控制权在域名商那里,没法对其作更多的改善和扩展;
  3. 维护性差:也不能反映服务器的当前运行状态;支持的算法少;不能区分服务器的差别(不能根据系统与服务的状态来判断负载)

 实践建议

将DNS做为第一级负载均衡,A记录对应着内部负载均衡的IP地址,经过内部负载均衡将请求分发到真实的Web服务器上。通常用于互联网公司,复杂的业务系统不合适使用。以下图:

1.3  IP负载均衡

在网络层经过修改请求目标地址进行负载均衡。

用户请求数据包,到达负载均衡服务器后,负载均衡服务器在操做系统内核进程获取网络数据包,根据负载均衡算法获得一台真实服务器地址,而后将请求目的地址修改成,得到的真实ip地址,不须要通过用户进程处理。

真实服务器处理完成后,响应数据包回到负载均衡服务器,负载均衡服务器,再将数据包源地址修改成自身的ip地址,发送给用户浏览器。以下图:

IP负载均衡,真实物理服务器返回给负载均衡服务器,存在两种方式:(1)负载均衡服务器在修改目的ip地址的同时修改源地址。将数据包源地址设为自身盘,即源地址转换(snat)。(2)将负载均衡服务器同时做为真实物理服务器集群的网关服务器。

 优势:

(1)在内核进程完成数据分发,比在应用层分发性能更好;

缺点:

(2)全部请求响应都须要通过负载均衡服务器,集群最大吞吐量受限于负载均衡服务器网卡带宽;

2.4链路层负载均衡

在通讯协议的数据链路层修改mac地址,进行负载均衡。

数据分发时,不修改ip地址,指修改目标mac地址,配置真实物理服务器集群全部机器虚拟ip和负载均衡服务器ip地址一致,达到不修改数据包的源地址和目标地址,进行数据分发的目的。

实际处理服务器ip和数据请求目的ip一致,不须要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。也称为直接路由模式(DR模式)。以下图:

优势:性能好;

缺点:配置复杂;

实践建议:DR模式是目前使用最普遍的一种负载均衡方式。

2.5混合型负载均衡

因为多个服务器群内硬件设备、各自的规模、提供的服务等的差别,能够考虑给每一个服务器群采用最合适的负载均衡方式,而后又在这多个服务器群间再一次负载均衡或群集起来以一个总体向外界提供服务(即把这多个服务器群当作一个新的服务器群),从而达到最佳的性能。将这种方式称之为混合型负载均衡。

此种方式有时也用于单台均衡设备的性能不能知足大量链接请求的状况下。是目前大型互联网公司,广泛使用的方式。

方式一,以下图:

以上模式适合有动静分离的场景,反向代理服务器(集群)能够起到缓存和动态请求分发的做用,当时静态资源缓存在代理服务器时,则直接返回到浏览器。若是动态页面则请求后面的应用负载均衡(应用集群)。

方式二,以下图:

以上模式,适合动态请求场景。

因混合模式,能够根据具体场景,灵活搭配各类方式,以上两种方式仅供参考。

相关文章
相关标签/搜索