LVS NAT/DR/TUN三种模式

2023-10-21 03:18
文章标签 模式 三种 nat dr lvs tun

本文主要是介绍LVS NAT/DR/TUN三种模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文为汇总加个人改动类型

1 什么是LVS

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。该项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

在这里插入图片描述

LVS主要有负载均衡调度器和RealServer组成。

2 LVS工作模式

LVS工作模式分为NAT模式、TUN模式、以及DR模式。

2.1 NAT

NAT(Network Address Translation)即网络地址转换,其作用是通过数据报头的修改,使得位于企业内部的私有IP地址可以访问外网,以及外部用用户可以访问位于公司内部的私有IP主机。VS/NAT工作模式拓扑结构如图2所示,LVS负载调度器可以使用两块网卡配置不同的IP地址,eth0设置为私钥IP与内部网络通过交换设备相互连接,eth1设备为外网IP与外部网络联通。
NAT 模式,通过修改数据包的「目标 IP 地址」和 「源 IP 地址」,将请求负载到多台真实服务器,是四层负载均衡模式中最基础的负载方式。因为它是对 IP 地址层面的修改,作用在网络层,所以可以对端口进行映射。真实服务器返回的响应数据包必须经过负载均衡器,所以要求真实服务器的默认网关是负载均衡器。

FULLNAT 模式,是对 NAT 模式的一种演进。通过同时修改「源 IP 地址」和「目标 IP 地址」,突破 NAT 模式中真实服务器的默认网关必须是负载均衡器的限制。但是由于同时修改了「源 IP 地址」和「目标 IP 地址」,真实服务器建立的真实连接和客户端毫无关系,所以会丢失客户端的信息。
各集群节点可以跨越不同的网络,不用在同一个VLAN

在这里插入图片描述

2.2 TUN

IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。它的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为 VIP 的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户

TUN 模式,是对 DR 模式的一种演进。突破 DR 模式中真实服务器的默认网关必须是负载均衡器的限制。TUN 模式不会对源数据包进行修改,而是在源数据包上额外新增一条 IP 首部信息,所以不能对端口映射,且要求真实服务器必须能够卸载掉两层 IP 首部信息
在这里插入图片描述

2.3 DR

DR方式是通过改写请求报文中的MAC地址部分来实现的。Director和RealServer必需在物理上有一个网卡通过不间断的局域网相连。 RealServer上绑定的VIP配置在各自Non-ARP的网络设备上(如lo或tunl),Director的VIP地址对外可见,而RealServer的VIP对外是不可见的。RealServer的地址即可以是内部地址,也可以是真实地址。

DR 模式,是对 NAT 模式的另一种演进。由于真实请求中响应数据包比请求数据包大很多的特点,在高并发下会成为系统的瓶颈,于是将响应数据包直接由真实服务器返回给客户端。使用 MAC 地址欺骗来达到此目的,作用于数据链路层,所以不能对端口映射。并且在真实服务器上,必须有一个仅自己可见的 “隐藏” VIP。在网络中,真实的 VIP 绑定在负载均衡器上,用来接收客户端的真实请求数据包。而 “隐藏” 的 VIP 绑定在真实服务器的 lo 接口上,用来欺骗自己可以正常接收目标地址是 VIP 的数据包。所以真实服务器的默认网关也必须是负载均衡器

DR跟TUN 方法相同,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。
跟 TUN 相比,这种方法没有 IP 隧道的开销,但调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的 HUB 相连。
VIP 地址为调度器和服务器组共享,调度器配置的 VIP 地址是对外可见的,用于接收虚拟服务的请求报文
所有的服务器把 VIP 地址配置在各自的 Non-ARP 网络设备上,它对外面是不可见的,只是用于处 理目标地址为VIP 的网络请求。

在这里插入图片描述
三种模式比较

模式NATTUNDR
serveranytunneling真实服务器必须处理ip封装,且不能实现端口映射non-arp device。真实服务器上需要配置上隐藏的vip
server networkprivateLAN/WANLAN
server numberlow (10~20)highhigh
server gatewayload balancerown routerown router

3 LVS 调度算法

LVS有三种工作模式,但不管采用的是哪种模式,调度算法进行调度的策略与算法都是LVS的核心技术,LVS在内核中主要实现了以下十种调度算法。

1.轮询调度

2.加权轮询调度

3.最小连接调度

4.加权最小连接调度

5.基于局部的最少连接

6.带复制的基于局部性的最少连接

7.目标地址散列调度

8.源地址散列调度

9.最短的期望的延迟

10.最少队列调度

参考:
https://chowdera.com/2020/11/20201114001110962w.html

这篇关于LVS NAT/DR/TUN三种模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/251560

相关文章

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

SQL Server身份验证模式步骤和示例代码

《SQLServer身份验证模式步骤和示例代码》SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证,本文将详细介绍身份... 目录身份验证方式的概念更改身份验证方式的步骤方法一:使用SQL Server Management S

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细