LVS NAT、DR、FULL-NAT 模式介绍

NAT模式

NAT模式下的转发流程

1. CIP ---> VIP
当请求达到调度器时,此时请求会先达到PREROUTING链,这个时候源IP为CIP  目标IP为VIP

2. CIP ---> RIP
当内核检测到访问的IP是本机是,会将数据包发送到INPUT链,IPVS检测到数据包中访问的后段服务是集群服务后,会将请求包发送至POSTROUTING链,这个时候会将目标IP改为RIP,此时源IP为CIP 目标IP为RIP,在这个过程中完成转换

3. RIP ---> CIP 
POSTROUTING通过选路,将请求发送至Real Server,Real Server发现目标IP为自己的IP时,进行请求处理然后将结果返回。此时源IP为RIP目标IP为CIP,再次返回给调度器

4. VIP ---> CIP
DIRECTOR 在返回请求前,会将源IP修改为VIP,然后相应客户端。 此时源IP为VIP,目标为CIP


NAT模式中的一大缺点就是无论是请求的数据包,还是返回的数据包,都必须要经过负载的这个点,请求的数据包一般内容较少,问题不是很大,而返回的数据包,一般都是图片,视频等等,这会给中间的调度器带来巨大的负担


DR模式


直接路由模式工作在数据链路层上(二层)。


Director和REAL SERVER都配置同一个IP(VIP),Director将该IP配置到对外的网卡上,Real server将该IP配置到lo网卡上。配置arp_ignore为1(目的是让数据包发出apr请求时,只有Director会响应该arp请求),所有REAL SERVER对本身这个IP的ARP请求保持静默。而Director收到数据包后根据调度算法,找出对应的 REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REAL SERVER。这时REAL SERVER通过网卡eth0收到这个数据包,由于Real Server上的lo网卡配置的也有VIP,所以RS接收该数据包。处理后直接返回给客户端。由于DR要对二层包头进行改换,所以DR和REAL SERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上。

1. CIP ---> VIP
客户端和IP建立连接。当数据包到达VIP所在的局域网时,在同一网段中,两个主机通信靠的是二层的物理地址而不是Ip地址,因此需要将IP地址转换为MAC地址,因此会发出apr请求,查询VIP对应的mac地址。Linux主机有这么一个特性,假设我们的主机上有两块网卡,比如eth0,eth1 当arp请求eth1的mac地址的时候,eth1会答复,这个是理所当然的,但是eth0也会“好心”的帮eth1回答这个arp请求。==我们在Real Server的lo网卡上配置了VIP,但是我们只想让Director上的网卡来响应我们的这个arp请求。因此就需要更改下我们的一些内核参数,

2. CIP ---> VIP
当用户请求到达DirectorServer,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP。


3. SMAC ---> DIPMAC    DMAC  --->  RIPMAC
PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链.IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址

5、由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server

VIP --->  CIP
client的请求被Director转发并经过链路层寻址到达Realserver后,由于Realserver的lo接口配置了VIP(请求中的目标IP正是VIP),所以接收请求并处理。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。此时的源IP地址为VIP,目标IP为CIP。==如果将源地址为VIP将数据包发送出去,那么最终交换机上会产生两条VIP对应的mac地址记录,一条是Director的mac地址记录,还有一条是Real server的mac地址记录,这将会导致真正的VIP无法接收到请求。==因此,此处要配置arp_announce,目的是为了修改源ip的目的地址。

DR模式的特性
1、保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
2、RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
3、RS跟Director Server必须在同一个物理网络中
4、所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
5、不支持地址转换,也不支持端口映射
6、RS可以是大多数常见的操作系统
7、RS的网关绝不允许指向DIP
8、RS上的lo接口配置VIP的IP地址


FULL-NAT模式


(1)RIP,DIP可以使用私有地址;
(2)RIP和DIP可以不再同一个网络中,且RIP的网关未必需要指向DIP;
(3)支持端口映射;
(4)RS的OS可以使用任意类型;
(5)请求报文经由Director,响应报文也经由Director


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/797052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VM虚拟机部署code-server服务+tailscale内网穿透,实现随处coding

1.Linux下安装code-server Releases coder/code-server (github.com)https://github.com/coder/code-server/releases先去发布页面查看最新的code-server版本,下载命令示例: wget https://github.com/coder/code-server/releases/download/v4.22.1/co…

【操作系统】STM32-操作系统——持续更新

【操作系统】STM32-操作系统——持续更新 文章目录 前言一、ucosii二、freertos1.介绍2.移植 总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、ucosii UCOSII移植到STM32F103C8T6上之移植记录(一) UCOSII移植到ST…

物联网实战--入门篇之(九)安卓QT--开发框架

目录 一、QT简介 二、开发环境 三、编码风格 四、设计框架 五、总结 一、QT简介 QT是一款以C为基础的开发工具,已经包含了很多常用的库,除了基本的GUI以外,还有网络、数据库、多媒体、进程通信、串口、蓝牙等常用库,开发起来…

万字长文,大数据PowerBI面试题及参考答案

