FTP proxy (Failover)
Par Mino, mardi 31 juillet 2012 à 15:53 :: Linux :: #14 :: rss
J'ai beau pensé depuis plus de 5 ans que le FTP fait partie du passé, force est de constater qu'il a encore de beau jours devant lui. Voila donc mon problème. Une application doit mettre à jour et recupérer des données sur mes serveurs... Peu importe le serveur sur lequel elle se connecte mais il faut qu'il soit accessible nous allons donc nous confectionner un proxy FTP qui nous renverra vers le premier serveur Up qu'il trouvera dans sa liste.
Cet article est un brouillon et peut etre le restera t-il jusqu'a ce que quelqu'un le reprenne ou que je trouve le courage de tout détailler...
Quoi qu'il en soit.
Sur votre load balancer. vous allez ajouter un proxy FTP et les "inet utils" celui par defaut de debian est tres bien :
apt-get -f install ftp-proxy inetutils-inetd
modifier les fichiers de conf de façons suivante:
/etc/default/ftp-proxy
RUN_DAEMON=yes
supprimer ou déplacer le fichier /etc/proxy-suite/ftp-proxy.conf
creer un template de fichier de conf pour ftp proxy
/etc/proxy-suite/ftp-proxy.default :
[-Global-] ActiveMinDataPort 49000 ActiveMaxDataPort 50000 DestinationPort 21 Group nogroup Port 21 ServerType standalone User nobody
Editer le fichier /etc/inetd.conf et ajouter la ligne suivante
ftp stream tcp nowait root /usr/local/sbin/lb.ftp-proxy
Il ne nous reste donc plus qu'a creer le script /usr/local/sbin/lb.ftp-proxy à l'arrache ca doit donner quelque chose comme ca (il faudra changer la liste des serveurs):
#!/bin/bash ftpserverlist="ftp1.mondomaine.com ftp2.mondomaine.com"; for i in $ftpserverlist do ping -c 1 $i &> /dev/null || continue netcat -w 3 -z $i 21 &> /dev/null || continue cat /etc/proxy-suite/ftp-proxy.default > /etc/proxy-suite/ftp-proxy.conf echo "DestinationAddress $i" >> /etc/proxy-suite/ftp-proxy.conf break; done /usr/sbin/ftp-proxy -i
Bien évidement ils vous faudra adapter les nom de domaines et les option de FTP-proxy ... mais le concept est la... A la connexion au proxy on test le premier serveur s'il est up on proxy vers celui-ci sinon on test le suivant.
Commentaires
Les commentaires pour ce billet sont fermés.