设为首页 收藏本站
查看: 1121|回复: 0

[经验分享] LVS NAT 状态同步之异步回包

[复制链接]

尚未签到

发表于 2015-9-5 10:47:18 | 显示全部楼层 |阅读模式
  前言:
  此前跟同事做分享时,谈论到一个技术细节。
  场景如下:
  【客户端】
  【LVS NAT Director A】   【LVS NAT Director B】
  【RealServer1】【RealServer2】【RealServer3】【RealServer4】
  
  Client: 172.16.159.100
  DirectorA: 172.16.159.101\192.168.0.254   
  DirectorB: 172.16.159.102\192.168.0.253   
  RealServer1: 192.168.0.1
  RealServer2: 192.168.0.2
  RealServer3: 192.168.0.3
  RealServer4: 192.168.0.4
  
  正常情况下,LVS NAT 框架下,Realserver的默认路由通常指向Director的DIP地址。
  原因是Director有lvs的地址转换表,/proc/net/ip_vs_conn ,所以回包时要通过此表才能还原地址和端口,发送客户端。
  
  那么如果可以同步这个转换表数据到其他服务器,是否可以回包无需原路返回。换句话说,
  Client   ->   DirectorA   ->  RealServer1   
  RealServer1  ->  DirectorB  ->  Client
  如果可行,那么NAT方式的瓶颈问题也可以变相解决。
  
  根据上述猜想我做了一些实验,把实验结果记录一下。
  实验场景如下:
  1. 部署LVS NAT实验环境,部署方法参考我之前分享的脚本。
  2. 开启LVS状态同步,部署方法参考我之前分享的文档。
  测试方案一:(短连接)
  a. 客户端访问VIP,输出正常。
  b. 修改RealServer的默认路由,指向DirectorB的DIP。
  c. 客户端访问VIP,访问异常。
  总结:
  行不通原因是,首包的状态条目信息,没有同步到另外一台设备。导致回包时必然失败。
  LVS状态同步是有选择的,仅ESTABLISHED以后的其他状态。我猜想当初设计者做此舍取,也是道理的,
  若一定要所有状态同步,还要修改ip_vs_code.c内核源码才行哦。              
  
  测试方案二:(长连接)
  a. 客户端访问VIP,输出正常。
  b. 修改RealServer的默认路由,指向DirectorB的DIP。
  c. 客户端访问VIP,输出正常。
  总结:
  有了上一场景的经验,此次考虑已存在状态的连接。
  1) Realserver 启动守护进程
  nc -l 80
  2) Client 访问
  telnet VIP 80
  经过上述两步,此时长连接已经建立。随便输入一些字符串,两端都可以看到。
  3) RealServer 默认路由修改
  route del default gw 192.168.0.254
  route add default gw 192.168.0.253
  此时在客户端在输入一些字符串,会发现RealServer仍然输出正常。
  最后,使用tcpdump抓包确认回路数据包是从另一个网关通过。
  
  注:通过此次验证,可以明确的是,地址转换后,并非一定要原路返回,只要条件成熟是可以异步的。
  
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109663-1-1.html 上篇帖子: LVS原理简介及相关安全性问题 下篇帖子: 用LVS构架负载均衡Linux集群系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表