18.7 LVS介绍「建议收藏」

18.7 LVS介绍

大家好,又见面了,我是全栈君。

LVS介绍

  • LVS是由国人章文嵩开发
  • 流行度不亚于apache的httpd,基于TCP/IP做的路由和转发,稳定性和效率很高
  • LVS最新版本基于Linux内核2.6,有好多年不更新了
  • LVS有三种常见的模式:NAT、DR、IP Tunnel
  • LVS架构中有一个核心角色叫做分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称rs)

LVS NAT模式

  • LVS NAT模式,借助iptables的nat表来实现
  • 用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去
  • rs需要设定网关为分发器的内网ip
  • 用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈
  • 在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源

输入图片说明

  • 原理图解释:
    • Load Balancer,就是一个分发器;把用户的请求,分发给后端的Real Server ,Real Server这些服务器接收到请求以后,处理好用户请求以后,就重新丢回给Load Balancer;最后Load Balancer再返回给用户;
    • 这个模式的弊端,当访问量、请求量、反馈量大的时候,Load Balancer的压力很大
    • LVS规模,一般规模最多支持10来台服务器,超过10台的话就会有力不从心;
    • nat模式这个结构,只需要有一个公网IP,其他real server服务器全部在内网就可以实现。优点,节省很多的资源

LVS IP Tunnel模式

  • LVS IP Tunnel模式,需要有一个公共的IP配置在分发器和所有rs上,我们把它叫做vip
  • 客户端请求的目标IP为vip,分发器接收到请求数据包后,会对数据包做一个加工,会把目标IP改为rs的IP,这样数据包就到了rs上
  • rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己

输入图片说明

  • 原理图解释:
    • 在load balancer与real server之间建立了虚拟通道,叫做 ip tunnel ;实际上是更改了数据包 目的IP;请求过来通过load balancer,通过在real server上配置的VIP;用户请求的时候,数据包里面包好的目的IP,当数据包到达load balancer的时候,load balancer会进行一个数据包目的IP的更改,然后发送到具体的real server上,通过lvs的自己的算法,进行实现到底传输到那个real server上;然后real server再解包处理,再通过一个VIP直接返回到用户,这就省略数据回到load balancer分发器的过程,这样就load balancer就没有瓶颈

LVS DR模式

  • LVS DR模式,也需要有一个公共的IP配置在分发器和所有rs上,也就是vip
    • 和IP Tunnel不同的是,它会把数据包的MAC地址修改为rs的MAC地址
    • rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己

输入图片说明

转载于:https://my.oschina.net/u/3707314/blog/1612868

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107734.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js的 cssText[通俗易懂]

    js的 cssText[通俗易懂]转载自:https://www.cnblogs.com/majingyi/p/6840818.html 很多人用过style.color、style.display等直接设置元素的样式属性,但是style.cssText用过的人就不多了。cssText本质是什么?cssText的本质就是设置HTML元素的sty…

    2022年7月26日
    14
  • vue生命周期及其应用场景_介绍vue生命周期流程

    vue生命周期及其应用场景_介绍vue生命周期流程文章目录一,vue生命周期函数:一,vue生命周期函数:vue的生命周期函数又叫钩子函数:生命周期方法详解:beforeCreate//详情//实例初始化之后,组件被创建前,这个时候的el,data,message都是underfined//场景//可以加入loading事件;beforeCreated//详情//实例创建完成后,data、methods被初始化//场景//结束loading事件befor

    2022年10月21日
    0
  • Thinkphp+Nginx(PHPstudy)下报的404错误,403错误解决

    Thinkphp+Nginx(PHPstudy)下报的404错误,403错误解决

    2021年10月12日
    51
  • aspnetpager分页控件_如何自动分页

    aspnetpager分页控件_如何自动分页AspNetMvc分页控件,可自定义链接地址,开源分亨给大家先看效果图下载DLL文件,使用大家可进入讨论群160046333,进行讨论 一.如果你使用GET方式传递参数如http://www.CSDN.com/indx?id=1&page=5 调用方式如下:CSS样式:.Dcssa{padding:4px8px;border:1pxsolid#9

    2022年9月29日
    0
  • JavaScript数组求和_js获取对象数组的第一个元素

    JavaScript数组求和_js获取对象数组的第一个元素您如何找到其元素的总和?好吧,解决方案是一个array.reduce()方法。Array.prototype.reduce()函数可用于遍历数组,将当前元素值添加到先前项目值的总和中。Javascript和数组要查找两个数字的Java和数组,请使用array.reduce()方法。reduce()方法将数组简化为单个值。reduce()函数为数组的每个值(从左到右)执行提供的函数。方法的返回值存储在累加器中(结果/总计)。句法array.reduce(function(total,cur

    2022年9月28日
    0
  • 键值对pair「建议收藏」

    什么是pairpair类是C++标准库的一部分,它使得我们可以在一个对象的内部把相同类型或不同类型的两个值关联起来,它被包含在头文件unility中:pair类的结构大致如下:template<classT1,classT2>classpair{public:pair(T1v1,T2v2):first(v1),s…

    2022年4月8日
    116

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号