关注: CodingTechWork
负载均衡
负载均衡介绍
概念
- 负载均衡是建立在现有的网络结构之上,提供一种廉价且透明的方式进行网络设备和服务器带宽的扩展,从而增加吞吐量,加强应用服务的数据处理能力,有效提高网络的灵活性和可用性。
- 负载均衡重点在于"均",由原来的单个节点承接流量,变成多个节点分担流量,减少请求响应时间,提高应用程序的可用性和可伸缩性。
分类
根据采用的设备对象区分
- 软件负载均衡
- 硬件负载均衡
根据OSI模型的位置区分
二层负载均衡(mac地址)
数据链路层,使用虚拟mac地址方式,外部请求流量经过虚拟mac地址,负载均衡收到流量请求后分配后端实际的mac地址进行响应。
三层负载均衡(ip地址)
网络层,使用虚拟ip地址方式,外部请求流量经过虚拟ip地址,负载均衡收到流量请求后分配后端实际的ip地址进行响应。
四层负载均衡(tcp)
传输层,使用ip+port接收外部流量请求,转发到对应的机器上。
七层负载均衡(http)
应用层,使用虚拟的url或ip地址接收外部流量请求,转发到对应的处理服务器。
协议分层
常用分层
OSI模型分层
应用层
:对软件提供接口以使程序能使用网络服务,如事务处理程序、文件传送协议和网络管理等。(HTTP、Telnet、FTP、SMTP)表示层
:程序和网络之间的翻译官,管理数据的解密加密数据转换、格式化和文本压缩。(JPEG、ASCII、GIF、DES、MPEG)会话层
:负责在网络中的两节点之间建立和维持通信,以及提供交互会话的管理功能。(RPC、SQL、NFS)传输层
:提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。(TCP、UDP、SPX)网络层
:将网络地址(ip地址)翻译成对应物理地址(网卡地址),并决定如何将数据从发送方路由到接收方。(IP、ICMP、IGMP、IPX、ARP、RARP)数据链路层
:物理地址寻址、数据的成帧、流量控制、数据的检错、重发。(IEEE 802.3/.2、HDLC、PPP、ATM)物理层
:物理连网媒介,如电缆连线连接器。(RS232、V.35、RJ-45、FDDI)
四层负载均衡
介绍
- 四层负载均衡是基于ip+port的负载均衡。
- 四层是基于三层负载均衡,发布三层的ip地址(虚拟ip),再加上四层的端口号,从而决定哪些流量需要做负载均衡。
- 四层负载均衡器也称为四层交换机,分析IP层及TCP/UDP层,但是无法解析应用层协议。
原理
- 通过ip+port决定负载均衡的去向。
- 对流量请求进行NAT处理,转发至后台服务器。
- 记录tcp、udp流量分别是由哪台服务器处理,后续该请求连接的流量都通过该服务器处理。
示例
- 外部发送tcp请求进入负载均衡设备。
- 负载均衡设备接收到第一个来自客户端的SYN请求,选择后台服务器,将报文中的目标IP地址进行修改(修改为转发后的后台服务器),转发到该服务器。
- tcp三次握手进行客户端和服务器的连接。
产品
- F5:硬件负载均衡器,成本较高。
- Nginx:轻量级四层负载均衡器,可缓存。(nginx四层是通过upstream模块)
- Haproxy:模拟四层转发。
- lvs:重量级四层负载均衡器。
七层负载均衡
介绍
- 七层负载均衡器是基于虚拟的url或主机ip的负载均衡。
- 七层负载均衡在于内容的交换,即应用层报文内容的交换解析。
- 七层负载均衡器也称为七层交换机,支持四层负载均衡器的功能,且可分析应用层信息,如HTTP协议、URI、Cookie等信息。
原理
- 通过虚拟url或主机ip进行流量识别,根据应用层信息进行解析,决定是否需要进行负载均衡。
- 代理后台服务器与客户端建立连接,如nginx可代理前后端,与前端客户端tcp连接,与后端服务器建立tcp连接。
产品
- Nginx:基于http协议(nginx七层是通过proxy_paas)
- Haproxy:七层代理,会话保持、标记、路径转移等。
四层和七层的区别
分层位置
:四层负载均衡在传输层及以下,七层负载均衡在应用层及以下。性能
:四层负载均衡架构无需解析报文消息内容,在网络吞吐量与处理能力上较高;七层可支持解析应用层报文消息内容,识别URL、Cookie、HTTP header等信息。原理
:四层负载均衡是基于ip+port;七层是基于虚拟的URL或主机IP等。功能类比
:四层负载均衡类似于路由器;七层类似于代理服务器。安全性
:四层负载均衡无法识别DDoS攻击;七层可防御SYN Cookie/Flood攻击