负载均衡篇 不同层次的负载均衡(2/3/4/7)

快速区分多种负载均衡

  负载均衡有 2/3/4/7层多种,对应于网络的七层模型,即物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

  那么二层负载就是数据链路负载,三层就是网络层负载,四层就是传输层负载,七层就是应用层负载。

  二层负载添加额外的数据链路来提供传输能力,一般是逻辑上的捆绑。提供虚拟MAC地址接收数据,再转发到真正的MAC主机上。方法主要有链路聚合方法和PPP捆绑。

    以太网链路聚合简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。

    PPP捆绑是将多个物理链路合并或者捆绑成一个大逻辑链路的机制。主要起到增加带宽,减少延时,线路备份的作用,另外一个作用是可以将不同类型的接口捆绑为一个逻辑接口。

  三层负载提供虚拟IP接收数据,然后转发到真正的IP主机上。一般是通过F5硬件来提供这种负载。

  四层负载是IP+PORT负载,提供虚拟的IP和端口接收数据后转发到真正服务器上。

  七层负载是URL负载,提供虚拟URL或主机名接收数据后转发到真正的地址。

软硬件负载均衡

  首先要明白主机和主机的通信是通过IP和端口进行的,所以软件所能实现的负载均衡只能是4-7层,而硬件可以应用于二层,三层的负载均衡。

  相同功能的情况下,硬件的负载均衡是一台独立的机器,性能更加强大,但价格高贵。软件负载均衡性能差一些,但胜在扩展性强,价格低廉。

  硬件负载产品有F5,思科等。软件负载有LVS,NGINX,HAPROXY等

如何选择负载均衡

  对于web服务来说,七层负载均衡能满足他最完整的要求,无论是均衡服务器压力,分摊宕机风险,检查访问错误,检测报文内容,过滤攻击等等,七层负载均衡都能够提供解决方案。但七层负载均衡带来功能的同时,也有一些风险存在。

    1.七层负载均衡已经是应用层级别的负载均衡。连接已经建立,报文也已经发送成功,再转发到服务端,其实相当于原本 客户端-服务端 连接变成了 客户端-负载均衡 + 负载均衡-服务端的两段连接模式,添加了网络压力。

    2.七层负载均衡对报文的拦截也降低了性能,如果访问量大,将会对节点产生压力。如果产生网络攻击,负载均衡节点将代替服务器接收外部攻击,同样有可能导致宕机而使得服务不能用。

  如非必要,在选择负载均衡器的时候,我们仍然选择四层负载均衡而不是七层负载均衡。(实际应用中,大部分都会用到七层负载均衡,因为大部分项目都会使用到报文拦截做一些过滤或解析操作,更好用)

负载均衡策略

  既然负载均衡是将数据分发给多台机器,分别处理,就得考虑分发时候的策略满足于当前环境,策略算法根据实际情况而定,一般软件上会提供一些主流算法。

    1.轮循均衡(Round Robin):每一次来自网络的请求轮流分配给内部中的服务器,从1至N然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。

    2.权重轮循均衡(Weighted Round Robin):根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如:服务器A的权值被设计成1,B的权值是 3,C的权值是6,则服务器A、B、C将分别接受到10%、30%、60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。

    3.随机均衡(Random):把来自网络的请求随机分配给内部中的多个服务器。

    4.权重随机均衡(Weighted Random):此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。

    5.响应速度均衡(Response Time):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。

    6.最少连接数均衡(Least Connection):客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,并没有达到真正的负载均衡。最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如FTP。 

    7.处理能力均衡:此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况下。

    8.DNS响应均衡(Flash DNS):在Internet上,无论是HTTP、FTP或是其它的服务请求,客户端一般都是通过域名解析来找到服务器确切的IP地址的。在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相对应服务器的IP地址(即与此负载均衡设备在同一位地理位置的服务器的IP地址)并返回给客户端,则客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其它的IP地址响应。在种均衡策略适合应用在全局负载均衡的情况下,对本地负载均衡是没有意义的。

负载均衡器维护可用的分流服务

  负载均衡器需要明确知道当前转发目的的存活状态,这里也需要通过一些策略来维护存活的服务。

    1.Ping侦测:通过ping的方式检测服务器及网络系统状况,此种方式简单快速,但只能大致检测出网络及服务器上的操作系统是否正常,对服务器上的应用服务检测就无能为力了。

    2.TCP Open侦测:每个服务都会开放某个通过TCP连接,检测服务器上某个TCP端口(如Telnet的23口,HTTP的80口等)是否开放来判断服务是否正常。

    3.HTTP URL侦测:比如向HTTP服务器发出一个对main.html文件的访问请求,如果收到错误信息,则认为服务器出现故障。

posted @ 2019-11-25 18:18  但行好事-莫问前程  阅读(519)  评论(0编辑  收藏