Domain-Name-System

ipvsadm 僅按 IP 列出一些主機,其餘按名稱

  • December 6, 2012

我們使用 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 

在設置 realservers 時,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。 作業系統為 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 按正確的主機名列出所有真實伺服器?

看起來您的機器上的名稱解析有問題。

ipvsadm``gethostbyaddr()每次顯示列表時都使用它,因此它可以讓您的 libc 動態獲取名稱(呼叫鏈: print_conn-> addrport_to_anyname-> addr_to_anyname-> addr_to_host-> gethostbyaddr)。

您可能需要刷新記憶體(重新啟動nscd等),或修復您的 DNS。

引用自:https://serverfault.com/questions/453553