Resumen #
FTP ( Protocolo de Transferencia de Archivos) es un protocolo de capa de aplicación ampliamente utilizado para la transferencia de archivos en una arquitectura cliente-servidor basada en las capas de red TCP/IP. FTP es un protocolo complejo y sencillo (sin funciones de seguridad) cuyos puertos se negocian en la capa de aplicación entre el cliente y el servidor, lo que dificulta el balanceo de carga y la creación de reglas de firewall. Además, el servidor y el cliente FTP pueden funcionar en modo activo o pasivo, como se describe a continuación.
Algunas características que proporciona FTP son: 2 puertos TCP (20, 21 por defecto) usados uno para comandos de control y otro para datos, soporte de mecanismo de autenticación, sin soporte de cifrado, transferencia ascii y binaria, amplios comandos disponibles (listado de directorios, exploración de directorios, cargar archivos, descargar archivos, etc.) y la resistencia inherente de TCP.
TFTP o FTP trivial es una variante con una transferencia de archivos más rápida y un diseño de arquitectura más simple que utiliza solo un puerto UDP (69 por defecto), no admite mecanismos de autenticación ni cifrado, dispone de tres modos de transferencia (netascii, octet y mail) y solo comandos básicos como cargar y descargar archivos.
Tanto los servicios FTP como TFTP se pueden equilibrar la carga fácilmente con RELIANOID Balanceador de carga. Sigue leyendo para saber cómo lograrlo.
Entorno de equilibrio de carga FTP #
El escenario que queremos lograr en este artículo se muestra en el siguiente diagrama.
O hay una alta concurrencia de usuarios y es necesario escalar el servicio o es un servicio crítico que debe tener alta disponibilidad, se necesitará un balanceador de carga del servicio FTP.
Configuración del modo FTP activo #
Una configuración FTP activa requiere el uso de los puertos 20 y 21 en los servidores o backends. La siguiente imagen muestra cómo fluye la conexión cuando se necesita transferir datos entre un cliente y un servidor FTP.
En la secuencia que se muestra arriba:
1. El cliente solicita al servidor a través del puerto. 21 un comando.
2. El servidor reconoce al cliente.
3. El el servidor inicia la conexión de datos usando el puerto de datos 20.
4. El cliente reconoce al servidor cuando ha terminado.
En este punto, tenemos que configurar un equilibrador de carga entre el cliente y el servidor y luego nos encargamos de los flujos de tráfico, los inicializadores de conexiones y los acuerdos de puertos entre el cliente y el servidor.
Con RELIANOID Load Balancer, tenemos que lograr este tipo de configuración creando un perfil de granja LSLB L4xNAT con puertos 20,21 y FTP protocolo, como se muestra en la imagen a continuación, y finalmente configure los backends (no es necesario configurar los puertos).
Los clientes deben conectarse a la dirección VIP de la nueva granja FTP.
Nota: Esta configuración es segura y puede utilizarse tanto en modo cliente/servidor activo como pasivo.
Configuración del modo FTP pasivo #
Una configuración FTP pasiva solo utiliza el puerto 21 en los servidores o backends. La siguiente imagen muestra cómo fluye la conexión cuando se requiere transferir datos entre un cliente y un servidor FTP.
En la secuencia que se muestra arriba:
1. El cliente solicita al servidor a través del puerto. 21 un comando.
2. El servidor reconoce al cliente.
3. El el cliente inicia la conexión de datos utiliza un puerto de datos elevado a un puerto acordado en la capa de aplicación en el lado del servidor.
4. El servidor reconoce al cliente cuando ha terminado.
En este punto, tenemos que configurar un equilibrador de carga entre el cliente y el servidor y luego nos encargamos de los flujos de tráfico, los inicializadores de conexiones y los acuerdos de puertos entre el cliente y el servidor.
Con RELIANOID Load Balancer, debemos lograr este tipo de configuración creando un perfil de granja LSLB L4xNAT con el puerto 21 y FTP protocolo, como se muestra en la imagen a continuación, y finalmente configure los backends (no es necesario configurar los puertos).
Los clientes deben conectarse a la dirección VIP de la nueva granja FTP.
Configuración TFTP #
Los protocolos FTP básicos se utilizan principalmente en entornos PXE (Preboot eXecution Environment), que se componen de una combinación de servicios DHCP y TFTP, donde se pueden desplegar decenas, cientos o incluso miles de ordenadores a través de la red.
El comportamiento principal del protocolo sería:
1. El cliente solicita al servidor a través del puerto. 69 un comando de solicitud de lectura (RRQ) o solicitud de escritura (WRQ), incluido el archivo y el modo de transferencia.
2. El servidor reconoce al cliente y notifica el nuevo puerto de datos que se utilizará.
3. El el cliente inicia la conexión de datos a un puerto acordado en la capa de aplicación en el lado del servidor.
4. El servidor reconoce al cliente cuando quedan los últimos 512 bytes.
En un entorno donde el servicio TFTP necesita escalar, la configuración con RELIANOID 5 es muy fácil. Es necesario crear un perfil de granja LSLB L4xNAT con el puerto 69 y TFTP protocolo, como se muestra en la imagen a continuación, y finalmente configure los backends (no es necesario configurar los puertos).
Los clientes deben conectarse a la dirección VIP de la nueva granja TFTP.
FTP seguro #
Para mejorar la seguridad del protocolo FTP, se diseñó el Protocolo de Transferencia de Archivos SSH , o SFTP , para proporcionar una capa de seguridad. En este caso, los servidores FTP deben configurarse como SFTP y el balanceo de carga se realiza fácilmente creando un LSLB con un perfil L4xNAT en el puerto 22 y el protocolo TCP predeterminados , como se muestra en la captura de pantalla a continuación. Finalmente, solo hay que añadir los backends del servicio SFTP.
Los clientes deben conectarse a la dirección VIP de la nueva granja TCP, que presta un servicio SFTP.
Controles de salud avanzados #
Comprobación de estado de FTP #
RELIANOID Los electrodomésticos ya incluyen el comprobar_ftp verificación de salud para servicios FTP, para que podamos probar la verificación de salud con un backend:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org FTP OK: tiempo de respuesta de 0.262 segundos en el puerto 21 de ftp.debian.org [servidor FTP 220 ftp.debian.org] |tiempo=0.262090s;;;0.000000;10.000000
Por otro lado, con el backend inactivo obtendremos el siguiente resultado:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org CRÍTICO: tiempo de espera del socket después de 10 segundos
Entonces el comando Farm Guardian para configurar en la granja FTP sería:
check_ftp -H HOST
En la pestaña Servicios, asegúrese de configurar Farm Guardian como se muestra a continuación. Un tiempo de espera de 60 segundos sería suficiente para garantizar el comportamiento correcto de un backend.
Comprobación de estado TFTP #
Si check_tftp la verificación avanzada no existe ya en el RELIANOID dispositivo, podemos crear un script de verificación de estado sencillo como se describe a continuación para nuestros servicios TFTP.
En primer lugar, cree un archivo ficticio en su directorio de backends TFTP, por ejemplo tftp_relianoid_check.txt , y agregue algún contenido, por ejemplo “OK”.
Entonces, en tu RELIANOID El dispositivo instala el cliente tftp ejecutando el siguiente comando:
apt-get instalar tftp
Y luego, cree un nuevo archivo de script en el RELIANOID directorio predeterminado de controles de salud, por ejemplo /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh con el siguiente código de script:
#!/bin/bash ### ### Verifique los servicios TFTP ### Copyright 2017-now RELIANOID SL ### ### $1 : Host a verificar CRÍTICO=1 OK=0 RESULTADO=$(echo get tftp_relianoid_check.txt | tftp $1 2>&1 | head -n 1) echo "El estado de verificación de estado de TFTP para $1 es $RESULT" if [ "`echo $RESULT | grep Received`" != "" ]; then exit $OK else exit $CRITICAL fi
Luego, asigna permisos de ejecución con el comando:
root@noid:/# chmod 755 /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh
Si intentamos ejecutar el script, recibiremos un mensaje exitoso cuando el backend esté activo y bien configurado:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250 El estado de verificación de estado de TFTP para 192.168.101.250 es tftp> Recibido 4 bytes en 0.0 segundos
o un error cuando el backend está inactivo:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250 El estado de verificación de estado de TFTP para 192.168.101.254 es tftp> Se agotó el tiempo de espera de transferencia.
Finalmente, configure la verificación de estado en la granja TFTP, incluyendo en el comando el token HOST.
check_mytftp.sh HOST
En la pestaña Servicios, asegúrese de configurar Farm Guardian como se muestra a continuación. Un tiempo de espera de 60 segundos sería suficiente para garantizar el comportamiento correcto de un backend.
Comprobación de estado SFTP #
Como ya está disponible la comprobación de estado check_ssh , podemos usarla directamente. Por lo tanto, el comando Farm Guardian para configurar en la granja SFTP sería el siguiente:
check_ssh ANFITRIÓN
Luego, la configuración se mostraría como se muestra en la siguiente captura de pantalla.
¡Disfrute de su transferencia de archivos escalable y de alta disponibilidad!









