Domain-Name-System
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
在設置 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。