Layer 4 vs Layer 7 Load Balancing - tenji/ks GitHub Wiki

四层、七层负载均衡的区别

OSI 参考模型描述了可以执行 Load Balance 的各个层,表面上看,它们是第七层(应用层)和第四层(传输层),如下图所示。

第四层负载平衡器在传输层上运行,例如传输控制协议(TCP)和用户数据报协议(UDP)。通常,第四层的路由决策基于源/目标 IP 或端口,而无需进一步的数据包检查。

如 OSI 模型中所示,应用层(第七层)的负载平衡是适用的最高级别,并在应用程序层协议(如HTTP)上提供了更深的上下文。第七层 Load Balance 在应用层上运行,可以利用此附加的应用程序感知,根据消息的内容做出更复杂,更明智的 Load Balance 决策,对内容进行优化和更改(例如HTTP标头操作,压缩和加密),并通过监视应用程序的运行状况来确保可靠性和可用性。

第七层 Load Balance 也称为反向代理(reverse proxy)

一、四层 Load Balance 特性

二、七层 Load Balance 特性

2.1 持久化(Persistence)

持久性使来自单个客户端的所有请求都可以发送到同一服务器,以便可以维护该应用程序上下文。 持久性也称为“亲和性”,“服务器亲和性”或“服务器粘性”。

2.2 上下文切换(Context Switching)

上下文切换允许负载均衡器根据来自客户端的请求中信息的内容和上下文来引导流量。

2.3 内容改写(Content Rewriting)

内容重写允许 Load Balance 重写客户端请求和答复,以支持隐藏内部 URL 的用例,并支持具有硬编码 URL 的应用程序。

2.4 Secure Socket Layer (SSL)

第七层负载平衡器提供了终止 SSL 流量的功能。 为网络数据包处理 SSL/TLS 加密是一项资源密集型任务。在用于服务于客户端请求的 Web 服务器和应用程序服务器上执行此操作会增加服务器上的额外开销,这些开销应针对内容交付进行优化。

2.5 健康检查(Health Checking)

运行状况检查已发展为 Load Balance 查询应用程序服务器和应用程序以确定其是否正常运行并可以接收流量的一种方法。Load Balance 算法尊重运行状况检查的结果,并且仅将请求发送到可用的且可以及时响应的应用程序服务器和应用程序。

2.6 日志和监控(Logging & Monitoring)

由于其在网络上的逻辑位置,第七层 Load Balance 会检查流入和流出网站和应用程序服务器的所有第四层和第七层流量。所有这些活动都记录在日志中,以帮助监视和跟踪网络信息。这些可以传递给专用的监视工具进行分析,并且可以识别任何可疑活动。最佳做法是,应从收集日志并进行远程分析的网络设备发送日志。

三、LVS

...

四、Nginx

...

五、HAProxy

...

参考链接