四层负载均衡的NAT模型与DR模型推导

2023-11-12

导读

本文首先讲述四层负载均衡技术的特点,然后通过提问的方式推导出四层负载均衡器的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)),如下图。

在这里插入图片描述

其中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。

在这里插入图片描述

需要注意的是,上面的后端的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所示。

在这里插入图片描述

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

作者:京东物流 伍泓全

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

四层负载均衡的NAT模型与DR模型推导 的相关文章

  • linux 杀死指定端口的进程

    利用kill 9 和 ss antlup命令 kill 9 ss antlup grep 18100 awk print 7 awk F print 3
  • 博睿数据参与支持2023年度证券期货业标准研究课题获评“优秀”

    近期 全国金融标准化技术委员会证券分技术委员会发布 关于公布2023年度证券期货业标准研究课题结题评审结果的通知 由西南证券独立申报 博睿数据提供系统支持的课题 证券期货业移动互联网应用程序性能指标及检测模型研究 在2023年度证券期货业标
  • Linux常用命令..

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读1 9k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • linux 定时任务crontab编写

    使用命令 crontab e 0 0 sh opt maxwellToMysql create data log sh 编写完保存
  • 服务器的丢包率高怎么办

    网络出现丢包状况了怎么办 具体情况可以从以下几点来判断 1 有可能是线路故障导致的 所以可以用光纤打光仪先判断是否是光纤的问题 2 对于设备方面来说 很多都是网络接口的光纤接触不良等 3 也可能是操作系统的问题 比如网卡问题和网络运营线路问
  • Linux配置Acado

    如果需要使用acado的matlab接口 请移步 Linux Matlab配置Acado 首先 安装必要的软件包 sudo apt get install gcc g cmake git gnuplot doxygen graphviz 在
  • Jenkins集成部署java项目

    文章目录 Jenkins简介 安装 Jenkins简介 Jenkins能实时监控集成中存在的错误 提供详细的日志文件和提醒功能 还能用图表的形式形象的展示项目构建的趋势和稳定性 官网 安装 在官网下载windows版本的Jenkins 但是
  • Linux配置Acado

    如果需要使用acado的matlab接口 请移步 Linux Matlab配置Acado 首先 安装必要的软件包 sudo apt get install gcc g cmake git gnuplot doxygen graphviz 在
  • CAN光端机技术指南:工业网络通信的高效解决策略

    在现代工业自动化和车辆网络通信中 CAN光端机 技术扮演着不可或缺的角色 它为控制器局域网 Controller Area Network CAN 提供了高效 稳定的数据传输解决方案 使得在复杂和严苛的工业环境中 数据通信更加可靠和高效 技
  • 【linux】日志管理和分析

    一 概述 在Linux系统的管理和运维中 日志文件起到至关重要的作用 它们记录了系统运行过程中的各种事件 包括系统故障 性能数据和安全事件 二 日志的作用和分类 日志的作用 日志文件记载了系统的生命线 利用它们可以 1 诊断系统故障 2 监
  • 使用匿名binder实现client向server端的死亡通知

    一 引言 因为binder是跨进程通信 难免会遇到服务端出现异常挂死的情况 这个时候需要通知到客户端进行相应的处理 在网络通信中是非常常见的机制 当然 在binder中 Android也为我们写好了相关的框架 但通过binder源码分析 你
  • 服务器OS是什么意思?

    一 什么是服务器操作系统 服务器不仅仅是由高性能硬件组成 并且是要求客户端操作系统 如Windows和Mac OS 服务器还需要一个称为服务器操作系统的操作系统 二 与客户端OS的区别 无论是Windows还是Mac OS 家庭或办公室使用
  • Linux 系统日志及其归档

    主要记录Linux 系统需要关注的日志文件 以及日志归档服务 rsyslogd 系统日志服务 rsyslogd 日志服务 rsyslogd reliable and extended syslogd 可靠 可扩展的系统日志服务 Rsyslo
  • Linux 软件安装以及管理

    本篇主要记录常用的软件安装和管理方式 主要是 yum rpm dnf apt pip 大致都是一样的 主要是部分软件提供了解决依赖的功能 内容不包括源码安装 源码安装情况相对比较复杂 后续有时间再补充 约定 案例所用模板软件均为 pytho
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • Python自动化操作:简单、有趣、高效!解放你的工作流程!

    今天跟大家分享一套自动化操作流程解决方案 基于 Python语言 涉及 pyautogui pyperclip pythoncom win32com 依赖包 安装命令为 pip install pyautogui pip install p
  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • Kubernetes (十三) 存储——持久卷-动静态分配

    一 简介 二 NFS持久化存储步骤 静态分配 1 集群外主机用上次nfsdata共享目录中创建用来测试的pv 1 3 目录 用来对三个静态pv 2 创建pv的应用文件 vim pv yaml apiVersion v1 kind Persi
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 服务器中E5和I9的区别是什么,如何选择合适的配置

    随着科技的进步 服务器处理器的性能在不断攀升 其中 Intel的E5和I9系列处理器在业界具有广泛的影响力 而当我们在选择服务器的时候会有各种各样的配置让我们眼花缭乱不知道该怎么去选择 下面我跟大家分享一下E5跟I9有什么区别 方便我们在选

