Heyyit 2025-04-10 14:43 采纳率: 0%
浏览 9
已结题

keepalived备份lvs主机(dr)

客户机ip 192.168.88.10/24
lvs主机(dr)利用keepalived备份虚拟地址为192.168.88.15/32,真实ip192.168.88.5/24
请问为什么客户机访问虚拟地址会通信看到集群的网页,客户机ip和lvs主机虚拟ip并不在一个网段啊

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-04-10 15:24
    关注

    让【宝码香车】来帮你解答,本回答参考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不在同一网段?

    原因分析

    这种情况是正常的,原因如下:

    1. LVS DR模式的工作原理

      • 在DR(Direct Routing)模式下,数据包的转发是在数据链路层(MAC层)完成的
      • 客户端请求到达LVS调度器后,调度器只修改目标MAC地址为真实服务器的MAC地址,不修改IP地址
      • 真实服务器直接响应客户端,不经过调度器
    2. /32子网掩码的特殊性

      • 虚拟IP配置为/32表示这是一个主机路由
      • 在LVS DR模式下,虚拟IP通常配置为/32,因为它只需要在本地接口上响应ARP请求
      • 这个配置不会影响数据包的正常路由
    3. 实际通信过程

      • 客户机(192.168.88.10)发送请求到VIP(192.168.88.15)
      • LVS调度器(192.168.88.5)接收请求并转发给真实服务器
      • 真实服务器直接响应客户机(192.168.88.10)

    为什么能跨网段通信

    虽然VIP配置为/32,但实际通信仍然能成功的原因是:

    1. ARP机制

      • 客户机会发送ARP请求查询192.168.88.15的MAC地址
      • LVS调度器会响应这个ARP请求,提供自己的MAC地址
    2. 路由可达

      • 只要客户机有到达192.168.88.0/24网络的路由(通常是默认网关配置正确)
      • 数据包就能正常到达LVS调度器
    3. DR模式特性

      • 响应数据包直接从真实服务器返回客户机
      • 真实服务器和客户机在同一个二层网络或通过路由器可达

    配置建议

    确保以下配置正确:

    1. 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
            }
        }
    }
    
    1. 真实服务器上的VIP配置(通常放在回环接口):
    # 在真实服务器上执行
    ifconfig lo:0 192.168.88.15 netmask 255.255.255.255 up
    route add -host 192.168.88.15 dev lo:0
    
    1. 确保所有服务器上关闭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模式下是常见且正确的配置方式,不会影响正常的通信过程。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月11日
  • 创建了问题 4月10日