赞
踩
面对大量用户访问、高并发请求,单机网站可以从软硬件两个方面寻求解决方法:
但是,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。即需要从架构方面寻求解决方案。
负载均衡的作用:
1、增加吞吐量,解决并发压力(高性能);
2、提供故障转移(高可用);
3、通过添加或减少服务器数量,提供网站伸缩性(扩展性);
4、安全防护(负载均衡设备上做一些过滤,黑白名单等处理)。
系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。
纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。因此需要采用横向扩展的方式,通过添加机器来满足大型网站服务的处理能力。比如:一台机器不能满足,则增加两台或者多台机器,共同承担访问压力。
典型负载均衡架构如下:
采用硬件的方式实现负载均衡,一般是单独的负载均衡服务器,价格昂贵,常用的有:F5、A10、Citrix Netscaler。
优点:
缺点:
选择:
硬件负载均衡价格昂贵,在实际应用中远不如软件负载均衡普遍。常用的软件负载均衡软件有Nginx、LVS、HaProxy、ats、perlbal、pound等。
Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件。
对比:
选择:
本地负载均衡针对本地范围的服务器群做负载均衡
全局负载均衡针对不同地理位置、不同网络结构的服务器群做负载均衡
全局负载均衡具备的特点:
最早的负载均衡技术,利用域名解析实现负载均衡,在DNS服务器,配置多个A记录,这些A记录对应的服务器构成集群。大型网站总是部分使用DNS解析,作为第一级负载均衡。
优点:
缺点:
可用性差:新增/修改DNS后,解析时间较长;
扩展性低:DNS负载均衡的控制权在域名商,扩展性有限。
实践建议:将DNS作为第一级负载均衡。
IP负载均衡,在网络层通过修改请求目标地址进行负载均衡。
优点:
缺点:
在通信协议的数据链路层修改mac地址,进行负载均衡。
数据分发时,不修改ip地址,指修改目标mac地址,配置真实物理服务器集群所有机器虚拟ip和负载均衡服务器ip地址一致,达到不修改数据包的源地址和目标地址,进行数据分发的目的。
优点:性能好。
缺点:配置复杂。
实践建议:直接路由(DR)模式最常用。
由于多个服务器群内硬件设备、规模、提供服务等差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务,从而达到最佳的性能,将这种方式称之为混合型负载均衡。
负载均衡服务器对外依然提供一个 VIP(浮动IP),集群中不同的机器采用相同IP地址,但机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。
负载均衡服务器对外依然提供一个VIP,但集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。
四层负载均衡服务器在接受到客户端请求后,通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。
七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用HTTP、DNS 等。七层负载就可以基于这些协议来负载。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。
路由模式的部署方式,服务器的网关必须设置成负载均衡机的LAN口地址,且与WAN口分署不同的逻辑网络。因此所有返回的流量也都经过负载均衡。这种方式对网络的改动小,能均衡任何下行流量。
桥接模式配置简单,不改变现有网络。负载均衡的WAN口和LAN口分别连接上行设备和下行服务器。LAN口不需要配置IP(WAN口与LAN口是桥连接),所有的服务器与负载均衡均在同一逻辑网络中。
由于这种安装方式容错性差,网络架构缺乏弹性,对广播风暴及其他生成树协议循环相关联的错误敏感,因此一般不推荐这种安装架构。
这种安装方式负载均衡的LAN口不使用,WAN口与服务器在同一个网络中,互联网的客户端访问负载均衡的虚IP(VIP),虚IP对应负载均衡机的WAN口,负载均衡根据策略将流量分发到服务器上,服务器直接响应客户端的请求。因此对于客户端而言,响应他的IP不是负载均衡机的虚IP(VIP),而是服务器自身的IP地址。也就是说返回的流量是不经过负载均衡的。因此这种方式适用大流量高带宽要求的服务。
轮询为负载均衡中较为基础也较为简单的算法,它不需要配置额外参数。假设配置文件中共有 M 台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求。当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历。
特点:
由于该算法中每个请求按时间顺序逐一分配到不同的服务器处理,因此适用于服务器性能相近的集群情况,其中每个服务器承载相同的负载。但对于服务器性能不同的集群而言,该算法容易引发资源分配不合理等问题。
优点:服务器请求数目相同;实现简单、高效;易水平扩展。
缺点:服务器压力不一样,不适合服务器配置不同的情况;请求到目的结点的不确定,造成其无法适用于有写操作的场景。
应用场景:数据库或应用服务层中只有读的场景。
为了避免普通轮询带来的弊端,加权轮询应运而生。在加权轮询中,每个服务器会有各自的 weight。一般情况下,weight 的值越大意味着该服务器的性能越好,可以承载更多的请求。该算法中,客户端的请求按权值比例分配,当一个请求到达时,优先为其分配权值最大的服务器。
特点:
加权轮询可以应用于服务器性能不等的集群中,使资源分配更加合理化。
其核心思想是,遍历各服务器节点,并计算节点权值,计算规则为 current_weight 与其对应的 effective_weight 之和,每轮遍历中选出权值最大的节点作为最优服务器节点。其中 effective_weight 会在算法的执行过程中随资源情况和响应情况而改变。
ip_hash 依据发出请求的客户端 IP 的 hash 值来分配服务器,该算法可以保证同 IP 发出的请求映射到同一服务器,或者具有相同 hash 值的不同 IP 映射到同一服务器。
特点:
该算法在一定程度上解决了集群部署环境下 Session 不共享的问题。
给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。
给所有服务器分组,给每个组定义优先权。当最高优先级中所有服务器出现故障,将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。
将请求分配到连接数最少的服务器(目前处理请求最少的服务器)。
优点:根据服务器当前的请求处理情况,动态分配;
缺点:算法实现相对复杂,需要监控服务器请求连接数;
传递连接给那些响应最快的服务器。
连接数目和响应时间这两项的最佳平衡为依据为新的请求选择服务器。
利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。
根据收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。
当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。
按不同的优先级对数据流进行分配。
按不同的服务类型(在 Type of Field 中标识)负载均衡对数据流进行分配。
针对不同的数据流设置导向规则,用户可自行设置。
互联网领域对于负载均衡的架构是随着网站规模提升不断演进的,大致分为如下几个阶段:
第一阶段:利用Nginx或HAProxy进行单点的负载均衡,该阶段服务器刚从单机向集群转变,需要在七层做转发。
第二阶段:随着网络规模扩大,Nginx单点瓶颈突出,这时使用LVS或者商用Array就是首要选择,Nginx此时就作为LVS或者Array的节点来使用,具体LVS或Array的是选择是根据公司规模和预算来选择。
第三阶段:这时网络服务已经成为主流产品,此时随着公司知名度也进一步扩展,相关人才的能力以及数量也随之提升,这时无论从开发适合自身产品的定制,以及降低成本来讲开源的LVS,已经成为首选,这时LVS会成为主流。
常见互联网分布式架构可分为用户层、反向代理层、Web站点层、业务服务层、数据存储层。互联网分层架构:
每层之间交互都有相应的负载均衡方案:
1. 从技术实现原理上
所谓四层负载均衡就是使用IP加端口的方式进行路由转发;七层负载均衡一般是基于请求URL地址的方式进行代理转发。同理,还有基于MAC地址信息(虚拟MAC地址到真实MAC地址)进行转发的二层负载均衡和基于IP地址(虚拟IP到真实IP)的三层负载均衡。
四层负载均衡具体实现方式为:通过报文中的IP地址和端口,再加上负载均衡设备所采用的负载均衡算法,最终确定选择后端哪台下游服务器。以TCP为例,客户端向负载均衡发送SYN请求建立第一次连接,通过配置的负载均衡算法选择一台后端服务器,并且将报文中的IP地址信息修改为后台服务器的IP地址信息,因此TCP三次握手连接是与后端服务器直接建立起来的。
七层服务均衡在应用层选择服务器,只能先与负载均衡设备进行TCP连接,然后负载均衡设备再与后端服务器建立另外一条TCP连接通道。因此,七层设备在网络性能损耗会更多一些。
2. 从安全视角上
四层负载均衡与服务器直接建立起TCP连接,很容易遭受SYN Flood攻击。SYN Flood是一种广为人知的DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽的攻击方式。从技术实现原理上可以看出,四层负载均衡很容易将垃圾流量转发至后台服务器,而七层设备则可以过滤这些恶意并清洗这些流量,但要求设备本身具备很强的抗DDOS流量的能力。
3. 常见四层和七层负载均衡设备
四层: F5、LVS等
七层: nginx、apache等
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。