文档章节

LVS工作模式及原理

将将将
 将将将
发布于 2015/12/29 17:29
字数 1568
阅读 357
收藏 5
点赞 0
评论 0

LVS 简介

         LVS 是 Linux  Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构:

        a. 负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器[多台LB IP]上 执行,而client端认为是返回来一个同一个IP【通常把这个IP 称为虚拟IP/VIP】

        b. 服务器池(server pool):一组真正执行client 请求的服务器,一般是我们的web服务器;除了web,还有FTP,MAIL,DNS

        c. 共享存储(shared stored):它为 server pool 提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相 同的服务

    共有4中模式:LVS-DR,LVS-NAT,LVS-FULLNAT,LVS-TUN

1.LVS-DR

1.1 工作原理

client发送一个请求到VIP,LVS服务器根据VIP选择对应的realServer的pool,根据算法,在pool中选择一台realServer,将包广播到vip的局域网,同时LVS在hash表中记录该次连接,realServer收到包之后,处理完请求,把应答包直接传给client;当client继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的realServer上;当连接中止或者超时,hash表中的记录将被删除。

1.2 实例讲解

假设client,director,vip,realServer的ip及mac地址如下



           client           director              vip         realServer
IP     192.168.138.20     192.168.143.231    192.168.143.122     192.168.143.82
MAC     X:X:X:X:X:5d     X:X:X:X:X:96     X:X:X:X:X:96     X:X:X:X:X:82


第一步:client向vip发起请求,director接收到请求,ip包头的信息如下


source mac      dst mac       ...     source ip            dst ip               ...
X:X:X:X:X:5d   X:X:X:X:X:96       ...      192.168.138.20     192.168.143.122              ...


第二步:LVS根据负载均衡算法,选择一台realServer,修改dst mac地址为realServer的mac地址,将数据包转发到局域网,此时ip包头信息如下


source mac     dst mac              ...             source ip             dst ip               ...
X:X:X:X:X:96   X:X:X:X:X:82              ...    192.168.138.20      192.168.143.122              ...


第三步:realServer接收到包,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网,IP包头及数据帧头信息如下


source mac         dst mac              ...                 source ip           dst ip               ...
X:X:X:X:X:82       X:X:X:X:X:5d              ...        192.168.143.122    192.168.138.20              ...


第四步:如果,通过路由将包路由到client

1.3 注意事项

    a. LVS必须与realServer在同一个局域网,因为LVS收到数据包后,只修改了dst mac地址,然后广播出去,如果LVS与realServer不在统一网段,realServer永远收不到数据包

    b. LVS-DR不需要路由转发,同一局域网内,不经过路由

    c. realServer需呀配置 vip


2. LVS-NAT

2.1 工作原理

假设client,vip,realServer的ip地址如下



           client              vip         realServer
IP     192.168.138.20    192.168.143.122     192.168.143.82



第一步:client 发送包到LVS服务器的VIP上


      ...     source ip            dst ip               ...
      ...      192.168.138.20     192.168.143.122              ...



第二步:VIP选择一个realServer,并记录连接信息到hash表中,然后修改client的request的目的IP地址为realServer的地址,将请求发给realServer


      ...     source ip            dst ip               ...
      ...      192.168.138.20     192.168.143.82              ...



第三步:realServer收到请求包后,发现目的IP是自己的IP,于是处理请求,然后发送reply给LVS,回复包如下


      ...     source ip            dst ip               ...
      ...      192.168.143.82     192.168.138.20              ...



第四步:LVS收到reply包后,修改reply包的的源地址为VIP,发送给client;以后从client来的属于本次连接的包,查hash表,然后发给对应的realServer


      ...          source ip            dst ip          ...  
      ...     192.168.143.122     192.168.138.20         ...



2.1 注意事项

    a. NAT修改的是dst ip,不需要vip与realserver在同一个网段内

    b. NAT模式包的进出都需要经过LVS ;因此LVS 的可能会成为一个系统瓶颈问题


3. LVS-FULLNAT

LVS-FULLNAT在client请求VIP 时,不仅替换了数据包的dst ip,还替换了数据包的 source ip;但VIP 返回给client时也替换了source ip

3.1 工作原理

假设client,vip,realServer的ip地址如下

                 client                      vip               realServer

IP    192.168.138.20   192.168.143.122    192.168.143.82


第一步:client 发送包到LVS服务器的VIP上


      ...    source ip            dst ip                         ...

      ...     192.168.138.20192.168.143.122        ...


第二步:VIP 收到数据包后,会根据LVS设置的LB算法选择一个合适的realserver,然后把数据包的dst ip修改为realserver的ip;把sorce ip 改成 LVS的vip 


      ...    source ip                   dst ip                     ...

      ...     192.168.143.122    192.168.143.82             ...


第三步: realserver 收到这个数据包后判断dst ip 是自己,处理完后把这个包发送给LVS VIP


      ...    source ip                   dst ip                     ...

      ...     192.168.143.82    192.168.143.122             ...


