1、DR模式:(Direct Routing)直接路由模式

DR模式的网络拓扑:

DR模式的工作过程:

1、当一个client发送一个WEB请求到VIP,LVS服务器根据VIP选择对应的real-server,根据调度算法,在Pool中选择一台Real-server。

LVS在hash表中记录该次连接,然后将client的请求包发给选择的Real-server,最后选择的Real-server把应答包直接传给client;

2、当client继续发包过来时,LVS根据刚才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的Real-server上;

3、当连接中止或者超时,hash表中的记录将被删除。

DR模式的几个细节:

1、DR和RS必须在相同的网段;

2、DR模式在转发client的包时,只修改了包目的MAC地址为选定的Real-server的mac地址,

      如果LVS和Real-server在不同的广播域内,那么Real-server就没办法接收到转发的包。

3、DR上必须开启路由转发功能;

4、RS的网关不需要设置成DR(和NAT模式的区别)。

5、RS上需要禁用ARP通告,这样,RS就会直接回复客户端,而不是通过DR。

下面是mac地址的修改过程:

2、IP Tunneling(隧道)模式

IP Tunneling的拓扑图

IP Tunneling的工作过程

1> client 发送请求包到LVS服务器的VIP上。

2> VIP按照算法选择后端的一个Real-server,并将记录一条消息到hash表中,然后将client的请求包封装到一个新的IP包里,新IP包的目的IP是Real-server的IP,然后转发给Real-server。

3> Real-server收到包后,解封装,取出client的请求包,发现他的目的地址是VIP,而Real-server发现在自己的lo:0口上有这个IP地址,于是处理client的请求,然后将relpy这个request包直接发给client。

4> 该client的后面的request包,LVS直接按照hash表中的记录直接转发给Real-server,当传输完毕或者连接超时,那么将删除hash表中的记录。

IP Tunneling的几个细节问题

IP封包的过程:(如图)

IP Tunneling的几个细节问题

IP封包的过程:DR和RS不需要在一个网段,所以适用于跨机房的场景。

由于通过IP Tunneling 封装后,封装后的IP包的目的地址为Real-server的IP地址,那么只要Real-server的地址能路由可达,Real-server在什么网络里都可以,这样可以减少对于公网IP地址的消耗,但是因为要处理IP Tunneling封装和解封装的开销,那么效率不如DR模式。

Real-server的系统设置:

由于需要Real-server支持IP Tunneling,所以设置与DR模式不太一样,LVS不需要设置tunl设备,LVS本身可以进行封装 , 需要配置VIP在tunl设备上。

ARP问题:

如果LVS和Real-server不在一个网络内,不需要处理ARP问题,如果在相同网络,那么处理方法和DR模式一样,但是如果一样,那么你的方案就错了,因为此时DR模式完全可以满足你的需求,而且更加高效。

内核的包转发:

IP Tunneling模式不需要LVS开启ip_forward功能。

NAT(网络地址转换)模式

NAT模式的拓扑图

NAT模式的工作过程:

1> client发送request到LVS的VIP上,VIP选择一个Real-server,并记录连接信息到hash表中,然后修改client的request的目的IP地址为Real-server的地址,将请求发给Real-server;

2> Real-server收到request包后,发现目的IP是自己的IP,于是处理请求,然后发送reply给LVS;

3> LVS收到reply包后,修改reply包的的源地址为VIP,发送给client;

4> 从client来的属于本次连接的包,查hash表,然后发给对应的Real-server。

5> 当client发送完毕,此次连接结束或者连接超时,那么LVS自动从hash表中删除此条记录。

NAT模式的几个细节问题

1、后端RS和DR在同一个网络环境中,且RS的网关必须设定为DR;

2、NAT的初衷就是为了隐藏内部IP和节省公网IP

3、开启路由转发功能

总结-三种模式的适用场景及局限性

模式 适用场景 瓶颈或局限性
NAT

1、公网IP少

2、需要隐藏内部IP(比如游戏的登录服务器)

1、DR需要承担所有转发功能,所以瓶颈在DS上
DR

1、为了解决NAT模式的瓶颈,DR模式采用二层帧重写,提高效率

1、DS承担二层帧重写工作,当规模非常大时,DS会有瓶颈,但是如果DS足够强劲,问题不是很大。

