lvs的DR模型工作流程从ip数据层的详细分析
时间2012-07-22
作者itnihao邮箱[email protected]
博客 http://itnihao.blog.51cto.com
Vip 192.168.16.20
Realserver1192.168.16.2
Realserver3192.168.16.4
序列号:416372224[38/4]
确认号:1733210169[42/4]
注意,在数据包还未发送到lvs的时候
目标MAC是
源地址mac00:18:38:04:3D:04为客户端192.168.16.90
目标地址mac00:0C:29:E9:96:79为lvs的地址192.168.16.20
而此处lvs将数据包的二层重新封装,将目标mac地址更换
源地址mac00:0C:29:E9:96:79为lvs的mac地址
目标地址mac00-0c-29-1a-b4-71为realserver1192.168.16.2
此过程分析:
Tcp传输层数据对比
Lvs端为
可以看到的是lvs端并未修改任何tcp层的数据,只重新封装了二层数据包
C.在realserver1上面抓包数据如下
源地址mac00-0c-29-1a-b4-71为realserver1的地址192.168.16.2
目标地址mac00: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://itnihao.blog.51cto.com/1741976/752472,此处略过。
此处的tcp序列号为
和客户端请求的序列号为
正好符合tcp传输协议规则,关于tcp的分析,请参考我的博客
http://itnihao.blog.51cto.com/1741976/925597
,到此处,已经完成了一个响应过程。开始传输数据了
http/1.1200OK响应完成,
客户端终于可以看到请求http://192.168.16.20的内容了。内容为web1
直接请求realserver1
说明通过lvs调度访问的是192.168.16.2
至此,lvs模型分析完成,下面用一个原理图来概括总结
注:绿色的框代表源mac地址,蓝色的框代表目标msc地址,圆圈代表网卡接口
本文仅对lvs的tcp层数据进行分析,个人理解难免有谬误之处,希望各位大侠们不吝赐教。如有错误之处,希望指点,谢谢!
本文出自 “itnihao的运维技术博客” 博客,请务必保留此出处http://itnihao.blog.51cto.com/1741976/938389