LVS - ipvsadm, ldirectord

Üdv,

szóval, a következőt szeretném megvalósítani. Van két gép, A-nak ipje 10.0.0.1, B-nek ipje 10.0.0.2. És van egy ip cím, a 10.0.0.10, ami ha módon egyikre vagy másikra kerül heartbeat-nek köszönhetően. Namost a cél az lenne, hogy LVS-sel pl. FTP-hez olyat beállítani, hogy ha mindkét gép megy, akkor nagyjából load balanceolva lesznek A és B gép között a 10.0.0.10 kérések. Ha pedig csak egy megy, akkor nyilván csak arra menjen. Persze, majd heartbeat fogja vezérelni ezt is, de most még kézzel próbálom az alábbi konfiggal:

/usr/sbin/ldirectord /etc/ha.d/ldirectord.cf start


# Global Directives
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/cluster/ldirectord.log"
quiescent=yes

virtual=10.0.0.10:21
#        fallback=127.0.0.1:21
        real=10.0.0.1:21 gate
        real=10.0.0.2:21 gate
        service=ftp
        request="welcome.msg"
        receive="Welcome"
        login="tesztuser"
        passwd="Teszt321"
        scheduler=rr
        #persistent=600
        protocol=tcp
        checktype=negotiate

Elindítom, ipvsadm -L -n kimenete:


IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.10:21 rr
  -> 10.0.0.1:21                  Local   1      0          0         
  -> 10.0.0.2:21                  Route   1      0          0 

A és B gépen fut az FTP, a megadott user/pass-sal lehet is kapcsolódni, ott a fájl a megfelelő tartalommal.

De hiába próbálok kapcsolódni a 10-es ipre, timeout. Ilyenkor amit látok ipvsadm -L -n kimenetből az annyi, hogy lesz +1 InActConn-je az egyik gépnek...

Mit rontok el, mi hiányzik, vagy mit nem sikerült megértenem ennek kapcsán?
Köszönöm.

Hozzászólások

Na, asszem rájöttem. Az volt a baja, hogy olyan címre ment a kérés, ami neki nem volt beállítva. Mindkét gépen csináltam egy lo:0-t a 10.0.0.10-es ipvel meg 255.255.255.255-ös subnet maskkal, ftp figyel rajta, és így megy.
Egyetlen probléma van még, a passzív portok. De ezt meg megoldom úgy, hogy más-más range-t állítok be, aztán tűzfalon forwardolom...

A többi service-el meg nem lesz ilyen gond, imap/pop3/stb. egy porton mennek. :)
--
Discover It - Have a lot of fun!

Ha route metódust használsz, akkor a szolgáltatást IP-t fel kell venned a másik gépen is, hogy a kernel elfogadja a csomagot és ne forwardolni akarja (vagy a lo-ra, vagy egy dummy interfészre). Vagy egyszerűen masq metódust használsz, bár ez talán ftp-nél okozhat problémákat.