Aktive und passive FTP / TFTP-Dienste für Lastverteilung und hohe Verfügbarkeit

GESCHRIEBEN VON Zevenet | 16. August 2017

Übersicht

fTP or File Transfer Protocol ist ein Protokoll auf Anwendungsebene, das häufig für die Dateiübertragung in einem Client-Server-Architekturdesign verwendet wird, das auf TCP / IP-Netzwerkschichten basiert. FTP ist ein komplexes und einfaches (nicht sicherheitsbewusstes) Protokoll, dessen verwendete Ports auf Anwendungsebene zwischen dem Client und dem Server ausgehandelt werden, so dass es ein wenig schwierig ist, den Lastenausgleich durchzuführen oder Firewall-Regeln zu erstellen. Darüber hinaus können sich FTP-Server und -Client im aktiven oder passiven Modus verhalten, der im Folgenden beschrieben wird.

Einige Funktionen, die FTP bereitstellen, sind: 2-TCP-Ports (20, 21 standardmäßig), die jeweils für Steuerbefehle und für Daten verwendet werden, Unterstützung für Authentifizierungsmechanismen, keine Verschlüsselungsunterstützung, ASCII- und Binärübertragung, breite Befehle (Verzeichnisliste, Verzeichnissuche, Laden Sie Dateien hoch, laden Sie Dateien herunter usw.) und die TCP-Ausfallsicherheit.

TFTP or Triviales FTP ist eine Variante mit einer schnelleren Dateiübertragung und einem einfacheren Architekturdesign, das nur einen UDP-Port (standardmäßig 69) verwendet, keine Unterstützung oder Verschlüsselung des Authentifizierungsmechanismus, drei verfügbare Übertragungsmodi (netascii, Octet und Mail) und nur grundlegende Befehle wie Hochladen und Herunterladen Dateien.

Sowohl FTP- als auch TFTP-Dienste lassen sich problemlos mit Load Balancing ausgleichen Zevenet Load Balancer. Lesen Sie weiter, um zu wissen, wie Sie dies erreichen können.

FTP-Lastausgleichsumgebung

Das Szenario, das wir in diesem Artikel erreichen möchten, ist in der folgenden Abbildung dargestellt.

Entweder gibt es eine hohe Parallelität von Benutzern und es ist erforderlich, den Dienst zu skalieren, oder es handelt sich um einen kritischen Dienst, der hoch verfügbar sein muss. Ein Lastenausgleich für FTP-Dienste wird benötigt.

Aktive FTP-Moduskonfiguration

An aktives FTP Setup erfordert die Verwendung der Ports 20 und 21 in den Servern oder Backends. Das folgende Bild zeigt, wie die Verbindung abläuft, wenn Daten zwischen einem Client und einem FTP-Server übertragen werden müssen.

active_ftp_client_server

In der oben gezeigten Reihenfolge:
1. Der Client fordert den Server über Port an 21 Ein Kommando.
2. Der Server bestätigt dem Client.
3. Der Server initiiert die Datenverbindung über den Datenport 20.
4. Der Client bestätigt dem Server, wenn er fertig ist.

Zu diesem Zeitpunkt müssen wir einen Load Balancer zwischen Client und Server einrichten und uns dann um die Verkehrsflüsse, Verbindungsinitialisierer und Portvereinbarungen zwischen Client und Server kümmern.

Mit Zevenet Load Balancer müssen wir diese Art der Konfiguration erreichen und ein LSLB-Farmprofil L4xNAT mit Ports erstellen 20,21 und fTP Protokoll, wie in der Abbildung unten gezeigt, und schließlich die Backends festlegen (nicht erforderlich, um die Ports festzulegen).

zevenet_adc_lb_active_ftp_configuration

Die Clients müssen sich mit der VIP-Adresse der neuen FTP-Farm verbinden.

Hinweis: Diese Konfiguration ist sicher und kann sowohl für den aktiven als auch für den passiven Client / Server-Modus verwendet werden.

