Toon posts:

[KeepAlived: LVS DR] Passive FTP op een andere poort

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleem met een loadbalancer die ik hier heb draaien.

Situatie:

1 loadbalancers
2 web/ftp servers
dus 3 servers in totaal.

De loadbalancer is een server uitgerust met Fedora Core 3 waarop gebruik wordt gemaakt van KeepAlived 1.1.11. Dit is een soort schil om IPVS heen. Ik gebruik LVS DR (Direct Routing) als opzet.

RIP = real ip
VIP = virtual ip


Hieronder even een schematisch overzichtje:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
==================================================

            ----------------
            |              |
            | LoadBalancer |
            |              |
            ----------------
            RIP = 1.1.1.1
            VIP = 1.1.1.10
                    |
                    |
                    |
                    |
        -------------------------
        |                       |
        |                       |
        |                       |
        |                       |
------------------      ------------------
|                |      |                |
| Web/ftp server |      | Web/ftp server |
|                |      |                |
------------------      ------------------
RIP = 1.1.1.2           RIP = 1.1.1.3

==================================================


Het probleem:
-------------
Een applicatie uploadt bestanden via SFTP (FTP over SSL) naar een server. Dit verkeer zal via de loadbalancer verlopen. Aangezien het verkeer ge-encrypt is, moet er gebruik worden gemaakt van Passive Mode om er voor te zorgen dat er uberhaupt een connectie mogelijk is. De FTP-server (in dit geval ProFTPD) zal anders een connectie proberen op te bouwen met interne ip adressen als men via NAT online zit. Dit is op zich geen probleem. Als er via poort 21 een verbinding wordt gemaakt, kan men zonder problemen ook een data connectie opbouwen met de FTP server en zodoende bestanden overzetten, etc.

Alleen is het zo dat sommige mensen geen correcte connectie kunnen opbouwen via poort 21 aangezien hun firewall dit verkeer niet snapt, aangezien het ge-encrypt is. Deze mensen kunnen dus niet gebruik maken van de SFTP server. Dit is niet acceptabel voor het systeem en het dient voor iedereen beschikbaar te zijn.

Om dit probleem op te lossen dacht ik de oplossing te hebben door de SFTP server ook op poort 2121 te laten luisteren. Rechtstreeks naar een web/ftp server werkt dit naar behoren. Via het VIP niet. Het probleem is dat de control channel wel wordt bereikt via de Loadbalancer en de web/ftp server zet ook een poort open voor de client, maar doet dit namens het VIP waardoor het antwoord van de Client weer naar de loadbalancer wordt gestuurd. Bij poort 21 is dit geen probleem, aangezien de loadbalancer op de hoogte is van het FTP protocol maar dus niet als het via poort 2121 gaat.

Ik heb geloof ik heel Google al afgezocht maar heb tot nog toe geen goede oplossing kunnen vinden.

Ik heb ook nog geprobeerd om poort 2121 te redirecten naar poort 21 maar dan luistert IPVS er niet naar omdat het request vanaf een locale interface afkomt. Hiervoor had ik wel een hack in de kernel gevonden om dit op te lossen maar deze was voor een oude kernel (2.4.26 geloof ik). Ik heb mijn huidige kernel (2.6.11) wel voorzien van de hack (kwam enigszins wel overheen) en uitgeprobeerd maar helaas loste dit mijn probleem niet op. Zag wel via de tcpdump dat iptables de redirect wel goed uitvoerde.


Verder heb ik het bestand /net/ipv4/ipvs/ip_vs_ftp.c ook nog gehackt en daar bij de volgende wijziging doorgevoerd:
code:
1
static int ports[IP_VS_APP_MAX_PORTS] = {21, 0};

veranderd in:
code:
1
static int ports[IP_VS_APP_MAX_PORTS] = {21, 2121, 0};


Helaas gaf dit niet het juiste resultaat.

Ik kom er niet meer uit. Wie heeft meer info?

Alvast bedankt!

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 06:44

Koffie

Koffiebierbrouwer

Braaimeneer

Move PNS > NOS on reqeust.

Tijd voor een nieuwe sig..


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 05-02 15:31

killercow

eth0

Je bent een LVS cluster aan het bouwen dus?

KeepAliveD kan je gewoon buiten deze hele discussie laten, deze houdt alleen je servers in de gaten, en gooits niet luisterende servers eventueel uit je cluster lijstje.

Wat je probleem is is dat ftp passive mode een kernel flag nodig heeft om goed te werken via de director, hij moet namenlijk het ftp verkeer speciaal behandelen, op een fedora machine zal hier ongetwijfeld een module voor beschikbaar zijn, maar als je zelf een kernel bakt vindt je deze als sub-optie onder virtual server support.

Maar dan nog, waarom wil je in gods naam naar je servers ftp'en als dat niet je primarire service is. (of wil je specifiek ftp balancen omdat het zo zwaar is?)

Ik zou eventueel een van de 2 servers (of de director) als primaire ftp server opzetten., en dan via een 2e vip direct op die server ftp'en.
Daarna moet je toch de files gaan syncen via een cluster file system, of via iets als unison.
Dan heb je geen ellenlange connecties over je director lopen, (die toch stuk gaan als een van je machines eruit vliegt), en ben je ook niet je vip1 aan het belasten met hoge snelheden van veel data.,

en waar gebruik je iptables eigenlijk voor? op je director? (kun je dan niet beter de normale LVS cluster opties gebruiken?)

[ Voor 6% gewijzigd door killercow op 01-07-2005 16:25 ]

openkat.nl al gezien?


Verwijderd

Topicstarter
Ok, maar deze ftp-module heb ik al geprobeerd, tegen beter weten in want hier word geen gebruik van gemaakt als je DR (Direct Routing) gebruikt maar alleen als je NAT zou gebruiken.

FTP is wel degelijk een primaire service voor deze dienst. Ik wil het via de loadbalancer laten lopen zodat deze altijd bereikbaar is, ook al zou er een server plat gaan. Dan zouden in ieder geval alle nieuwe verbindingen naar een server lopen die nog online is. Het is dus zeker belangrijk dat de FTP server altijd bereikbaar is.

Iptables heb ik gebruikt in een poging om poort 2121 door te sturen naar poort 21 maar dan blijkt IPVS een probleem te zijn aangezien deze dat verkeer niet oppakt. Deze pakt het verkeer niet op omdat het verkeer na door iptables te zijn aangepast van een locale network-device (loopback?) afkomt en daar luistert IPVS niet naar.

Als er een manier is om de loadbalancer hiervoor te gebruiken wil ik hier heel graag gebruik van maken. Dus ik hoop dat iemand hier ook ervaring mee heeft en de oplossing heeft!

Verwijderd

Topicstarter
Subtiel schopje :D

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 05-02 15:31

killercow

eth0

Als FTP wel degelijk een always on sevice moet zijn denk ik dat je zowiezo ook 2 directors nodig hebt die in failover het ip bewaken, en het daarna naar een x aantal andere realservers doorgeven (en eventueel ook localhost).

Maar dat is niet echt je probleem zo te zien.
Ik denk dat je het beste gewoon even de kernel kunt hacken dat hij ook met 2121 om kaan gaan, of het eventuee aan Horms kan vragen op de mailinglist (horms is de developper, en is erg actief en snel)

openkat.nl al gezien?

Pagina: 1