随机推荐

  • 交换两个变量的值(包括字符串的交换)

    例 交换两个变量的值 输入两个整型变量a和b 设计一个交换函数将其交换后再输出 注意 不能直接输出b和a 错误代码 include
  • 适配任何数据结构的异步Excel生成(企业级开发)

    文章目录 前言 一 Java操作Excel的基础知识 二 测试准备 三 实现源码 四 功能测试 总结 源码 前言 背景 由于公司的excel生成过于缓慢 有时生成一个excel文件需要等待几十秒甚至几分钟 在等待的时候用户不能跳转其他页面
  • YOLOv4:目标检测的最佳速度和精度

    YOLOv4 目标检测的最佳速度和精度 摘要 随着深度学习的发展 目前已经出现了很多算法 或者训练技巧 tricks 来提升神经网络的准确率 在实际测试中评价一个算法的好坏优劣主要看两点 一是能否在大规模的数据集中起作用 work 二是是否
  • 机器人教育培养孩子的逻辑思维

    孩子拥有好的思维逻辑 是每个父母梦寐以求的 怎样锻炼孩子的思维逻辑能力 也是每个父母头疼的事情 格物斯坦小坦克想说 其实培养孩子的思维能力是有迹可循的 了解顺序概念 事物按照大小 硬软 胖瘦等会有一个顺序 如小朋友们有时候会按高矮站队 这些
  • 华为OD机试-机器人走迷宫

    题目描述 机器人走一个迷宫 给出迷宫的x和y x y的迷宫 并且迷宫中有障碍物 输入k表示障碍物有k个 并且会将障碍物的坐标挨个输入 机器人从0 0的位置走到x y的位置并且只能向x y增加的方向走 不能回退 如代码类注释展示的样子 表示可
  • 因果4-因果模型

    上一章我们从统计学角度学习了贝叶斯网络中点与点的关系 并没有真正涉及因果的重要内容 因为基于的都是条件概率 没有牵扯到干预 而干预是因果很重要的操作 这一章我们从干预开始 进一步学习如何识别因果图中的因果量 首先让我们回顾并正式定义第一章中
  • 【2021】最新的ECMAScript标准定义了8种数据类型

    最新的ECMAScript标准定义了8种数据类型 一 七种基本数据类型 Boolean Null Undefined Number String Symbol ES6新增 一种实例是唯一且不可改变的数据类型 Bigint 任意精度的整数 可
  • CiteSpace可视化出图:制作聚类图、时间线图、时区图、Landscape视图、地理可视化图等多种可视化绘制。

    CiteSpace 是一款优秀的文献计量学软件 能够将文献之间的关系以科学知识图谱的方式可视化的展现在操作者面前 科研人员 多多少少都会用到一些 但是 CiteSpace 是基于 Java 开发 旧版本需要安装 Java 运行环境才能使用
  • ADC误差

    本文转载自 http blog csdn net tianhen791 article details 38736217 动态测试关注的是器件的传输和性能特征 即采样和重现时序变化信号的能力 相比之下 线性测试关注的则是器件内部电路的误差
  • IntelliJ IDEA和Eclipse快捷键对比总结

    IntelliJ IDEA和Eclipse快捷键对比总结 Eclipse Oxygen Release 4 7 0 IntelliJ IDEA 2017 3 4 Ultimate Edition 提醒一点 需要注意和其他软件的热键冲突 比如
  • opencore 启动总是在win_刷黑苹果之后无法进入BIOS设置opencore

    子方有话 子方的配置是是华硕B450MK AMD R5 2600 GT710 在完成子方黑苹果系统的安装后 子方把引导转到了硬盘 没几次后 子方发现无法进入BIOS设置 不过可以通过F8键进入启动设置 选择启动windows 但不管通过什么
  • SpringBoot集成redis(3)

    SpringBoot集成redis 3 Redisson方式实现分布式锁 文章目录 SpringBoot集成redis 3 Redisson方式实现分布式锁 TOC 前言 一 Redisson是什么 二 集成步骤 1 依赖引入 2 文件配置
  • mysql的流程控制if与case

    mysql中常用的流程控制有两种 1 if语句 基本语法 IF expr v1 v2 如果表达式 expr 成立 返回结果 v1 否则 返回结果 v2 用法跟三目运算符类似 适用只有两种结果 案例 SELECT IF 1 gt 0 正确 错
  • 疯壳AI语音及人脸识别教程2-4串口

    目录 1 1寄存器 1 1 2实验现象 17 视频地址 https fengke club GeekMart su f9cTSxNsp jsp 串口 官方QQ群 457586268 串行接口分为异步串行接口和同步串行接口两种 异步串行接口统
  • 这100套毕设项目,是给计算机系学弟学妹在毕业季的一波镇定剂!练手收藏

    又到了一年一度的毕业季了 有憧憬社会的 也有怀念校园生活的 不管如何我们都要努力向前 迎接变化 这次小编整理的100套Java毕设项目 给正在发愁的你和将来要项目练手的你一波助力 具体内容目录给大家看看 希望可以帮到你 需要更多学习方式和资
  • [论文阅读] (28)李沐老师视频学习——1.研究的艺术·跟读者建立联系

    娜璋带你读论文 系列主要是督促自己阅读优秀论文及听取学术讲座 并分享给大家 希望您喜欢 由于作者的英文水平和学术能力不高 需要不断提升 所以还请大家批评指正 非常欢迎大家给我留言评论 学术路上期待与您前行 加油 前一篇文章介绍AAAI20腾
  • depends工具查看exe和dll依赖关系

    应用场景 在使用QT等图形用户界面应用程序开发框架开发Windows程序时 通常需要将写到的程序发布到其它计算机中进使用 在使用Qt发布程序时 虽然使用windeployqt工具能够自动打包好大部分依赖库 但还是难免会漏掉一些第三方库导致发
  • C#学习05-类简介与派生继承

    基本概念 类是一种数据结构 它可以包含数据成员 函数成员以及嵌套类型 C 中类的声明 C 中类的声明即定义 不同于c 中声明与定义是分开的 C 类构造函数 类的 构造函数 是类的一个特殊的成员函数 当创建类的新对象时执行 构造函数的名称与类
  • Scrapy源码分析之Dupfilters模块(第二期)

    大家好 我是TheWeiJun 欢迎来到我的公众号 今天给大家带来Scrapy源码分析之Dupfilters模块源码详解 希望大家能够喜欢 如果你觉得我的文章内容有价值 记得点赞 关注 特别声明 本公众号文章只作为学术研究 不用于其它用途
  • 四层负载均衡的NAT模型与DR模型推导

    导读 本文首先讲述四层负载均衡技术的特点 然后通过提问的方式推导出四层负载均衡器的NAT模型和DR模型的工作原理 通过本文可以了解到四层负载均衡的技术特点 NAT模型和DR模型的工作原理 以及NAT模型和DR模型的优缺点 读者可以重点关注N