一.简介

  • 所谓的四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。换句话说,二层的负载均衡会通过一个虚拟的MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。
  • 2.所谓的四到七层负载均衡,就是再对后台的服务器进行负载均衡时,依据四层的信息或者七层的信息来决定咋样转发流量。比如四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口好号,来决定那些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由那台服务器的,后台这个连接的所有流量都同样转发到同一台服务器处理。而七层的负载均衡就是再四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个web服务器的负载均衡,除了根据VIP加80端口辨别是否需要流量处理,还可根据七层的URL,浏览器的类型,语言来决定是否需要进行负载均衡。举个例子,如果你的web服务器分成俩组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
  • 3.负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层的流量负载均衡。七层交换机除了支持四层负载均衡外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。
  • 4.负载均衡分为L4 switch(四层交换)。即在OSI第四层工作,也就是TCP层,这种Load Balance不理解应用协议(如HTTP/FTP/MYSQL等等),如lvs,F5.
  • L7 switch(七层交换)。OSI的最高层,应用层。此时,该Load Balancer能理解应用协议,如haproxy,mysql proxy。

一.四层负载均衡

  • 将网络流量负载平衡到多个服务器的最简单方法是使用第四层(传输层)的负载均衡。以这种方式进行负载均衡将根据IP范围和端口转发用户流量,列:如果请求http://www.baidu.com,则将流量转发到处理www.baidu.com所有请求的后端,端口80。

pgpool 负载均衡测试 ip负载均衡原理_服务器


二.七层负载均衡


pgpool 负载均衡测试 ip负载均衡原理_服务器_02

三.四层负载均衡和七层负载均衡的区别


  • 四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
  • 以TCP为例,负载均衡设备在接收到第一个来自客户端的请求时,即通过上述方式选择一个最佳服务器,并对报文中的目标IP地址进行修改(改为后端服务器IP),直接转发给服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发功能,在某些部署的情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的地址进行修改。
  • 七层的负载均衡,称为ie内容交换,就是主要通过报文中真正有意义的内容,再加上负载均衡设备设置的服务器的选择方式,决定最终选择的内部服务器。
  • 以TCP为例,负载均衡设备如果根据要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端连接(三次握手)后,才可能接收到客户端发送的真正的应用层报文的内容,然后再根据报文中的特定字段,再加上负载均衡设置的后端服务器的选择方式决定最终选择的内部服务器,负载均衡设备再这种情况下更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器分别会建立TCP连接,所以从技术原理上来讲,七层的负载均衡明显的对负载均衡设备的要求更高,处理七层的能力必然会低于四层模式的部署方式。

pgpool 负载均衡测试 ip负载均衡原理_服务器_03