负载均衡集群技术 —— 四层与七层的区别

负载均衡集群

1、集群是什么?

可以用多个计算机把他们组合到一块,共同的去处理海量的请求。

1 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。

2 集群组成后,可以利用多个计算机和组合进行海量请求处理(负载均衡),从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个机器坏了整个系统还是能正常运行。

2、高可用(HA)

可以用多个计算机做备份:有一个正在使用的,其余做备份,正在使用的坏掉了,从备份里面任选一个作为正在使用的那个。

3、负载均衡集群技术

把请求尽可能平均的分配到每一台服务器去分摊处理。

① 负载均衡(Load Balance):负载均衡集群为企业需求提供了可解决容量问题的有效方案。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。

② 负载通常包括 应用程序处理负载 和 网络流量负载 ,每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。

4、负载均衡集群技术的实现

负载均衡(Load Balance)

负载均衡技术类型:基于 4 层负载均衡技术和基于 7 层负载均衡技术

负载均衡实现方式:硬件负载均衡设备或者软件负载均衡

硬件负载均衡产品:F5 、深信服 、Radware

软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)

5、负载均衡分类

负载均衡根据所采用的 1设备对象(软/硬件负载均衡),2应用的OSI网络层次(网络层次上的负载均衡),及3应用的地理结构(本地/全局负载均衡)等来分类。下面着重介绍的是根据应用的 OSI 网络层次来分类的负载均衡类型。

负载均衡可以大概分为以下几类:

  • 二层负载均衡(mac)

    一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。

  • 三层负载均衡(ip)

    一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应。

  • 四层负载均衡(tcp)

    在三层负载均衡的基础上,用ip+port接收请求,再转发到对应的机器。

  • 七层负载均衡(http)

    根据虚拟的 url 或 IP 或 主机名接收请求,再转向相应的处理服务器。

在实际应用中,比较常见的就是四层负载及七层负载。这里也重点说下这两种负载。

6、四层负载均衡(基于IP+端口的负载均衡)

再加上 负载均衡设备设置的服务器选择方式(算法)

           决定最终选择的 内部服务器。

layer4  (流量——请求)(1连接——n请求)(连接的保持时间由keepalive保活时间决定

  1. 在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是 由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。

  2. 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中 目标IP地址 进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即 三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个转发动作。

  3. 实现四层负载均衡的有:

  • F5:硬件负载均衡器,功能很好,但是成本很高。

  • lvs:重量级的四层负载均衡软件

  • haproxy:模拟四层、七层转发,较灵活

7、七层的负载均衡(基于虚拟的URL或主机IP的负载均衡)

  1. 所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

    layer7

    1. 在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据IP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

    2. 负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。

    3. 对应的负载均衡器除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI等信息,实现七层负载均衡。此种负载均衡器能理解应用协议。

    4. 实现七层负载均衡的软件有:

      • haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;

      • nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;

      • apache:功能较差

      • Mysql proxy:功能尚可。

8、四层负载与七层负载的区别

总结:从上面的对比看来四层负载与七层负载最大的区别就是效率(性能)与功能的区别。

四层负载架构设计比较简单,无需解析具体的消息内容,在网络吞吐量及处理能力上会相对比较高;

七层负载均衡的优势则体现在功能多,控制灵活强大。在具体业务架构设计时,使用七层负载或者四层负载还得根据具体的情况综合考虑。

四层用得最多得是LVS ,七层用的最多的是ngin

四层的传输速度会比较快,LVS的工作模式比较多,性能好,吞吐量大,安全性低

七层的功能比较多,可以用location匹配,rewrite地址重写,安全性高

同时,nginx还有上传、压缩的功能,

可以定义地址实,地址实里面写上我们的IP+Port,再用反向代理代理过去就可以了。

9、LVS 实现四层负载均衡项目实战

       见后篇

 

 


版权声明:本文为weixin_46687989原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。