2、由于DR模式是通过重写二层帧的方式,所以DR和DS必须在同一网络内,所以DR模式下无法跨网段。

TUNL 1、为了解决DR模式无法跨网段的问题,DR采用IP层二次封装模式进行解决 1、因为DS需要进行IP层二次封装,所以会牺牲效率,在效率上会低于DR模式,但是可以跨网段。

LVS三种模式分析(超详细)的更多相关文章

  1. codevs 2924 数独挑战 x(三种做法+超详细注释~)

    2924 数独挑战  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 钻石 Diamond   题目描述 Description “芬兰数学家因卡拉,花费3个月时间设计出了世界上迄今 ...

  2. LVS三种模式配置及优点缺点比较

    目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.lin ...

  3. LVS三种模式配置及优点缺点比较 转

    LVS三种模式配置及优点缺点比较   作者:gzh0222,发布于2012-11-12,来源:CSDN   目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...

  4. LVS三种模式的区别及负载均衡算法

    LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统,由章文嵩博士在1998年5月成立,在linux2.6+后将lvs自动加入了kernel ...

  5. LVS三种工作方式八种算法

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  6. Spark学习笔记-三种属性配置详细说明【转】

    相关资料:Spark属性配置  http://www.cnblogs.com/chengxin1982/p/4023111.html 本文出处:转载自过往记忆(http://www.iteblog.c ...

  7. 运维LVS三种模式十种调度算法

    一.LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现 ...

  8. EF三种编程方式详细图文教程(C#+EF)之Database First

    Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天简单看一下 ...

  9. EF三种编程方式详细图文教程(C#+EF)之Code First

    Code First Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的 ...

随机推荐

  1. python小整数与str数据池,编码关系

    1.小数据池:数字,字符串 数字的范围-5 ---256 字符串:1,不能有特殊字符 2,s*20 还是一个地址,s*21以后都是两个地址 2.编码关系:ascii A : 00000010 8位 一 ...

  2. 分布式系统的消息&服务模式简单总结

    分布式系统的消息&服务模式简单总结 在一个分布式系统中,有各种消息的处理,有各种服务模式,有同步异步,有高并发问题甚至应对高并发问题的Actor编程模型,本文尝试对这些问题做一个简单思考和总结 ...

  3. Java JTS & 空间数据模型

    空间数据模型 判断两个几何图形是否存在指定的空间关系.包括: 相等(equals).分离(disjoint).相交(intersect).相接(touches).交叉(crosses).包含于(wit ...

  4. sed 命令替换字符串

    sed -i 's/13/15/g'  `grep 13 -rl  目录` -i 表示替换 -r 表示搜索子目录 -l 显示替换名

  5. Spring_Spring与IoC_Bean的装配

    一.Bean的装配      bean的装配,即Bean对象的创建,容器根据代码要求来创建Bean对象后再传递给代码的过程,称为Bean的装配.  二.默认装配方式 代码通过getBean()方式从容 ...

  6. 栈详解及java实现

    导读 栈和队列是有操作限制的线性表. 目录 1.栈的概念.特点.存储结构. 2.栈的java实现及运用. 概念 栈是一种只允许在一端进行插入或删除的线性表. 1.栈的操作端通常被称为栈顶,另一端被称为 ...

  7. CSS3 文字与字体相关样式

    给文字添加阴影 文字换行 客户端文字 font-size-adjust属性 给文字添加阴影-text-shadow属性 text-shadow:length length length color 前 ...

  8. lsattr 命令详解

    lsattr  作用: 查看文件的第二扩展文件系统属性 选项: -a: 列出目录中的全部文件 -E: 显示设备属性的当前值, 从设备数据库中获得 -D: 显示属性的名称, 属性的默认值,描述和用户是否 ...

  9. Elasticsearch索引自动删除

    简介 脚本分2部分,1部分查找符合条件的索引名,2脚本调用1脚本,进行删除操作 脚本 查找符合条件的,默认大于30天 # coding:utf-8 __author__ = 'Jipu FANG' f ...

  10. 洛谷 P1485 火枪打怪

    题目描述 LXL进入到了一片丛林,结果他发现有n只怪物排成一排站在他面前.LXL有一杆火枪能对付这些怪物.他知道从左至右数第i只怪物的血量是mi.现在LXL可以将一些子弹射向某个怪物.LXL可以控制他 ...