Passive FTP-Modus-Konfiguration

A passives FTP Setup verwendet nur den Port 21 in den Servern oder Backends. Das folgende Bild zeigt, wie die Verbindung abläuft, wenn Daten zwischen einem Client und einem FTP-Server übertragen werden müssen.

passive_ftp_client_server

In der oben gezeigten Reihenfolge:
1. Der Client fordert den Server über Port an 21 Ein Kommando.
2. Der Server bestätigt dem Client.
3. Der Client initiiert die Datenverbindung, die einen hohen Datenport verwendet, zu einem vereinbarten Port der Anwendungsebene auf der Serverseite.
4. Der Server bestätigt dem Client, wenn er fertig ist.

Zu diesem Zeitpunkt müssen wir einen Load Balancer zwischen Client und Server einrichten und uns dann um die Verkehrsflüsse, Verbindungsinitialisierer und Portvereinbarungen zwischen Client und Server kümmern.

Mit Zevenet Load Balancer müssen wir diese Art der Konfiguration erreichen und ein LSLB-Farmprofil L4xNAT mit dem Port erstellen 21 und fTP Protokoll, wie in der Abbildung unten gezeigt, und schließlich die Backends festlegen (nicht erforderlich, um die Ports festzulegen).

zevenet_adc_lb_passive_ftp_configuration

Die Clients müssen sich mit der VIP-Adresse der neuen FTP-Farm verbinden.

TFTP-Konfiguration

Triviales FTP Protokolle werden hauptsächlich während verwendet PXE (Preboot eXecution Environment) -Umgebungen, die aus einer Kombination von DHCP- und TFTP-Diensten bestehen, in denen Dutzende, Hunderte oder sogar Tausende von Computern über das Netzwerk bereitgestellt werden können.

Das Hauptverhalten des Protokolls wäre:
1. Der Client fordert den Server über Port an 69 einen Befehl zum Anfordern von Leseanforderungen (RRQ) oder Schreibanfragen (WRQ), einschließlich des Datei- und Übertragungsmodus.
2. Der Server bestätigt dem Client und benachrichtigt den neuen Datenport, der verwendet werden soll.
3. Der Client initiiert die Datenverbindung zu einem vereinbarten Port der Anwendungsebene auf der Serverseite.
4. Der Server bestätigt dem Client, wenn die neuesten 512-Bytes übrig sind.

In einer Umgebung, in der der TFTP-Dienst skaliert werden muss, ist die Konfiguration mit Zevenet 5 sehr einfach. Es ist erforderlich, ein LSLB-Farmprofil L4xNAT mit dem Port zu erstellen 69 und TFTP Protokoll, wie in der Abbildung unten gezeigt, und schließlich die Backends festlegen (nicht erforderlich, um die Ports festzulegen).

zevenet_adc_lb_tftp_configuration

Die Clients müssen sich mit der VIP-Adresse der neuen TFTP-Farm verbinden.

Sicheres FTP

Um die erhöhte Sicherheit des FTP-Protokolls zu lösen, müssen Sie die SSH-Dateiübertragungsprotokoll oder besser bekannt als SFTP wurde entwickelt, um eine Sicherheitsschicht bereitzustellen. In diesem Szenario sollten die FTP-Server als SFTP konfiguriert werden, und der Lastausgleich dieser Server ist so einfach wie das Erstellen einer LSLB mit L4xNAT-Profilfarm über den Standardport 22 und Protokoll TCP wie es im Screenshot unten gezeigt wird. Fügen Sie zum Schluss einfach Ihre SFTP-Service-Backends hinzu.

zevenet_adc_lb_secure_ftp_sftp_configuration

Die Clients müssen sich mit der VIP-Adresse der neuen TCP-Farm verbinden, die einen SFTP-Dienst bereitstellt.

Erweiterte Gesundheitschecks

FTP-Statusprüfung

