Marché #
Le protocole FTP ( File Transfer Protocol) est un protocole de couche application largement utilisé pour le transfert de fichiers dans une architecture client-serveur reposant sur le réseau TCP/IP. Protocole complexe et simple (sans prise en charge de la sécurité), le FTP négocie les ports utilisés au niveau de la couche application entre le client et le serveur, ce qui rend difficile l'équilibrage de charge ou la création de règles de pare-feu. De plus, le serveur et le client FTP peuvent fonctionner en mode actif ou passif, comme décrit ci-dessous.
FTP comprend (les ports TCP 2 (20, 21 par défaut)), l’un utilisé pour les commandes de contrôle et l’autre pour les données, la prise en charge du mécanisme d’authentification, la non prise en charge du chiffrement, le transfert ascii et binaire, les commandes étendues disponibles (liste des répertoires, navigation dans les répertoires, etc.) télécharger des fichiers, télécharger des fichiers, etc.) et la résilience inhérente à TCP.
TFTP ou Trivial FTP est une variante avec un transfert de fichiers plus rapide et une architecture plus simple qui utilise un seul port UDP (69 par défaut), aucun mécanisme d'authentification ni de chiffrement, trois modes de transfert disponibles (netascii, octet et mail) et seulement des commandes de base comme le téléchargement et l'envoi de fichiers.
Les services FTP et TFTP peuvent être équilibrés facilement avec RELIANOID Load Balancer. Continuez à lire pour savoir comment y parvenir.
Environnement d'équilibrage de charge FTP #
Le scénario que nous souhaitons atteindre dans cet article est présenté dans le diagramme ci-dessous.
Soit il existe une forte concurrence d'utilisateurs et il est nécessaire de faire évoluer le service, soit il s'agit d'un service critique qui doit être hautement disponible, un équilibreur de charge de service FTP sera nécessaire.
Configuration active du mode FTP #
Une configuration FTP active nécessite l'utilisation des ports 20 et 21 côté serveur. L'image ci-dessous illustre le flux de connexion lors du transfert de données entre un client et un serveur FTP.
Dans l'ordre indiqué ci-dessus:
1. Le client demande au serveur via le port 21 une commande.
2. Le serveur accuse réception au client.
3. Le le serveur initie la connexion de données utilisant le port de données 20.
4. Le client reconnaît au serveur quand il a terminé.
À ce stade, nous devons configurer un équilibreur de charge entre le client et le serveur, puis nous occupons des flux de trafic, des initialiseurs de connexions et des accords de port entre le client et le serveur.
Avec RELIANOID Load Balancer, nous devons réaliser ce type de configuration en créant un profil de ferme LSLB L4xNAT avec des ports 20,21 et Ftp protocole, comme indiqué dans l'image ci-dessous, et définissez enfin les backends (non requis pour définir les ports).
Les clients doivent se connecter à l'adresse VIP de la nouvelle batterie FTP.
Remarque : Cette configuration peut être utilisée en toute sécurité en modes client/serveur actif et passif.
Configuration passive en mode FTP #
Une configuration FTP passive utilise uniquement le port 21 côté serveur. L'image ci-dessous illustre le flux de connexion lors du transfert de données entre un client et un serveur FTP.
Dans l'ordre indiqué ci-dessus:
1. Le client demande au serveur via le port 21 une commande.
2. Le serveur accuse réception au client.
3. Le client initie la connexion de données utilisant un port de données élevé à un port convenu de la couche application côté serveur.
4. Le serveur reconnaît au client quand il a terminé.
À ce stade, nous devons configurer un équilibreur de charge entre le client et le serveur, puis nous occupons des flux de trafic, des initialiseurs de connexions et des accords de port entre le client et le serveur.
Avec RELIANOID Load Balancer, nous devons réaliser ce type de configuration en créant un profil de ferme LSLB L4xNAT avec le port 21 et Ftp protocole, comme indiqué dans l'image ci-dessous, et définissez enfin les backends (non requis pour définir les ports).
Les clients doivent se connecter à l'adresse VIP de la nouvelle batterie FTP.
Configuration TFTP #
Les protocoles FTP triviaux sont principalement utilisés dans les environnements PXE (Preboot eXecution Environment) composés d'une combinaison de services DHCP et TFTP, où des dizaines, des centaines, voire des milliers d'ordinateurs peuvent être déployés sur le réseau.
Le comportement de protocole principal serait:
1. Le client demande au serveur via le port 69 une commande de demande de lecture (RRQ) ou de demande d'écriture (WRQ) incluant le fichier et le mode de transfert.
2. Le serveur accuse réception au client et informe le nouveau port de données à utiliser.
3. Le client initie la connexion de données à un port convenu de la couche application côté serveur.
4. Le serveur accuse réception au client quand les derniers octets 512 sont restés.
Dans un environnement où le service TFTP doit évoluer, la configuration avec RELIANOID 5 est très simple. Il est nécessaire de créer un profil de ferme LSLB L4xNAT avec le port 69 et TFTP protocole, comme indiqué dans l'image ci-dessous, et définissez enfin les backends (non requis pour définir les ports).
Les clients doivent se connecter à l'adresse VIP de la nouvelle batterie TFTP.
FTP sécurisé #
Pour renforcer la sécurité du protocole FTP, le protocole de transfert de fichiers SSH , plus connu sous le nom de SFTP, a été conçu pour fournir une couche de sécurité supplémentaire. Dans ce cas, les serveurs FTP doivent être configurés en mode SFTP et leur répartition de charge se fait simplement en créant une ferme de serveurs LSLB avec un profil L4xNAT sur le port 22 et le protocole TCP par défaut , comme illustré dans la capture d'écran ci-dessous. Enfin, il suffit d'ajouter vos serveurs SFTP.
Les clients doivent se connecter à l'adresse VIP de la nouvelle batterie TCP, qui dessert un service SFTP.
Bilans de santé avancés #
Bilan de santé FTP #
RELIANOID les appareils incluent déjà le check_ftp bilan de santé pour les services FTP, afin que nous puissions tester le bilan de santé avec un back-end:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org FTP OK - Temps de réponse de 0.262 seconde sur le port ftp.debian.org 21 [serveur FTP 220 ftp.debian.org] |temps=0.262090s;;;0.000000;10.000000
D'autre part, avec un backend down, nous obtiendrons la sortie suivante:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org CRITIQUE - Délai d'expiration du socket après 10 secondes
Donc, la commande Farm Guardian à configurer dans la batterie de serveurs FTP serait:
check_ftp -H HÔTE
Dans l'onglet Services, assurez-vous de la configuration de Farm Guardian comme indiqué ci-dessous. Un délai d'attente de 60 secondes serait suffisant pour assurer le bon comportement d'un serveur.
Bilan de santé TFTP #
Si la check_tftp la vérification avancée n'existe pas déjà dans le RELIANOID appareil, nous pouvons créer un script de vérification de l'état simple comme décrit ci-dessous pour nos services TFTP.
Tout d'abord, créez un fichier factice dans votre répertoire de backends TFTP, par exemple tftp_relianoid_check.txt , et ajoutez-y du contenu, par exemple « OK ».
Ensuite, dans votre RELIANOID L'appliance installe le client tftp avec en exécutant la commande suivante :
apt-get installer tftp
Et puis, créez un nouveau fichier de script dans le RELIANOID répertoire par défaut des vérifications de santé, par exemple /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh avec le code de script suivant:
#!/bin/bash ### ### Vérifier les services TFTP ### Copyright 2017-maintenant RELIANOID SL ### ### $1 : Hôte à vérifier CRITICAL=1 OK=0 RESULT=$(echo get tftp_relianoid_check.txt | tftp $1 2>&1 | head -n 1) echo "L'état de vérification de l'état TFTP pour $1 est $RESULT" if [ "`echo $RESULT | grep Received`" != "" ]; then exit $OK else exit $CRITICAL fi
Ensuite, attribuez des autorisations d'exécution avec la commande:
root@noid:/# chmod 755 /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh
Si nous essayons d'exécuter le script, nous obtiendrons un message réussi lorsque le backend est opérationnel et bien configuré:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250 L'état de la vérification de l'état TFTP pour 192.168.101.250 est tftp> Reçu 4 octets en 0.0 seconde
ou une erreur lorsque le backend est en panne:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250 L'état de la vérification de l'état TFTP pour 192.168.101.254 est tftp> Le délai de transfert a expiré.
Enfin, configurez la vérification de l’état de santé dans la batterie de serveurs TFTP, y compris dans la commande le jeton HOST.
check_mytftp.sh HÔTE
Dans l'onglet Services, assurez-vous de la configuration de Farm Guardian comme indiqué ci-dessous. Un délai d'attente de 60 secondes serait suffisant pour assurer le bon comportement d'un serveur.
Bilan de santé SFTP #
Le contrôle d'intégrité check_ssh étant déjà disponible , nous pouvons l'utiliser directement. La commande Farm Guardian à configurer dans la ferme SFTP serait donc la suivante :
check_ssh HÔTE
Ensuite, la configuration serait affichée comme indiqué dans la capture d'écran suivante.
Profitez de votre transfert de fichiers hautement disponible et évolutif!









