site
stats
2 min read

为什么说LVS 是四层负载均衡?

对知乎上“LVS 集群采用 IP 负载均衡技术和基于内容请求分发技术,为什么却说 LVS 是四层负载均衡?”问题的回答

忍不住回答一下这个问题。

当我们说一个网络技术是基于哪一层时,我们指的是7层OSI模型的某一层。但在TCP/IP协议族并没有严格的遵守OSI,TCP/IP的分层并不能很好的对应到OSI模型中。尽管如此,TCP/IP协议族中的协议也通常会映射到OSI模型中。如下表:

OSI model layers

按照OSI模型,IP协议映射到3层网络层协议,TCP和UDP协议映射到4层传输层协议。

要实现一套负载均衡系统,必须基于OSI模型4层以上。以一个例子来做说明原因:假设我们要设计一套支持HTTP,以轮询为分发策略的负载均衡系统,后端有两台Real Server。如果我们的负载均衡系统是基于3层(网络层),要发起HTTP请求,首先需要进行TCP三次握手以建立可靠的传输连接。三次握手会发出若干个数据包,由于基于3层的负载均衡器没有能力知道这些数据包是为了建立连接,只能将数据包以轮询的方式,分别发送到Real Server A和Real Server B。这样TCP的三次握手根本就无法成功。

负载均衡系统必须建立在面对网络连接的基础上,而不是面对数据包的基础上。这套系统需要能够理解传输层网络连接,保证一次连接之内的所有数据包都转发到同一后端真实服务器上去。OSI模型4层(传输层)才能提供可靠的数据传输服务,因此它必须基于OSI模型4层之上。