一.集群是什么?
1.集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
2.集群组成后,可以利用多个计算机和组合进行海量请求处理(
负载均衡
),从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个机器坏了整个系统还是能正常运行。
二.负载均衡集群技术
1.负载均衡(Load Balance):负载均衡集群为企业需求提供了可解决容量问题的有效方案。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。
2.负载通常包括应用程序处理负载和网络流量负载,每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。
三.负载均衡集群技术的产品
1.负载均衡技术类型:基于 4 层负载均衡技术和基于 7 层负载均衡技术
2.负载均衡实现方式:硬件负载均衡设备或者软件负载均衡
3.硬件负载均衡产品:
F5
、深信服 、Radware
4.软件负载均衡产品:
LVS
(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
四.效果展示图
五.负载均衡分类
负载均衡根据所采用的设备对象(
软/硬件负载均衡
),应用的OSI网络层次(
网络层次上的负载均衡
),及应用的地理结构(
本地/全局负载均衡
)等来分类。下面着重介绍的是根据应用的 OSI 网络层次来分类的负载均衡类型。
分类
:
二层负载均衡(mac)
一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。
三层负载均衡(ip)
一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应。
四层负载均衡(tcp)
在三层负载均衡的基础上,用ip+port接收请求,再转发到对应的机器。
七层负载均衡(http)
根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。
在实际应用中,比较常见的就是四层负载及七层负载。这里也重点说下这两种负载。
六.四层负载均衡(基于IP+端口的负载均衡)
所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
layer4
1. 在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
2. 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。
3. 对应的负载均衡器要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
4. 实现四层负载均衡的有:
- F5:硬件负载均衡器,功能很好,但是成本很高。
- lvs:重量级的四层负载均衡软件
- haproxy:模拟四层转发,较灵活
七.七层的负载均衡(基于虚拟的URL或主机IP的负载均衡)
所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
layer7
1. 在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据IP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。
2. 负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个**代理服务器**。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。
3. 对应的负载均衡器除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI等信息,实现七层负载均衡。此种负载均衡器能理解应用协议。
4. 实现七层负载均衡的软件有:
- haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;
- nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;
- apache:功能较差
- Mysql proxy:功能尚可。
八.四层负载与七层负载的区别
| | 四层负载均衡 | 七层负载均衡 |
+----------+-------------------------+----------------------------------------------+
| 基于 | 基于IP+Port | 基于URL或主机IP等。 |
+----------+-------------------------+----------------------------------------------+
| 类似于 | 路由器 | 代理服务器 |
+----------+-------------------------+----------------------------------------------+
| 复杂度 | 低 | 高 |
+----------+-------------------------+----------------------------------------------+
| 性能 | 高;无需解析内容 | 中;需要算法识别 URL和 HTTP head 等信息 |
+----------+-------------------------+----------------------------------------------+
| 安全性 | 低, | 高, |
+----------+-------------------------+----------------------------------------------+
| 额外功能 | 无 | 会话保持,图片压缩,等 |
总结:从上面的对比看来四层负载与七层负载最大的区别就是效率与功能的区别。四层负载架构设计比较简单,无需解析具体的消息内容,在网络吞吐量及处理能力上会相对比较高,而七层负载均衡的优势则体现在功能多,控制灵活强大。在具体业务架构设计时,使用七层负载或者四层负载还得根据具体的情况综合考虑。