LVS的DR模型工作流程从ip数据层的详细分析
来源:互联网 发布:excel2010软件下载 编辑:程序博客网 时间:2024/05/17 10:09
版本V1.0
时间2012-07-22
版权GPL
作者itnihao 邮箱 itnihao@qq.com
博客 http://itnihao.blog.51cto.com
架构如下
Vip 192.168.16.20
Dip 192.168.16.22
Real server1 192.168.16.2
Real server2 192.168.16.3
Real server3 192.168.16.4
客户端ip 192.168.16.90
关于lvs-DR集群模型的搭建,此处略过。
各服务器的mac地址如下
客户端的mac地址如下
客户端访问vip
访问成功
抓包数据如下
A.客户端抓包数据如下:
由于是一个二层网络环境发送数据包,故封装的有二层数据包
源 mac 00:18:38:04:3D:04 为客户端192.168.16.90
目的mac 00:0C:29:E9:96:79 为 vip 192.168.16.20
Tcp序列号为
序列号: 416372224 [38/4]
[下一个序列号:] 416372358
确认号: 1733210169 [42/4]
B.在lvs上面抓包如下
目标MAC是
源地址 mac 00:18:38:04:3D:04 为客户端192.168.16.90
目标地址mac 00:0C:29:E9:96:79 为lvs的地址 192.168.16.20
而此处lvs将数据包的二层重新封装,将目标mac地址更换
源地址 mac 00:0C:29:E9:96:79 为lvs的mac地址
目标地址mac 00-0c-29-1a-b4-71 为realserver1 192.168.16.2
此过程分析:
Tcp传输层数据对比
客户端为
Lvs端为
可以看到的是lvs端并未修改任何tcp层的数据,只重新封装了二层数据包
C.在real server1上面抓包数据如下
源地址 mac 00-0c-29-1a-b4-71 为realserver1的地址192.168.16.2
目标地址mac 00:18:38:04:3D:04 为客户端的地址 192.168.16.90
注意,此处的过程是把lvs请求过来的数据给接封装,去掉二层数据包头,提取三层数据包,发现源地址为192.168.16.90,目的地址是192.168.16.20,由于本机已经设置了
arp_ignore=1
arp_announce=2
这2个参数,故不会把请求再发送给其他机器了。响应192.168.16.90,响应请求数据包。
关于arp这两个参数,请参考我的 http://www.linuxidc.com/Linux/2012-07/66148.htm ,此处略过。
此处的tcp序列号为
和客户端请求的序列号为
正好符合tcp传输协议规则,关于tcp的分析,请参考我的 http://www.linuxidc.com/Linux/2012-07/66149.htm
,到此处,已经完成了一个响应过程。开始传输数据了
http/1.1 200 OK 响应完成,
客户端终于可以看到请求http://192.168.16.20的内容了。内容为web1
直接请求realserver1
说明通过lvs调度访问的是192.168.16.2
至此,lvs模型分析完成,下面用一个原理图来概括总结
注:绿色的框代表源mac地址,蓝色的框代表目标msc地址,圆圈代表网卡接口
本文仅对lvs的tcp层数据进行分析,个人理解难免有谬误之处,希望各位大侠们不吝赐教。如有错误之处,希望指点,谢谢!
- lvs的DR模型工作流程从ip数据层的详细分析(科来)
- LVS的DR模型工作流程从ip数据层的详细分析
- LVS-DR模型的构建
- LVS-DR模型的实现过程
- LVS负载均衡器DR模型的实现
- LVS的DR模式
- LVS的DR模式
- LVS/DR模式工作原理的常见问题[转]
- lvs DR模式的笔记
- 简单LVS-DR的实现
- 基于DR模式的LVS
- LVS DR模型
- LVS-DR模型简介
- LVS-DR模型构建
- LVS系列—LVS的三种工作方式(DR原理)(二)
- 集群:(二)LVS-NAT 和 LVS-DR 模型的实现
- 全方位剖析LVS及基于LVS的NAT、DR模型实现
- Lvs的DR模式的配置详解
- iOS多线程的初步研究(四)-- NSTimer
- hadoop全分布模式的详细操作
- Linux 进程通信(System V)消息队列
- hdu1864(最大报销额 DP动态规划)
- oauth2.0认证和授权原理以及视频教程
- LVS的DR模型工作流程从ip数据层的详细分析
- Cocos| 3D建模规范及注意事项
- log4js multiprocess appenders 的配置
- iOS多线程的初步研究(五)-- 如何让NSURLConnection在子线程中运行
- RPM使用笔记
- 众筹引发大商业机遇
- iOS 7 点击按钮切换视图
- 架构C#WebService程序
- Linux 进程通信(System V)共享内存区