Hi,
here is something that drives me crazy - I can't get my (first) IPVS
Administration to work with that config.
I simply want to map port 82 on that virtual server to port 81 on the
real servers. BUt all connections on port 82 simple time out. The real
server works fine with direct access.
I follow this guideline for Debian Stable:
http://www.debianhelp.co.uk/ultramonkey.htm
checktimeout=10
checkinterval=2
autoreload=yes
logfile="/var/log/ldirector"
quiescent=yes
virtual=80.237.183.170:82
fallback=67.19.109.2:81 masq 1000
real=80.237.155.99:81 masq 1000
service=http
request="ldirector.html"
receive="Test Page"
protocol=tcp
checktype=negotiate
persistent=1800
ipvsadm -ln
shows this:
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 80.237.183.170:82 wrr persistent 1800
-> 80.237.155.99:81 Masq 1000 0 0
-> 80.237.155.99:82 Masq 0 0 0
The debugging shows this:
/usr/sbin/ldirectord -d /etc/heartbeat/ldirectord.cf start
EBUG2: Starting Linux Director v1.77.2.6 with pid: 13868
Starting Linux Director v1.77.2.6 with pid: 13868
DEBUG2: Running system(/sbin/ipvsadm -A -t 80.237.183.170:82 -s wrr -p
1800 )
Running system(/sbin/ipvsadm -A -t 80.237.183.170:82 -s wrr -p 1800 )
DEBUG2: Added virtual server: 80.237.183.170:82
Added virtual server: 80.237.183.170:82
DEBUG2: Running system(/sbin/ipvsadm -a -t 80.237.183.170:82 -r
67.19.109.2:81 -m -w 1)
Running system(/sbin/ipvsadm -a -t 80.237.183.170:82 -r 67.19.109.2:81
-m -w 1)
DEBUG2: Added fallback server: 67.19.109.2:81 ( x 80.237.183.170:82)
(Weight set to 1)
Added fallback server: 67.19.109.2:81 ( x 80.237.183.170:82) (Weight set
to 1)
DEBUG2: Running system(/sbin/ipvsadm -a -t 80.237.183.170:82 -r
80.237.155.99:82 -m -w 0)
Running system(/sbin/ipvsadm -a -t 80.237.183.170:82 -r 80.237.155.99:82
-m -w 0)
DEBUG2: Quiescent real server: 80.237.155.99:82 mapped from
80.237.155.99:81 ( x 80.237.183.170:82) (Weight set to 0)
Quiescent real server: 80.237.155.99:82 mapped from 80.237.155.99:81 ( x
80.237.183.170:82) (Weight set to 0)
On the clients I have this configured:
#vi /etc/sysctl.conf
# Enable configuration of arp_ignore option
net.ipv4.conf.all.arp_ignore = 1
# When an arp request is received on eth0, only respond if that address is
# configured on eth0. In particular, do not respond if the address is
# configured on lo
net.ipv4.conf.eth0.arp_ignore = 1
# Ditto for eth1, add for all ARPing interfaces
#net.ipv4.conf.eth1.arp_ignore = 1
# Enable configuration of arp_announce option
net.ipv4.conf.all.arp_announce = 2
# When making an ARP request sent through eth0 Always use an address that
# is configured on eth0 as the source address of the ARP request. If this
# is not set, and packets are being sent out eth0 for an address that is on
# lo, and an arp request is required, then the address on lo will be used.
# As the source IP address of arp requests is entered into the ARP cache on
# the destination, it has the effect of announcing this address. This is
# not desirable in this case as adresses on lo on the real-servers should
# be announced only by the linux-director.
net.ipv4.conf.eth0.arp_announce = 2
# Ditto for eth1, add for all ARPing interfaces
#net.ipv4.conf.eth1.arp_announce = 2
Iproute is installed too.
DO I miss something here?
Thanks!
Torsten
|