负载均衡解析与Nginx实战( 二 )


因为负载均衡器通常称为 四层交换机 或 七层交换机  。这里针对 四层 和 七层 两者区别再深入说一下:
技术原理区别

  • 四层负载均衡,也就是主要通过报文中的 目标地址和端口 ,再假设负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器 。
以常见的 TCP 为例,负载均衡设备再接收到第一个来自客户端 SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中的目标地址进行修改(改为后端服务器IP),直接转发给该服务器 。TCP 的连接建立,即 三次握手是客户端和服务端直接建立的,负载均衡设备只是起到一个类似路由器的转发动作  。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,再转发报文的同时可能还会对报文原来的源地址进行修改 。
负载均衡解析与Nginx实战

文章插图
 
  • 七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器 。
以常见的 TCP 为例,负载均衡设备如果要根据真正的应用层内容再选择服务服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接收到客户端发送的真正应用层内容的报文,然后再根据报文中的特定自带,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器 。负载均衡设在这种情况下,更类似于一个代理服务器  。负载均衡和前端的客户端以及后端的服务器会分别建立 TCP 连接 。所以从这个技术原理上来看,七层负载均衡明显对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式 。
应用场景区别
七层因为可以代理任意修改和处理用户的请求,所以可以使整个应用更加智能化和安全,代价就是设计和配置会更复杂 。所以是否有必要使用七层负载均衡是一个需要权衡的问题 。
现在的七层负载均衡,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息管理平台等基于 B/S 开发的系统 。四层负载均衡则对应其他TCP应用 。
1.4 负载均衡工具市面上有很多开源的负载均衡的工具或软件,基本都是基于前面提到的方案实现的,大多数是工作在第七层和第四层的 。Nginx、LVS、HAProxy 是目前使用最广泛的三种负载均衡软件 。
LVS:主要用来做四层负载均衡
LVS(linux Virtual Server),也就是 Linux 虚拟服务器,是一个由 章文颂博士 发起的自由软件项目,使用 LVS 技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器集群架构,它具有良好的可靠性、可扩展性和可操作性 。从而以低廉的成本实现最优的服务性能 。
Nginx:主要用来做七层负载均衡
Nginx,是一个网页服务器,它能发现代理HTTP、HTTPS、SMTP、POP3、IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存 。
Nginx现在的负载均衡既支持四层(ngx_stream_core_module模块)、又支持七层(ngx_http_upstream_module模块),但由于LVS在四层负载均衡方面做得知名度实在是太高了,所以Nginx的四层负载均衡用的人不怎么多,网上也很少会有说用Nginx来做四层负载均衡的 。
HAProxy:主要用来做七层负载均衡
HAPorxy,是一个使用 C 语言编写的自由开源软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理 。
1.5 负载均衡算法负载均衡服务器在决定将请求转发到具体哪台真实服务器的时候,是通过负载均衡算法来实现的 。负载均衡算法,是一个负载均衡服务器的核心 。
负载均衡算法可以分为两类:静态负载均衡算法 和 动态负载均衡算法  。
静态负载均衡算法包括:轮询、比率、优先权