lvs的四种工作模型介绍

lvs的四种工作模型介绍

四种工作模型工作过程与特点

lvs有常用的三种工作模式,分别是vs/nat网络地址转换、vs/tun隧道模式、vs/dr直接路由

还有一种fullnat,共计4种,

相关术语

  • cip,客户端来源ip
  • vip,lvs对外接收客户端数据包的ip
  • dip,lvs对内向后端节点转发数据包的ip
  • ripN,后端服务器节点的真实ip
  • lvs服务器,提供lvs服务,配置ipvs相关规则的服务器
  • rs服务器,后端真实提供服务的服务器,支持多种服务,web、mail、media、cache等,
  • 客户端,用户客户端浏览器
  • own router:tun和dr模式下,rs服务器自己的负责转发响应数据的路由器

vs/nat

图示:

image-20200908161537965

过程解释:

  1. lvs的vip接收cip发来的是数据包,中间是互联网,此时ip头,cip->vip
    1. lvs的vip一般不是公网地址,用一个公网地址配置在最外层防火墙,然后由防火墙做个dnat映射到lvs的vip;此时vip就是私网ip,
  2. lvs做ip头部的修改,将目的的vip,改成选出来的某个rip,此时ip头:cip-ripX
    1. 这步是ip寻址,所以dip和rip可以跨网段,路由可达即可
    2. 端口可以修改,所以支持端口映射
  3. 某个rip收到后,处理后,响应ip头:ripX-cip,发给网关dip,即lvs
  4. lvs收到后,修改ip头部,此时ip头:vip-cip
  5. 客户端收到数据

特点:

  1. 本质是由lvs做的多目标ip的dnat
  2. lvs需要开启ip_forward
  3. rs的路由需要指向lvs的dip
  4. lvs处理请求和响应数据,压力大,可负载的后端节点数量少
  5. 操作中,修改了ip头部,且支持修改端口,做端口映射
  6. 后端节点的OS,有tcp/ip协议栈即可,

vs/tun

image-20200908171141424

过程解释

  1. lvs由vip处收到cip请求:包头:cip-vip
  2. lvs不对ip头部做修改,在原有ip头部再加一层ip头部,隧道包头:[cip-vip]dip-rip
    1. 接下来,根据dip和rip完成,lvs到rs的路由寻址
    2. 可以内部私有网络,可公网互联网
    3. dip,rip可以都是公网ip,从而完成跨广域网的ip寻址,如跨地域的cache系统
  3. rs收到后,处理,返回时,包头:vip-cip
    1. 这个vip一般是配置在每个rs上lo别名接口上,
    2. 多个vip共存一个网段时,还要做arp相关的设置
    3. 从rs自己的路由器返回
  4. 客户端收到响应

特点

  • **rs用自己的出口路由,**从而lvs只承担请求建立、请求端口的数据包,极大扩展了lvs能挂的后端节点
  • 用ip隧道封装,要求后端rs支持隧道封装,解封装,
  • 由于ip隧道封装,可以跨广域网,dip和rip可以都是公网ip
  • lvs不对原ip头修改,因此端口无法映射,即,lvs上service端口要和后端rs服务端口一一对应;

vs/dr

image-20200908171207029

过程解释

  1. lvs从vip处,收到cip的请求数据,包头:cip-vip
  2. lvs不做ip头部修改、不做ip头部隧道封装而是!对二次mac做修改
    1. 本来是:cip-vip:上一跳mac-vip接口mac
    2. 改成是:cip-vip:dip接口mac-某个rs的rip接口mac
    3. 经由连接在同一个switch接口,进行二层通信
  3. rip收到,处理,从自己路由返回
    1. 某个rs看二层目标mac是自己,收了!
    2. 拆到三层,目标vip,我也有,收了!
    3. 于是一直向上进入应用层处理
    4. 注意:同网段,arp广播,多个相同vip时,arp设置问题
  4. 客户端收到数据

特点

  • lvs的dip和rs的rip要在同一个交换机,同一个网段
  • 每个rs要配置vip,在lo的别名接口,且设置non-arp应答
  • rs都有自己出口路由
  • 修改二层mac,因此端口不可映射,需一一对应

三种模式对比

还有一种模式:fullnat,

image-20200908164704605

  • nat
    • 后端服务器没什么要求,支持tcp/ip协议栈即可
    • 一般在一个私有网络,不硬性要求是一个switch连接的局域网,lvs的dip和rs的rip之间路由可达即可;
    • 可负载的后端节点较少,
    • lvs同时做了rs响应数据的网关
  • tun
    • 后端服务器需支持ip的隧道封装,解封装
    • lvs的dip和rs的rip可以是局域网,也可是跨互联网的广域网,常用于跨地域的cache系统
    • rs有自己的出口路由,
    • 响应数据不用经过lvs,所以可以负载的后端节点多
  • dr:lvs的默认模式
    • 各个rs需要在自己的lo接口的别名接口上配置vip,且设置为不应答arp广播

    • lvs的dip和rs的rip需要是连接在一个交换机上的相同局域网网段内

    • rs有自己的出口路由

    • 响应数据不用经过lvs,所以可以负载的后端节点多

      nat模式缺点:请求与响应数据包都经由lvs,lvs就极易成为性能瓶颈,且响应数据一般远远大于请求数据包,若响应数据由各个后端真实节点各自返回给客户端,就实现了分而治之,各个节点的压力被分担开,系统方便水平扩展!

      因此有了tun模式和dr模式,此2种模式,rs都由自己的路由负责响应数据的转发,lvs只负责 建立连接的请求数据、断开连接的数据 因此极大的提高了lvs可负载的节点数量;

      tun和dr模式的区别:tun需要ip封装,性能稍差,但支持跨广域网,dr模式直接改写mac地址,性能好些,但将lvs和rs限制在一个交换机连接的局域网;dr模式为lvs的默认模式

fullnat

参考文档:

lvs的fullnat模型,为alibaba添加的新模块,参考文档如下:

https://github.com/alibaba/LVS

https://tonydeng.github.io/sdn-handbook/linux/loadbalance.html

updatedupdated2020-10-202020-10-20
加载评论