四层网络负载均衡是基于IP和端口做的转发。通过虚拟的IP和端口接收到请求后,然后分配到真实的服务器,K8s中的endpoint就是基于四层网络负载均衡实现。
七层网络负载均衡是基于URL等应用层信息作的转发。通过虚拟的URL或者主机名接收到请求,然后在分配给真实的服务器。K8s中的ingress就是基于七层网络负载均衡实现。
四层网络负载均衡和七层网络负载均衡有什么区别呢?
四层网络负载:一般是在对于后台的服务器进行负载均衡的时候,根据IP地址和端口号以及一些负载均衡设备(例如LVS、F5)来决定那些流量需要做负载均衡,对需要处理的流量进行转发,记录下TCP/UDP的流量通过哪一台服务器处理,后续的同一链接的流量都可以转发到当前的服务器。
举个例子:负载均衡设备在收到一个TCP请求,接收到SYN的请求时,会通过LVS上配置的一些负载策略进行选择,选出合适的后台服务器,并对报文中的目标IP地址进行修改,修改成后段服务器的IP地址,然后进行转发。 TCP在链接建立的过程中,三次握手时客户端与服务器直接建立的,而负载均衡设备只是起到了一个类似于路由器的转发作用。有的时候为保证服务器的回包可以正确返回给负载均衡设备,在转发报文的时候可能会对报文的源地址进行修改。
七层网络负载均衡(“内容交换”):在四层的基础上,加上了应用层、表示层、会话层。同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言