我在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正确的设置。 更多信息 。