从单机网站到分布式网站,很主要的差异是业务拆分和分布式支配,将运用拆分后,支配到不同的机器上,实现大规模分布式系统。
分布式和业务拆分解决了,从集中到分布的问题,但是每个支配的独立业务还存在单点的问题和访问统一入口问题,为办理单点故障,我们可以采纳冗余的办法,将相同的运用支配到多台机器上。
办理访问统一入口问题,我们可以在集群前面增加负载均衡设备,实现流量分发。
负载均衡的浸染
1.办理并发压力提高运用场置性能,增加吞吐量,加强网络处理能力。
2.实现高可用供应故障转移,实现全体运用的高可用。
3.实现扩展性通过添加或减少做事器数量,供应网站伸缩性扩展性。
4.实现安全防护负载均衡设备上做一些过滤,黑白名单等处理。
负载均衡的事理系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。
纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现做事器处理能力的提升,不能知足大型分布式系统(网站),大流量,高并发,海量数据的问题。
因此须要采取横向扩展的办法,通过添加机器来知足大型网站做事的处理能力。
比如:一台机器不能知足,则增加两台或者多台机器,共同承担访问压力。这便是范例的集群和负载均衡架构:如下图:
运用集群:将同一运用支配到多台机器上,组成处理集群,吸收负载均衡设备分发的要求,进行处理,并返回相应数据。负载均衡设备:将用户访问的要求,根据负载均衡算法,分发到集群中的一台处理做事器。负载均衡算法1.轮循
轮询很随意马虎实现,将要求按顺序轮流分配到后台做事器上,均衡的对待每一台做事器,而不关心做事器实际的连接数和当前的系统负载。适宜场景:适宜于运用做事器硬件都相同的情形。
2.加权轮循在轮询的根本上根据硬件配置不同,按权重分发到不同的做事器。适宜场景:跟配置高、负载低的机器分配更高的权重,使其能处理更多的要求,而性能低、负载高的机器,配置较低的权重,让其处理较少的要求。
3.随机通过系统随机函数,根据后台做事器列表的大小值来随机选取个中一台进行访问。
随着调用量的增大,客户真个要求可以被均匀地分派到所有的后端做事器上,其实际效果越来越靠近于均匀分配流量到后台的每一台做事器,也便是轮询法的效果。
4.最少连接记录每个做事器正在处理的要求数,把新的要求分发到最少连接的做事器上,由于要掩护内部状态不推举。
5.源地址散列根据做事消费者要求客户真个IP地址,通过哈希函数打算得到一个哈希值,将此哈希值和做事器列表的大小进行取模运算,得到的结果便是要访问的做事器地址的序号。
适宜场景:根据要求的来源IP进行hash打算,同一IP地址的客户端,当后端做事器列表不变时,它每次都会映射到同一台后端做事器进行访问。
负载均衡的分类1.二层负载均衡(mac)根据OSI模型分的二层负载,一样平常是用虚拟mac地址办法,外部对虚拟MAC地址要求,负载均衡吸收后分配后端实际的MAC地址相应。备注:MAC(Media Access Control Address)
2.三层负载均衡(ip)一样平常采取虚拟IP地址办法,外部对虚拟的ip地址要求,负载均衡吸收后分配后端实际的IP地址相应。
3.四层负载均衡(tcp)四层的负载均衡在三层负载均衡的根本上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量须要做负载均衡。
四层负载均衡在中间传输层实行,它处理的通报,但不考虑的内容,用ip+port吸收要求,再转发到对应的机器。
四层负载均衡不理解运用协议,比如:
HTTPFTPMySQL等等实现四层负载均衡的软件有:
F5:硬件负载均衡器,功能很好,但是本钱很高。lvs:重量级的四层负载软件nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵巧haproxy:仿照四层转发,较灵巧4.七层负载均衡(http)七层负载均衡不同于四层负载均衡,它在高等运用层上实行,会处理每个的实际内容。
所谓七层负载均衡,也称为“内容交流”,也便是紧张通过报文中的真正故意义的运用层内容,决定终极选择的内部做事器。
七层负载均衡它可以根据内容(如URL)做出负载均衡决策,比如:对URL图片类的要求转发到特定的图片做事器。
实现七层负载均衡的软件有:
HAproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;Nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;apache:功能较差总的来说,一样平常是LVS做4层负载,Nginx或者Haproxy做7层负载,性能上LVS>HA>Nginx,功能性和便利性上Nginx>HA>LVS。