Zevenet-Appliances enthalten bereits die check_ftp Integritätsprüfung für FTP-Dienste, damit wir die Integritätsprüfung mit einem Up-Backend testen können:

root@zevenet:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org
FTP OK - 0.262 second response time on ftp.debian.org port 21 [220 ftp.debian.org FTP server]|time=0.262090s;;;0.000000;10.000000 

Andererseits erhalten wir mit einem Down-Backend die folgende Ausgabe:

root@zevenet:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org
CRITICAL - Socket timeout after 10 seconds

Der Farm Guardian-Befehl zum Konfigurieren in der FTP-Farm wäre also:

check_ftp -H HOST

Stellen Sie auf der Registerkarte Dienste sicher, dass Farm Guardian wie folgt konfiguriert ist. Ein Timeout von 60-Sekunden würde ausreichen, um das korrekte Verhalten eines Backends sicherzustellen.

zevenet_active_passive_ftp_farm_guardian_advanced_health_check_config

TFTP-Gesundheitscheck

Wenn die check_tftp Die erweiterte Prüfung ist in der Zevenet-Appliance noch nicht vorhanden. Wir können ein einfaches Skript für die Integritätsprüfung erstellen, wie unten für unsere TFTP-Dienste beschrieben.

Erstellen Sie zunächst eine Dummy-Datei in Ihrem TFTP-Backends-Verzeichnis tftp_zevenet_check.txtund fügen Sie Inhalte hinzu, z. B. "OK".

Dann installieren Sie in Ihrer Zevenet-Appliance den tftp-Client mit dem folgenden Befehl:

apt-get install tftp

Erstellen Sie dann eine neue Skriptdatei zum Beispiel im Standardverzeichnis von Zevenet Health Checks /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh mit dem folgenden Skriptcode:

#!/bin/bash
###
### Check TFTP services
### Copyright 2017-now Zevenet SL
###
### $1 : Host to be checked
CRITICAL=1
OK=0
RESULT=$(echo get tftp_zevenet_check.txt | tftp $1 2>&1 | head -n 1)

echo "TFTP health check status for $1 is $RESULT"

if [ "`echo $RESULT | grep Received`" != "" ]; then
        exit $OK
else
        exit $CRITICAL
fi

Weisen Sie dann mit dem Befehl Ausführungsberechtigungen zu:

root@zevenet:/# chmod 755 /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh

Wenn wir versuchen, das Skript auszuführen, erhalten wir eine erfolgreiche Nachricht, wenn das Backend aktiv und gut konfiguriert ist:

root@zevenet:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250
TFTP health check status for 192.168.101.250 is tftp> Received 4 bytes in 0.0 seconds

oder ein Fehler, wenn das Backend ausgefallen ist:

root@zevenet:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250
TFTP health check status for 192.168.101.254 is tftp> Transfer timed out.

Konfigurieren Sie schließlich die Integritätsprüfung in der TFTP-Farm, einschließlich des Befehls HOST-Token.

check_mytftp.sh HOST

Stellen Sie auf der Registerkarte Dienste sicher, dass Farm Guardian wie folgt konfiguriert ist. Ein Timeout von 60-Sekunden würde ausreichen, um das korrekte Verhalten eines Backends sicherzustellen.

zevenet_tftp_farm_guardian_advanced_health_check_config

SFTP-Gesundheitscheck

Da gibt es bereits den Gesundheitscheck check_sshWir können es direkt verwenden. Der Farm Guardian-Befehl, der in der SFTP-Farm konfiguriert werden soll, lautet daher wie folgt:

check_ssh HOST

Dann wird die Konfiguration wie im folgenden Screenshot gezeigt angezeigt.

zevenet_ssh_sftp_farm_guardian_advanced_health_check_config

Genießen Sie Ihre hochverfügbare und skalierbare Dateiübertragung!

Teilen:

Dokumentation unter den Bedingungen der GNU Free Documentation License.

War dieser Artikel hilfreich?

Verwandte Artikel