首页 > 其他分享 >四层负载均衡的NAT模型与DR模型推导 | 京东物流技术团队

四层负载均衡的NAT模型与DR模型推导 | 京东物流技术团队

时间:2023-08-28 12:34:22浏览次数:36  
标签:负载 DR 模型 server NAT ip FLB 数据包

导读

本文首先讲述四层负载均衡技术的特点,然后通过提问的方式推导出四层负载均衡器的NAT模型和DR模型的工作原理。通过本文可以了解到四层负载均衡的技术特点、NAT模型和DR模型的工作原理、以及NAT模型和DR模型的优缺点。读者可以重点关注NAT模型到DR模型演进的原因(一种技术的诞生肯定是为了弥补现有技术的不足)。除此之外,读者可以多多关注一些基本的、底层的知识,比如内核空间、用户空间、计算机网络等。 为了叙述方便,文中将“四层负载均衡器” 简称为“FLB” (Four-tier Load Balancer)。

一、FLB在网络中的基本拓扑

FLB工作在OSI七层网络参考模型的第四层(传输控制层),FLB上必须具备两个IP地址,VIP和DIP。VIP是暴露给客户端的访问地址;DIP是FLB的分发IP,将数据包通过DIP所在的网卡发送给后端的真实提供服务的服务器(后面简称“RS”(Real Server)),如下图。

四层负载均衡的NAT模型与DR模型推导 | 京东物流技术团队_负载均衡

图1 FLB的基本网络拓扑图

其中CIP为客户端的ip,RIP为RS的ip。

二、四层负载均衡技术的特点

由于FLB工作在传输控制层,因此它对数据包的处理(转发)总是运行在内核态,不会产生内核态和用户态的切换。

虽然FLB工作在传输控制层,但是它并不会和client进行三次握手,它只是“偷窥”数据包中的ip地址和端口号,然后根据配置的规则进行数据包的转发,速度极快。

三、提出问题

在图1中,如果client发送数据包最终到达server1,由于client数据包的目的ip为VIP,当server1收到数据包时,发现数据包的目的ip竟然不是自己的ip,那岂不会丢弃数据包?

四、NAT模型

NAT(Network Address Translation)模型,针对3中的问题,可以在FLB中增加对客户端的目的地址vip的地址转换,将vip转换成后端某一RS的ip,然后再将数据包发送出去,详细的网络拓扑如图2。

四层负载均衡的NAT模型与DR模型推导 | 京东物流技术团队_均衡器_02

图2 FLB的NAT 模型的基本网络拓扑图

需要注意的是,上面的后端的server的默认网关需要配置成负载均衡服务器的地址。这样server响应的数据包才能回到负载均衡服务器上。

NAT模型的弊端

很明显的一点是,在做NAT地址转换时,会消耗负载均衡服务器cpu的算力。大多数情况下,client向server请求的数据报文很小,而server向client响应的数据报文很大,这就是“非对称”的。在通过NAT的方式实现负载均衡时,client请求报文和server返回的数据报文都要经过负载均衡服务器进行网络地址转换,如果请求的并发流量很大,那么大量并发的响应报文返回到FLB时,负载均衡服务器的网络带宽就会成为瓶颈

五、DR(Direct Route)模型

直接路由模式可以解决NAT模型的两个弊端。DR模式不经过NAT地址转换,而是将server端返回的数据包的源ip直接写成VIP发送出去。这其中涉及到几个要点:

  • 由于server返回的数据包的源ip要写成vip,而不是rip,那么在server本地需要配置vip。并且这个vip必须是对外隐藏的,也就是说外界(客户端、负载均衡器)不能直接访问到server中的vip,而是必须访问负载均衡器暴露的vip。
  • 在负载均衡器中,接收到client的数据包的源ip是cip,目的ip是负载均衡器暴露的vip,那么负载均衡器如何才能将该数据包发送给server呢?(由于server的vip是隐藏的,负载均衡服务器只能看到rip)。在DR模式中,是通过MAC地址欺骗的方式来实现。负载均衡服务器接收到client的请求数据包之后,将目的MAC地址替换为后端某一台server1的MAC地址(替换之前,目的MAC地址为负载均衡器的MAC地址),然后将数据包发送出去,进行点到点通信,这样server1就收到了client的数据包。 点对点通信依赖的是MAC地址(数据链路层)。
  • 基于上述内容:要实现负载均衡器和后端server点对点通信,因此约束了:负载均衡服务器的DIP和后端的server必须在同一个机房(局域网)。

根据上面的推导,DR模型的基本网络拓扑如图3所示。

