20 | 常见的四层负载均衡的工作模式是怎样的?
- 深入了解
- 翻译
- 解释
- 总结
四层负载均衡和七层负载均衡是网络系统中常见的负载均衡工作模式。四层负载均衡通过维持同一个TCP连接来实现负载均衡,工作在二层和三层,能够改写MAC地址和IP地址。它包括基于传输层和网络层的负载均衡,以及数据链路层负载均衡和网络层负载均衡的实现方式和适用场景。另外,七层负载均衡器能够感知应用层通讯的具体内容,实现更智能化的路由、安全防护等功能。文章还介绍了常见的均衡策略和负载均衡器的实现方式。读者通过本文可以全面了解负载均衡的工作原理、实现方式以及各自的优缺点和适用场景。
请先领取课程
全部留言(30)
- 最新
- 精选
- 饭老师: 对下面这描叙情况有个疑惑? 正是因为实际处理请求的真实物理服务器 IP 和数据请求中的目的 IP 是一致的,所以响应结果就不再需要通过负载均衡服务器进行地址交换,我们可以把响应结果的数据包直接从真实服务器返回给用户的客户端,避免负载均衡器网卡带宽成为瓶颈 既然真实服务器ip和负载均衡器一样。那么真实服务器给客户端响应时,还需要重新三次握手建立连接吗,如果需要的话,客户端建立连接时不是依然要发包经过负载均衡器
作者回复: 所有的基于转发的负载均衡,都是维持着同一条TCP连接,响应的时候当然不需要再建立连接了。事实上,从客户端上看,完全看不出来响应结果是从均衡器还是从真实服务器发回来的(因为它们有相同的IP,用着同一个TCP连接)
2021-03-1829 - tt老师新年好。 多级混合负载均衡是因为流量在不同的阶段业务属性的“含量”是逐渐增加的,所以负载均衡约到后方,越靠近应用层。 同时,流量在不同的阶段,流量大小也是不同的,所需的处理时间也是不同的。 类似于医疗系统的分层分类,负载均衡设备也做了类似处理。
作者回复: 新年好,理解和类比都很好。
2021-01-016 - 邓超周老师,网络层负载均衡,均衡器将请求转发给真实应用服务器,不管是包一层头,还是直接修改头,是不是目标MAC地址都必须得是真实应用服务的MAC地址?
作者回复: 确实是真实服务器。但是既然讨论的是网络层的负载均衡,一般就不会去谈论链路层的MAC地址了,这没有意义。原因是真实服务器收到的Frame Header必定是由上一跳(Next Hop)的机器所封装的,原有负载均衡器收到Frame Header早已经在路由的过程中被拆掉了。
2021-02-015 - 小何请问老师nginx支持的四层负载均衡是不是跟上面说的LVS不一样,并不是包转发,而也是采用的代理?也就是存在两条独立的tcp连接。
作者回复: Nginx一般是用来做七层负载的,在四层工作一般就考虑LVS。不过它确实可以通过stream模块做四层BL,这个模块我自己没有实际用过,但简单地看看它的配置项,是以proxy的形式工作的。如果具体要用到,建议找一下这个模块的详细资料来确认一下。
2021-01-105 - 李二木老师好,<“四层”的意思是说,这些工作模式的共同特点是都维持着同一个 TCP 连接,而不是说它就只工作在第四层”>,对维持同一个TCP连接很困惑,它是指客户端最终获取是真实服务器返回的数据,不会再经过负载均衡服务器返回吗?
作者回复: 不是啊,譬如NAT模式就不是由真实服务器直接返回的,必须通过BL去转发。但这并不影响它是“一个TCP连接”,不妨试想一下你家里多台机器通过路由器NAT上网的场景,有路由器在中间转发,并不阻碍你与外网的服务器直接建立连接。
2021-01-3142 - 大力水手Jerry老师,“此时正式服务器、负载均衡器、客户端三者之间,是由两条独立的 TCP 通道来维持通讯的”,一贯性考虑,前面应该是“真实服务器”。
作者回复: 感谢指正,这是个错别字哈.
2021-03-19 - FollWindsIPv4 数据包Headers固定长度是20个字节,文中表格里源地址应该为4个字节
作者回复: 赞细心,感谢,我通知编辑更新。
2021-01-08 - zhanyd为什么负载均衡不能只在某一个网络层次中完成,而是要进行多级混合的负载均衡? 因为每一个网络层的功能是不一样的,这样就决定了每一层都有自己独有的数据,在不同的网络层做负载均衡能达到不同的效果。 例如:要修改MAC地址在数据链路层修改最方便,要修改IP地址最好在网络层修改。 关于网络分层打个比方,小帅在网上下单买东西,卖家需要寄快递,把要寄的商品(物理层)打包到包装盒里(数据链路层),然后把包装盒放到快递盒子里(网络层),在快递单上写上寄件地址和收件地址(Headers)。 快递员打电话给小帅拿快递(传输层), TCP三次握手连接: 1.快递员:“喂,这里有你的快递,麻烦到门口拿一下”。 2.小帅:“好的,我这就过来”。 3.快递员:“那我在门口等你”。 小帅拿到快递后,在网上点击确认收货按钮,确认收货(返回 http Status Code 200,应用层)。2021-01-03226
- 风不同的层有不同的优劣,混合的意义就是使用后效果的最大化。低层在前,高层在后,是因为底层相对来说处理效率高,高层涉及到应用层协议,多增加的tcp处理。如果高层在前,很容易出现高层到达系统瓶颈,后面的服务还有余量2021-01-047
- neohope负载均衡和去医院看医生有些相似的: 1、刚到医院,要去分诊挂号,护士和挂号台的人不会问你一堆信息,只询问最基本信息并确定要看哪个科,就可以了。(四层负载,所需信息简单,工作效率高,重在吞吐量,不要有阻塞) 2、到了科室,尤其是看很繁忙的科室,会有护士和年轻医生,各种询问患者的情况,甚至把一些基础检查都做了,才会让专家去进一步提供服务;(七层负载,所需信息复杂一些,效率低一些,但好在量小了,也就避免了阻塞) 3、然后是资深医生看诊(实际网络服务) 但如果反过来,分诊挂号的时候,就咨询一大堆的问题,并作一些检查,每个患者耗时都长,会造成拥堵,患者排队n小时,而且到了科室就没有二次分诊的必要了。所以,七层代理放到前面,吞吐量就差了,四层代理也就没有存在的必要了。2021-03-316