客户机ip 192.168.88.10/24
lvs主机(dr)利用keepalived备份虚拟地址为192.168.88.15/32,真实ip192.168.88.5/24
请问为什么客户机访问虚拟地址会通信看到集群的网页,客户机ip和lvs主机虚拟ip并不在一个网段啊
keepalived备份lvs主机(dr)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!Keepalived备份LVS主机(DR)网络通信问题分析
问题描述
- 客户机IP: 192.168.88.10/24
- LVS主机(DR)虚拟地址: 192.168.88.15/32
- LVS主机真实IP: 192.168.88.5/24
问题:为什么客户机访问虚拟地址(192.168.88.15)能够看到集群网页,尽管客户机IP和LVS虚拟IP不在同一网段?
原因分析
这种情况是正常的,原因如下:
LVS DR模式的工作原理:
- 在DR(Direct Routing)模式下,数据包的转发是在数据链路层(MAC层)完成的
- 客户端请求到达LVS调度器后,调度器只修改目标MAC地址为真实服务器的MAC地址,不修改IP地址
- 真实服务器直接响应客户端,不经过调度器
/32子网掩码的特殊性:
- 虚拟IP配置为/32表示这是一个主机路由
- 在LVS DR模式下,虚拟IP通常配置为/32,因为它只需要在本地接口上响应ARP请求
- 这个配置不会影响数据包的正常路由
实际通信过程:
- 客户机(192.168.88.10)发送请求到VIP(192.168.88.15)
- LVS调度器(192.168.88.5)接收请求并转发给真实服务器
- 真实服务器直接响应客户机(192.168.88.10)
为什么能跨网段通信
虽然VIP配置为/32,但实际通信仍然能成功的原因是:
ARP机制:
- 客户机会发送ARP请求查询192.168.88.15的MAC地址
- LVS调度器会响应这个ARP请求,提供自己的MAC地址
路由可达:
- 只要客户机有到达192.168.88.0/24网络的路由(通常是默认网关配置正确)
- 数据包就能正常到达LVS调度器
DR模式特性:
- 响应数据包直接从真实服务器返回客户机
- 真实服务器和客户机在同一个二层网络或通过路由器可达
配置建议
确保以下配置正确:
- LVS调度器配置示例(keepalived.conf片段):
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.88.15/32 dev eth0 } } virtual_server 192.168.88.15 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.88.20 80 { weight 1 TCP_CHECK { connect_timeout 3 } } }- 真实服务器上的VIP配置(通常放在回环接口):
# 在真实服务器上执行 ifconfig lo:0 192.168.88.15 netmask 255.255.255.255 up route add -host 192.168.88.15 dev lo:0- 确保所有服务器上关闭ARP响应:
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce总结
客户机能够访问不同子网的VIP是因为LVS DR模式的工作机制和正确的网络路由配置,/32的子网掩码在DR模式下是常见且正确的配置方式,不会影响正常的通信过程。
评论 打赏 举报解决 1无用