最佳实践15:4层负载均衡
解决了数据链路层的负载问题之后,下面来看4层负载均衡技术。
从表3-1可以知道,网络协议的4层是指传输层,包括TCP和UDP等协议。
在W.Richard Stevens的著作TCP/IP Illustrated Volume1:The protocols中,对传输层协议进行了详细而专业的讲解,包括TCP和UDP的包格式、建立和结束、超时和重传等方面。在此不再进行赘述。
4层负载均衡的数据格式
下面来看一个实际的TCP包例子(文件:Layer4_Load_Balancing_Example.pcap,Frame 1),如图3-2所示。
图3-2 HTTP请求的TCP SYN包信息
所谓的4层负载均衡,简单地说,就是由负载均衡设备或者软件(统一称为负载均衡器,Load Balancer)通过TCP或者UDP的Header信息进行直接判断由哪个实际的后端服务器来实际处理该连接,从而进行转发。在这个例子中,可以用于负载均衡的信息是源端口或者目的端口。在实践中,负载均衡器以目的端口进行调度为主。
4层负载均衡的时序图
4层负载均衡的一般网络时序图,如图3-3所示。
图3-3 4层负载均衡的一般网络时序图
简要说明如下。
1)负载均衡器(Load Balancer)在收到来自客户端(Client)TCP SYN包后,即可进行负载调度。
2)向通过某种算法选择的后端服务器(Real Server)发送SYN包。
3)后端服务器收到SYN包后,回复SYN+ACK。
4)负载均衡器回复SYN+ACK给客户端。
5)客户端回复ACK。
6)负载均衡器发送ACK给后端服务器。此时,客户端、负载均衡器、后端服务器均达到ESTABLISHED状态。
7)客户端开始发送请求数据,经过负载均衡转发到后端服务器。
由此,可以总结出4层负载均衡有如下特点。
·模型简单。负载均衡器不需要关心业务逻辑,只进行负载调度、网络转发和对后端服务器的健康检查。
·吞吐量大。依据上条分析,CPU处理逻辑简单,相对于更高层次的负载均衡,可以提供更大的吞吐量。
·应用范围广。工作在4层,所以它几乎可以对所有应用做负载均衡,包括HTTP、数据库、在线聊天室等。
4层负载均衡的使用场景,可以总结为以下2种。
·要求较高的吞吐量。
·后端服务器的业务逻辑为私有实现,无法直接获取到应用层业务逻辑。