02168888812
云终端系列报道第八十六期 - KVM部署LVS故障原理 2016-09-26

炙伦云终端分享嘉宾:


    故障现象
    
    KVM部署LVS(Linux Virtual Server)集群后,能够单独以HTTP方式访问RS(Real Server)的实际IP,但无法通过VIP(Virtual IP)访问。

    再探原理

    
    通过这个故障案例,我们对KVM的网络过滤策略有了更深的理解。那么,这些过滤策略到底是如何在系统里面生效的呢?
    
    通过在宿主机上配置iptables、ebtables,宿主机能够对虚拟机进行网络限制。其中,iptables实现对四层TCP、UDP端口的网络流量过滤;ebtables对二层MAC地址、三层IP地址进行过滤。如下是在宿主机1上对虚拟机进行MAC地址限定、源IP限定的规则:
    
    [root@HOST1 ~]# ebtables -t nat --list
    Bridge table: nat
    
    Bridge chain: PREROUTING, entries: 1, policy: ACCEPT
    -i vnet0 -j libvirt-I-vnet0 #宿主机vnet0入流量走libvirt-I-vnet0策略
    
    Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
    
    Bridge chain: POSTROUTING, entries: 1, policy: ACCEPT
    -o vnet0 -j libvirt-O-vnet0 #宿主机vnet0出流量走libvirt-O-vnet0策略
    
    Bridge chain: libvirt-I-vnet0, entries: 9, policy: ACCEPT
    -j I-vnet0-mac
    -p IPv4 -j I-vnet0-ipv4-ip
    -p IPv4 -j ACCEPT
    -p ARP -j I-vnet0-arp-mac
    -p ARP -j I-vnet0-arp-ip
    -p ARP -j ACCEPT
    -p 0x8035 -j I-vnet0-rarp
    -p 0x835 -j ACCEPT
    -j DROP
    
    Bridge chain: libvirt-O-vnet0, entries: 4, policy: ACCEPT
    -p IPv4 -j O-vnet0-ipv4
    -p ARP -j ACCEPT
    -p 0x8035 -j O-vnet0-rarp
    -j DROP
    
    Bridge chain: I-vnet0-mac, entries: 1, policy: ACCEPT
    -s 2:0:73:b6:53:c8 -j RETURN #限定源MAC地址
    -j DROP
    
    Bridge chain: I-vnet0-ipv4-ip, entries: 3, policy: ACCEPT
    -p IPv4 --ip-src 0.0.0.0 --ip-proto udp -j RETURN
    -p IPv4 --ip-src x.y.z.200 -j RETURN #限定源IP地址
    -j DROP
    
    Bridge chain: O-vnet0-ipv4, entries: 1, policy: ACCEPT
    -j ACCEPT
    
    总结
    
    在KVM环境中部署LVS集群时,要特别注意宿主机上iptables、ebtables对虚拟机的影响。因为此时,虚拟机并不是使用用户态的的应用程序进行代理,而是使用了网络地址转换(NAT模式)、MAC地址重写(DR模式)等“非常规”方法。
    
    通过这个案例,我们同时可以知道,在遇到未知可能涉及到网络方便的问题时,使用网络分析技术可以提供有效的信息来帮助我们定位和排除问题。


















上一页:云终端系列报道第八十四期 - KVM部署LVS故障案例2 下一页:云终端系列报道第八十五期 - KVM部署LVS故障解决
推荐新闻 Recommended news

帮助中心
6509367