1. 如何在PowerBI中创建计算列? 在PowerBI中,计算列是通过对现有数据应用公式来创建的新列。这允许用户进行更复杂的数据分析和数据准备。以下是创建计算列的基本步骤: 打开PowerBI Desktop。在“数据”选项卡中,选择“新建列”。输入新列的名称,并在公式栏中编写DAX公式…

好看流光风格个人主页HTML源码

这是一款好看流光风格个人主页HTML源码,感觉挺喜欢的,需要的自行下载! 源码下载 好看流光风格个人主页源码

数字化大变革下的企业新生态

在这个数字化大变革的时代,企业所面临的挑战和机遇。要成功应对这一变革,企业需要摆脱野蛮生长阶段,重新审视企业的基本常理和底层逻辑。中国企业发展到今天,要迎接外部环境的不确定性和高度复杂性,摆脱“大而肥、大而…

SpringBoot3整合RabbitMQ之三_工作队列模型案例

SpringBoot3整合RabbitMQ之三_工作队列模型案例 文章目录 SpringBoot3整合RabbitMQ之三_工作队列模型案例2. 工作队列模型1. 消息发布者1. 创建工作队列的配置类2. 发布消费Controller 2. 消息消费者One3. 消息消费者Two4. 消息消费者Three5. 输出结果 2. 工作队列模型 1. 消息…

SGD随机梯度下降

一、补充概念: 目标函数(Objective Function):这个术语通常指的是整个优化问题中需要最小化(或最大化)的函数。在机器学习和优化中,目标函数可以包括损失函数以及正则化项等。目标函数的最优化过…

代码随想录算法训练营day31

122_买卖股票的最佳时机(看了题解) 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后…

怎么转换图片格式jpg?分享几种转换的方法

我们都知道现在图片格式种类非常多,比较常用的有jpg、png、webp等,很多时候,我们在网上保存的照片不是jpg格式的,查看或者编辑起来就很麻烦,这时候你可能需要将图片转换成jpg格式,那怎么转换图片格式jpg呢?…

【CNN】ConvMixer探究ViT的Patch Embedding: Patches Are All You Need?

Patches Are All You Need? 探究Patch Embedding在ViT上的作用,CNN是否可用该操作提升性能? 论文链接:https://openreview.net/pdf?idTVHS5Y4dNvM 代码链接:https://github.com/tmp-iclr/convmixer 1、摘要 ViT的性能是由于T…

举个例子说明联邦学习

学习目标: 一周掌握 Java 入门知识 学习内容: 联邦学习是一种机器学习方法,它允许多个参与者协同训练一个共享模型,同时保持各自数据的隐私。 联邦学习概念(例子): 假设有三家医院,它们都希望…

我的 256天 创作纪念日

创作纪念日 我与CSDN的初识耕耘后的收获有笑有泪的日常小小的成就我的憧憬 我与CSDN的初识 在大一上学期的C语言课程中,我首次接触到CSDN。那时,面对众多难以理解的题目,我不得不频繁搜索相关知识和题解,CSDN成了我的救星。这个经…

这几个小众SaaS知识库工具原来这么好用,强烈推荐!

时代的进步和科技的发展,让我们有了更多高效的工作工具。由于云计算和SaaS(Software as a Service)的普及,越来越多的知识库工具被广大用户所知和使用。今天,就让我来为你推荐几款小众但卓效独特的SaaS知识库工具。 首…

前端将列表数据转换为树形数据的函数

大概的思路就是这个: 树状图的规则是 二级的 pid 等于 一级的 id 从这个规则进行下手 结构数据遍历数据,拆分他的数据结构 可以遍历n条的数据,主要就是通过递归的方法实现 以下就是代码案例(如有不准确的地方,欢迎各位…

vite配置postcss

1.搭建项目 pnpm create vite 2.下载postcss pnpm i postcss pnpm i postcss-pxtorem pnpm i autoprefixer 也可以去官网找其他插件下载 3.配置vite.config.js import postCssPxToRem from postcss-pxtorem import autoprefixer from autoprefixerexport default () >…

LeetCode hoot100-22

160. 相交链表给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。这道题几分钟就写出来了。应该是几年前做过,这种思想还能一直记得。所以算法题是不会白做的。 我的…

市场首款!华邦电子发布内置PQC算法的闪存产品

3月27日,全球领先的半导体内存解决方案供应商华邦电子股份有限公司推出TrustME Secure Flash W77Q系列的最新扩展,包括256Mb、512Mb和1Gb器件。 这些突破性的安全闪存设备是市场上首款针对后量子密码学(PQC)实施Leighton-Micali签…

FSP7罗德与施瓦茨FSP7频谱分析仪

181/2461/8938产品概述: 罗德与施瓦茨 FSP7 频谱分析仪以其创新的测量和大量标准功能而著称。FSP7 没有提供多种选项,而是标配了最先进的频谱分析仪所需的所有功能和接口。FSP 具有如此丰富的功能,以极具吸引力的性价比提供最先进的频谱分析…

Vscode已经安装imutils但是依旧报错

问题描述 使用 pip install imutils安装完成之后,依旧报错没有安装 问题解决 找到你安装的anaconda环境 使用cmd安装 :\环境路径\anaconda\envs\你的环境名称\Scripts\pip.exe install imutils