HTTP端口在LVS(Linux虚拟服务器)负载平衡器中的新虚拟IP上进行筛选

我在CentOS 5.10上inheritance了Linux Virutal Server(LVS)负载平衡器。 一段时间没有问题,没有问题的运行。

现在,当我添加一个新的虚拟IP(VIP)时,所有HTTPstream量都被“过滤”到该端口。

例如:这是现有VIP的nmap输出:

nmap 10.150.200.141 Starting Nmap 5.51.6 ( http://nmap.org ) at 2014-10-13 14:55 EDT Nmap scan report for 10.150.200.141 Host is up (0.014s latency). Not shown: 995 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 111/tcp open rpcbind 443/tcp open https 1556/tcp open veritas_pbx Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds 

这里是我刚刚添加的VIP的nmap输出:

 nmap -Pn 10.150.200.47 Starting Nmap 5.51.6 ( http://nmap.org ) at 2014-10-13 14:58 EDT Nmap scan report for 10.150.200.47 Host is up (0.011s latency). Not shown: 995 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp filtered http 111/tcp open rpcbind 443/tcp filtered https 1556/tcp open veritas_pbx Nmap done: 1 IP address (1 host up) scanned in 1.31 seconds 

我应该注意到,新VIP的configuration是原来VIP的副本; 我只是改了名字,eth0和IP。

另外需要注意的是,新VIP中的真实服务器以前是原来的VIP,在那里工作得很好。 现在我只需要在自己的VIP上进行testing。

我尝试了另一个真正的服务器(与前面提到的无关)的另一个全新的VIP,并得到相同的结果。

使用iptables输出更新:

 /sbin/iptables -L --line -n -v Chain INPUT (policy ACCEPT 106M packets, 16G bytes) num pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 107M packets, 16G bytes) num pkts bytes target prot opt in out source destination 

使用ipvsadm输出更新:

 ipvsadm -L -n -t 10.150.200.47:80 Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.150.200.47:80 wlc -> 10.150.200.247:80 Route 50 0 0 

使用从真实服务器输出的iptables进行更新:

 Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:161:162 6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:161:162 10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 11 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 

任何想法或build议debugging将不胜感激。

检查防火墙configuration:

 /sbin/iptables -L --line -n -v 

有可能你需要允许该VIP的stream量。 例如:

 /sbin/iptables -I INPUT <line#> -d 10.150.200.47 -p tcp -m tcp --dport 80 -j ACCEPT /sbin/iptables -I INPUT <line#> -d 10.150.200.47 -p tcp -m tcp --dport 443 -j ACCEPT 

另外,请确认真实服务器正在接受连接,例如:

 $ sudo ipvsadm -L -n -t 10.150.200.47:80 Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.150.200.47:80 wrr -> 192.168.100.11:80 Route 1 56 145 -> 192.168.100.12:80 Route 1 49 159 

编辑:添加东西来检查真实的服务器上:

假设您正在使用直接路由,则需要在真实服务器的环回接口上configuration虚拟IP。 当连接从负载均衡器转发到辅助服务器时,它将像往常一样在eth0上回应。 这个configuration是什么样的:

 ifconfig lo:0 10.150.200.47 netmask 255.255.255.255 

或者作为networking脚本:

 $ cat /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 IPADDR=10.150.200.47 NETMASK=255.255.255.255 ONBOOT=yes 

另外你需要通过sysctl来改变内核参数:

 #不要接受源路由
 net.ipv4.conf.default.accept_source_route = 0

此外,您需要更改ARP的发布方式并响应请求( 更多信息 ):

 net.ipv4.conf.eth0.arp_ignore = 1
 net.ipv4.conf.eth0.arp_announce = 2
 net.ipv4.conf.all.arp_ignore = 1
 net.ipv4.conf.all.arp_announce = 2

另外,configurationrp过滤:

 net.ipv4.conf.eth0.rp_filter = 1#适用于CentOS 5
要么
 net.ipv4.conf.eth0.rp_filter = 2#适用于CentOS 6+

内核版本的默认rp_filter设置可能会有所不同,所以请确保select正确的设置。 更多信息 。