四层负载均衡的NAT模型与DR模型推导 | 京东物流技术团队_负载均衡_03

图 3 FLB的DR 模型的基本网络拓扑图

在RS中如何配置VIP,如何实现VIP隐藏?且听下回分解:LVS DR模型实验搭建与验证。

作者:京东物流 伍泓全

来源:京东云开发者社区 自猿其说Tech 转载请注明来源

标签:负载,DR,模型,server,NAT,ip,FLB,数据包
From: https://blog.51cto.com/u_15714439/7262241

相关文章

  • 03 通信模型
    OSI参考模型OSI模型(OpenSystemsInterconnectionModel),由国际化标准组织ISO(TheInternationalOrganizationforStandardization)收录在ISO7489标准中并于1984年发布。OSI参考模型又被称为七层模型,由下至上依次为:物理层:在设备之间传输比特流,规定了电平、速度和电缆......
  • buildroot 构建根文件系统(2)开机自启动脚本
    一、开发背景构建最小系统后成功运行后,有些应用或者脚本需要开机自启动,不要手动操作二、开发需求开机启动用户路径下的test.sh脚本/root/test.sh三、开发环境LinuxUbuntu 4.15.0-65-generic+ buildroot-2023.02.3+i.mx6d(cortex-A9)四、实现步骤1......
  • HarmonyOS/OpenHarmony(Stage模型)卡片开发应用上下文Context使用场景二
    3.创建其他应用或其他Module的Context基类Context提供创建其他应用或其他Module的Context的方法为createModuleContext(moduleName:string),创建其他应用或者其他Module的Context,从而通过该Context获取相应的资源信息(例如获取其他Module的获取应用开发路径信息)。调用createModuleCon......
  • 简单的将pytorch模型部署到onnx
    1.创建一个pytorch模型这里我用的U2Net,直接加载好训练出的权重model=U2Net(class_nums=4)model.load_state_dict(torch.load(checkpoint_path))2.将pytorch模型转成onnx格式x=torcg.randn(1,3,512,512)withtorch.no_grad():torch.onnx.export(......
  • buildroot 构建根文件系统(2)使能 SSH
    一、开发背景承接上一章节,构建最小系统后成功运行后,发现没有SSH功能SSH:SecureShellProtocol,开发阶段常用SSH远程传输文件,只要匹配IP地址即可二、开发需求配置系统使能SSH功能三、开发环境LinuxUbuntu 4.15.0-65-generic+ buildroot-2023.0......
  • 20230628 java.sql.DriverManager
    介绍java.sql.DriverManagerpublicclassDriverManager驱动管理器根据API编写的程序都可以与驱动管理器进行通信,而驱动管理器则通过驱动程序与实际的数据库进行通信APIstaticgetConnectionConnectiongetLogWriter,setLogWritergetLoginTimeout,setLoginT......
  • 三维模型OBJ格式轻量化压缩处理效率提高的技术方法探讨
    三维模型OBJ格式轻量化压缩处理效率提高的技术方法探讨   要提高三维模型OBJ格式轻量化压缩处理的效率,可以采取以下方法:1、优化算法选择:选择合适的优化算法对模型进行轻量化处理。不同的优化算法有不同的时间复杂度和效果。一些常用的优化算法包括网格简化、顶点合并、......
  • 浅析三维模型OBJ格式轻量化压缩文件大小的技术方法
    浅析三维模型OBJ格式轻量化压缩文件大小的技术方法   在减小三维模型OBJ格式轻量化文件大小方面,有许多技术和方法可以使用。下面我将介绍一些常用的方法来减小OBJ文件的大小。1、优化顶点数量:减少OBJ文件中的顶点数量是减小文件大小的一种有效方法。可以使用一些优化算......
  • Obsidian插件Excalidraw安装slideshow脚本
    原文地址:https://www.cnblogs.com/liqinglucky/p/slideshow.html插件介绍:Excalidraw的动态演示效果来了,伟大的匈牙利大叔又放狠招了,你的Obsidian更好用了_哔哩哔哩_bilibili由于一开始我的电脑访问github很慢,在安装slideshow时总是提示couldnotopenscriptenginerepository......
  • 太多网工对NAT还存在这4种误解!你是其中一个吗?
    NAT是解决公网地址不够用大家最熟悉的网络技术之一,而NAT最依赖的是NATtranslation表项,至于NAT的概念和背景这里不再解释,网络上有很多关于此的类似介绍,自己搜索即可。下面主要是针对大家对NAT的一些误解进行分析。1 误解一:inside和outside大家常规的理解可能认为inside就是指私网;o......