LVS 各种模式分析

作者: xiaodongpan

简介

Linux服务器集群系统即LVS(Linux Virtual Server),是章文嵩在国防科技大学博士期间开发的一个开源项目,该项目也是中国开源少有的几个成功项目之一,该项目已经进入到Linux内核,在国内外被广泛的使用。章文嵩博士目前就职到淘宝,继续主持LVS的相关工作。各大互联网公司都在对LVS进行修改和使用,因此产生了不通的LVS变种,比如百度的BIG-NAT,淘宝的FullNAT,腾讯的TGW(目前我还不太了解)。其基本原理都是在netfilter层,对数据包进行过滤、修改和伪装。

转发模式

LVS原生的三种转发模式:

  • LVS-DR
  • LVS-NAT
  • LVS-TUN

LVS-DR

原理: mac地址伪装,通过修改源包的mac地址进行投递 示意图:

LVS-NAT

原理: 通过修改源目的IP实现,进入时DNAT,出去时SNAT 示意图:

LVS-TUNNEL

原理: 通过IP tunnel实现,进入时加上IP头部 示意图:

LVS-FullNAT

介绍:一种新型新型的转发模式,NAT的加强版,由吴佳明等在章文嵩带带领下实现 原理: 通过修改改源目的IP实现,但是比LVS-NAT更彻底,进入时DNAT+SNAT,出去时由SNAT+DNAT 示意图:

FullNAT和NAT原理对比

▲NAT包修改示意图 在入包时,进行目的地址转换,出包时进行源地址转换,为了让出去的数据包,经过LVS,需要添加策略路由。

FullNAT包修改示意图

▲FullNAT实现原理

在入包时修改目的地址,同时把源地址改为内网地址,这样包就可以完全无限制的在整个内外路由,出包时修改源地址为vip地址,目的地址为真实的ClientIP地址,从而实现回包到目的地。

优缺点对比

LVS-DR

优点:性能好,rs直接回包 • 缺点:

  • 1、 rs必须在一个vlan中,这在多网络环境中限制非常大;
  • 2、 rs必须绑定vip,麻烦且风险大
  • 3、不支持端口映射

LVS-NAT

优点:

  • 1、 rs可以在整个内网中,没有vlan的限制
  • 2、支持端口映射

缺点:

  • 1、 rs的网关必须是lvs机器,如果不是,则需要配置静态路由

LVS-TUNNEL

优点:性能好,rs直接回包 • 缺点:

  • 1、 rs配置复杂,需要配置ipip模块
  • 2、 rs绑定vip,风险大
  • 3、不支持端口映射

LVS-FullNAT

优点:

  • 1、数据包可以在整个内外中任意路由
  • 2、交换机和路由器无需任何特殊配置

缺点: windows无法获取client ip

结论

从上面几种模式来看,FullNAT无疑是一种最好的转发模式,他无需要对路由器,rs进行特殊操作,就可以完成整个代理转发。其实在具有一定网络规模的环境中,无论是要求在同一个VLAN,还是要配置静态路由,对网络拓扑配置都是极大的破坏,而且绑定vip风险极大,而且实现自动化困难。从实际应用来看,LVS-DR,LVS-NAT,LVS-TUNNEL都没有很大规模的应用案例,相反,LVS-FullNAT已经被大范围的使用,包括阿里,小米,汽车之家,UC等很多互联网公司,规模都是很大。鉴于DR的操作复杂性和风险,建议考虑FullNAT作为替代方案。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我是东东强

网络测量之NetSight(NSDI-2014)

NSDI 2014年中,由斯坦福大学”SDN之父”,Nick Mckeown教授带领的实验室发表了题为《I Know What Yout Packet Did ...

933
来自专栏Java架构解析

Nginx 学习系列——正向代理与反向代理

无论是正向代理,还是反向代理,说到底,就是代理模式的衍生版本罢了。我们都学习过代理设计模式,都知道代理模式中有代理角色和被代理角色,为什么这么说,因为这两个角色...

170
来自专栏北京马哥教育

Traceroute网络排障实用指南(1)

一、概述 1.1 什么是Traceroute 当遇到网络问题,通常会用Traceroute去排查,但Traceroute是什么? 根据百度百科定义,Tracer...

3344
来自专栏逸鹏说道

项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享

因业务发展需要现在的系统不足以支撑现在的用户量,于是我们在一周之前着手项目的性能优化与分布式部署的相关动作。 概况 现在的系统是基于RabbitHub(一套开源...

2746
来自专栏Ceph对象存储方案

Ceph亚太峰会RGW议题分享

4963
来自专栏趣谈编程

白话TCP流量控制

上篇(一个故事读懂TCP拥塞控制)讲的是拥塞控制,这篇讲流量控制。还是以运输粮食为场景。

872
来自专栏北京马哥教育

定时任务调度与管理平台JobCenter | crontab替代者

没有JobCenter时我们要面对的: 电商业务链条很长,业务逻辑也较为复杂,需要成百上千种定时任务。窝窝的大多数定时任务其实调用的是本地或远端 Java/PH...

60911
来自专栏三木的博客

perf ,比较好的一个程序性能测试工具

面对一个问题程序,最好采用自顶向下的策略。先整体看看该程序运行时各种统计事件的大概,再针对某些方向深入细节。而不要一下子扎进琐碎细节,会一叶障目的。 对于优化自...

2218
来自专栏数据和云

【深入解析】DRM和read-mostly locking

作者简介 ? 何剑敏 Oracle ACS华南区售后团队,首席技术工程师。多年从事第一线的数据库运维工作,有丰富项目经验、维护经验和调优经验,专注于数据库的整...

2755
来自专栏企鹅号快讯

新买的路由插上就用?这些设置千万别偷懒

关注硬件·聪明消费 | 欢迎关注钛师父 动图:触手可及的全息投影 在“懒人思维”的主导下,路由器设置越来越简单,无论是典型运营商赠送还是用户单独购买,接驳硬件线...

18110

扫码关注云+社区