ipvsadm 仅按 IP 列出一些主机,其余按名称列出

ipvsadm 仅按 IP 列出一些主机,其余按名称列出

我们使用 keepalived 来管理我们的 Linux 虚拟服务器 (LVS) 负载均衡器。LVS VIP 设置为使用 iptables 中配置的 FWMARK。

 virtual_server fwmark 300000 {
    delay_loop 10
    lb_algo wrr
    lb_kind NAT
    persistence_timeout 180
    protocol TCP

    real_server 10.10.35.31 {
        weight 24
        MISC_CHECK {
            misc_path "/usr/local/sbin/check_php_wrapper.sh 10.10.35.31"
            misc_timeout 30
        }
    }

    real_server 10.10.35.32 {
        weight 24
        MISC_CHECK {
            misc_path "/usr/local/sbin/check_php_wrapper.sh 10.10.35.32"
            misc_timeout 30
        }
    }

    real_server 10.10.35.33 {
        weight 24
        MISC_CHECK {
            misc_path "/usr/local/sbin/check_php_wrapper.sh 10.10.35.33"
            misc_timeout 30
        }
    }

    real_server 10.10.35.34 {
        weight 24
        MISC_CHECK {
            misc_path "/usr/local/sbin/check_php_wrapper.sh 10.10.35.34"
            misc_timeout 30
        }
    }
}

http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.fwmark.html

[root@lb1 ~]# iptables -L -n -v -t mangle
Chain PREROUTING (policy ACCEPT 182G packets, 114T bytes)
 190M  167G MARK       tcp  --  *      *       0.0.0.0/0            w1.x1.y1.4       multiport dports 80,443 MARK set 0x493e0 
  62M   58G MARK       tcp  --  *      *       0.0.0.0/0            w1.x1.y2.4       multiport dports 80,443 MARK set 0x493e0 


[root@lb1 ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  300000 wrr persistent 180
  -> 10.10.35.31:0                Masq    24     1          0         
  -> dis2.domain.com:0                Masq    24     3          231       
  -> 10.10.35.33:0                Masq    24     0          208       
  -> 10.10.35.34:0                Masq    24     0          0 

在设置 realserver 时,10.10.35.0/24 网络中某些主机的 DNS 配置不正确。此后,我们修复了 DNS。但是,主机仍然只显示其 IP 号(10.10.35.31、10.10.35.33、10.10.35.34)。

[root@lb1 ~]# host 10.10.35.31 31.35.10.10.in-addr.arpa 域名指针dis1.domain.com。

OS是CentOS 6.3。Ipvsadm是ipvsadm-1.25-10.el6.x86_64。内核是kernel-2.6.32-71.el6.x86_64。Keepalived是keepalived-1.2.7-1.el6.x86_64。

我们怎样才能让 ipvsadm -L 根据正确的主机名列出所有真实服务器?

答案1

看起来您的机器的名称解析出现了问题。

ipvsadmgethostbyaddr()每次显示列表时使用,因此它让您的 libc 动态获取名称(调用链: print_conn-> addrport_to_anyname-> addr_to_anyname-> addr_to_host-> gethostbyaddr)。

您可能需要清除缓存(重新启动nscd等),或者修复您的 DNS。

相关内容