第四步: LVS 收到这个数据包后把sorce ip改成VIP的IP,dst ip改成 client ip然后发送给client


      ...         source ip                   dst ip                ...  

      ...    192.168.143.122    192.168.138.20        ...


3.2 注意事项

    a. FULLNAT修改的是dst ip,不需要vip与realserver在同一个网段内

    b. FULLNAT能保证回包一定能回到LVS

    c. 因为FULLNAT要更新sorce ip 所以性能NAT模式低


4. LVS-TUN

    4.1 工作原理

    假设client,vip,realServer的ip地址如下

                     client                      vip               realServer

    IP    192.168.138.20   192.168.143.122    192.168.143.82


    第一步:client 发送包到LVS服务器的VIP上


          ...            source ip                      dst ip                         ...

          ...         192.168.138.20        192.168.143.122                  ...


    第二步:VIP 收到数据包后,会根据LVS设置的LB算法选择一个合适的realserver;并把client发送的数据包包装到一个新的IP包里面;新的IP包的dst是realserver的IP


          ...            source ip                       dst ip                      ...

          ...         192.168.143.122        192.168.143.82             ...


    第三步: realserver 收到这个数据包后判断dst ip 是自己,然后解析出来的数据包的dst是VIP;会检测网卡上是否帮了VIP的ip地址;如果帮了就会处理这个包,如果没有直接丢掉。 一般在realserver上面 lo:0 绑定了VIP的ip地址,就可以处理。处理完成后,直回给client


          ...        source ip                   dst ip                      ...

          ...     192.168.143.82        192.168.138.20             ...


   

    4.2 注意事项

        a. TUN模式必须在所有的realserver机器上面绑定VIP的IP地址

        b. TUN模式的包通信通过TUN模式,不管是内网和外网都能通信,所以不需要lvsvip跟realserver             在同一个网段内

        c. TUN模式 realserver会把数据包直接发给client 不会给lvs了

        d. TUN模式走的隧道模式,所以运维起来比较难,所以一般不用

    

    











© 著作权归作者所有

共有 人打赏支持
将将将
粉丝 21
博文 17
码字总数 12880
作品 0
深圳
程序员
LVS-DR模式原理

我们都知道LVS有LVS-DR,LVS-NAT,LVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由),是调度器与实际服务器都有一块网卡连在同一物理网段上的情况。本文主要对LVS/DR模式原理进行...

蓝狐乐队 ⋅ 2013/12/05 ⋅ 0

LVS原理详解及部署之三:手动部署LVS

-------------------LVS专题------------------------ LVS原理详解及部署之一:ARP原理准备 LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) LVS原理详解及部署之三:手动部署...

蓝狐乐队 ⋅ 2016/07/24 ⋅ 0

LVS+keepalived高可用

LVS+Keepalived负载均衡 LVS简介及工作原理 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的...

Anonymous123 ⋅ 2015/08/20 ⋅ 0

LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)

-------------------LVS专题------------------------ LVS原理详解及部署之一:ARP原理准备 LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) LVS原理详解及部署之三:手动部署...

蓝狐乐队 ⋅ 2016/07/24 ⋅ 0

LVS 的 DR模式注意事项

LVS 是Linux系统下很经典的负载均衡器,尤其是DR模式。其原理非常简单,LVS通过修改包头中的目标mac地址,与后端RS “串通” ,“合伙”欺骗客户端,从而以极低的代价,巧妙的实现负载均衡。...

紫色葡萄 ⋅ 2017/12/24 ⋅ 0

LVS+Keepalive的高可用群集

LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。 LVS 简单工作原理:用户请求LVS VIP,LVS根据转发方式和算法,将请求转发给后端服务器,后端服务...

蜡笔xiao馨 ⋅ 2017/11/13 ⋅ 0

LVS原理详解及部署之一:ARP原理准备

-------------------LVS专题------------------------ LVS原理详解及部署之一:ARP原理准备 LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) LVS原理详解及部署之三:手动部署...

蓝狐乐队 ⋅ 2016/07/24 ⋅ 0

LVS原理详解及部署之一:ARP原理准备

-------------------LVS专题------------------------ LVS原理详解及部署之一:ARP原理准备 LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) LVS原理详解及部署之三:手动部署...

Si2 ⋅ 2016/01/03 ⋅ 0

lvs原理及特点

lvs的共模模式有三种 第一种 lvs/nat 工作原理是怎么样的呢?比如小明是客户端,小马是调度器也就是lvs,商店们是Readserver;现在小明想要一个蛋糕,但是小明这个人的天性呢在街坊邻里都是出...

fangyiya ⋅ 2017/05/15 ⋅ 0

2. LVS-DR原理与配置

2.1 场景 上一篇文章1. LVS-NAT原理与配置中提到:随着Real Server个数增多,LVS-NAT模式性能出现明显下降,无法适用于大规模场景。在大规模场景下LVS提供了LVS-DR、LVS-TUN两种配置方式。 ...

随安居士 ⋅ 01/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部