Serviços de FTP / TFTP ativos e passivos, balanceamento de carga e alta disponibilidade

PUBLICADO EM 16 de agosto de 2017

Visão geral

FTP or File Transfer Protocol é um protocolo de camada de aplicativo amplamente utilizado para transferência de arquivos em um projeto de arquitetura cliente-servidor que depende de camadas de rede TCP / IP. O FTP é um protocolo complexo e simples (sem reconhecimento de segurança) cujas portas são negociadas na camada do aplicativo entre o cliente e o servidor, de modo que é um pouco difícil balancear a carga ou criar regras de firewall. Além disso, o servidor e o cliente FTP podem se comportar em modos ativos ou passivos, que podem ser descritos a seguir.

Alguns recursos que fornecem FTP são: 2 portas TCP (20, 21 por padrão) usado um para comandos de controle e outro para dados, suporte a mecanismo de autenticação, sem suporte a criptografia, ascii e binário, comandos amplos disponíveis (listagem de diretório, diretório de navegação, upload de arquivos, download de arquivos, etc.) e resiliência de TCP inerente.

TFTP or FTP Trivial é uma variação com transferência de arquivos mais rápida e design de arquitetura mais simples que usa apenas uma porta UDP (69 por padrão), sem suporte ou criptografia de mecanismo de autenticação, três modos de transferência disponíveis (netascii, octet e mail) e apenas comandos básicos como upload e download arquivos.

Os serviços FTP e TFTP podem ser balanceados facilmente com Balanceador de carga Zevenet. Continue lendo para saber como alcançá-lo.

Ambiente de balanceamento de carga de FTP

O cenário que queremos alcançar neste artigo é mostrado no diagrama abaixo.

Ou existe uma alta simultaneidade de usuários e é necessário escalar o serviço ou é um serviço crítico que precisa estar altamente disponível, um balanceador de carga de serviço FTP será necessário.

Configuração ativa do modo de FTP

An FTP ativo instalação exigirá usar as portas 20 e 21 nos servidores ou backends. A figura abaixo mostra como a conexão flui quando um dado é necessário para ser transferido entre um cliente e um servidor FTP.

active_ftp_client_server

Na sequência mostrada acima:
1. O cliente solicita ao servidor via porta 21 um comando.
2. O servidor reconhece para o cliente.
3. A servidor inicia a conexão de dados usando a porta de dados 20.
4. O cliente reconhece ao servidor quando termina.

Neste ponto, temos que configurar um balanceador de carga entre cliente e servidor e cuidar dos fluxos de tráfego, inicializadores de conexões e acordos de porta entre cliente e servidor.

Com o Zevenet Load Balancer, devemos alcançar esse tipo de configuração criando um perfil de farm LSLB L4xNAT com portas 20,21 e FTP protocolo, como é mostrado na imagem abaixo, e finalmente definir os back-ends (não é necessário definir as portas).

zevenet_adc_lb_active_ftp_configuration

Os clientes precisam se conectar ao endereço VIP do novo farm de FTP.

Nota: Essa configuração é salva para ser usada nos modos cliente / servidor ativo e passivo.

Configuração do modo FTP passivo

A FTP passivo instalação só usa a porta 21 nos servidores ou backends. A figura abaixo mostra como a conexão flui quando um dado é necessário para ser transferido entre um cliente e um servidor FTP.

passive_ftp_client_server

Na sequência mostrada acima:
1. O cliente solicita ao servidor via porta 21 um comando.
2. O servidor reconhece para o cliente.
3. A cliente inicia a conexão de dados usando uma porta de dados alta para uma porta acordada da camada de aplicativo no lado do servidor.
4. O servidor reconhece ao cliente quando termina.

Neste ponto, temos que configurar um balanceador de carga entre cliente e servidor e cuidar dos fluxos de tráfego, inicializadores de conexões e acordos de porta entre cliente e servidor.

Com o Zevenet Load Balancer, devemos alcançar este tipo de configuração criando um perfil de farm LSLB L4xNAT com a porta 21 e FTP protocolo, como é mostrado na imagem abaixo, e finalmente definir os back-ends (não é necessário definir as portas).

zevenet_adc_lb_passive_ftp_configuration

Os clientes precisam se conectar ao endereço VIP do novo farm de FTP.

Configuração TFTP

FTP Trivial protocolos são usados ​​principalmente durante PXE Ambientes (Preboot eXecution Environment) que são compostos por uma combinação de serviços DHCP e TFTP, onde dezenas, centenas ou até milhares de computadores podem ser implantados através da rede.

O principal comportamento do protocolo seria:
1. O cliente solicita ao servidor via porta 69 um comando Pedido de leitura (RRQ) ou Pedido de escrita (WRQ), incluindo o modo de arquivo e transferência.
2. O servidor confirma para o cliente e notifica a nova porta de dados a ser usada.
3. A cliente inicia a conexão de dados a uma porta acordada da camada de aplicação no lado do servidor.
4. O servidor reconhece ao cliente quando os últimos bytes 512 permanecem.

Em um ambiente onde o serviço TFTP precisa ser escalonado, a configuração com Zevenet 5 é muito fácil. É necessário criar um perfil de farm LSLB L4xNAT com a porta 69 e TFTP protocolo, como é mostrado na imagem abaixo, e finalmente definir os back-ends (não é necessário definir as portas).

zevenet_adc_lb_tftp_configuration

Os clientes precisam se conectar ao endereço VIP do novo farm TFTP.

FTP seguro

Para resolver a segurança aprimorada do protocolo FTP, o Protocolo de transferência de arquivos SSH ou melhor conhecido como SFTP foi projetado para fornecer uma camada de segurança. Nesse cenário, os servidores FTP devem ser configurados como SFTP e o balanceamento de carga desses seria tão fácil quanto criar um farm de perfil LSLB com L4xNAT sobre a porta padrão 22 e protocolo TCP como é mostrado na imagem abaixo. Por fim, basta adicionar seus back-ends de serviço SFTP.

zevenet_adc_lb_secure_ftp_sftp_configuration

Os clientes precisam se conectar ao endereço VIP do novo farm TCP, que atende a um serviço SFTP.

Verificações de integridade avançadas

Verificação de integridade de FTP

Os aparelhos Zevenet já incluem o check_ftp verificação de integridade para serviços de FTP, para que possamos testar a verificação de integridade com um back-end up:

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 

Por outro lado, com um back-end inativo, obteremos a seguinte saída:

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

Portanto, o comando Farm Guardian para configurar no farm FTP seria:

check_ftp -H HOST

Na guia Serviços, verifique a configuração do Farm Guardian, conforme mostrado abaixo. Um tempo limite de 60 segundos seria suficiente para garantir o comportamento correto de um back-end.

zevenet_active_passive_ftp_farm_guardian_advanced_health_check_config

Verificação de integridade TFTP

Se o check_tftp a verificação avançada ainda não existe no dispositivo Zevenet, podemos criar um script de verificação de saúde fácil conforme descrito abaixo para nossos serviços TFTP.

Em primeiro lugar, crie um arquivo fictício no diretório de backends do TFTP, por exemplo tftp_zevenet_check.txte adicione algum conteúdo, por exemplo “OK”.

Em seguida, no seu dispositivo Zevenet, instale o cliente tftp executando o seguinte comando:

apt-get install tftp

E, em seguida, crie um novo arquivo de script no diretório padrão de verificações de integridade do Zevenet, por exemplo /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh com o seguinte código de script:

#!/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

Em seguida, atribua permissões de execução com o comando:

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

Se tentarmos executar o script, obteremos uma mensagem de sucesso quando o back-end estiver ativo e bem configurado:

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

ou um erro quando o back-end está inoperante:

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.

Por fim, configure a verificação de integridade no farm TFTP, incluindo no comando o token HOST.

check_mytftp.sh HOST

Na guia Serviços, verifique a configuração do Farm Guardian, conforme mostrado abaixo. Um tempo limite de 60 segundos seria suficiente para garantir o comportamento correto de um back-end.

zevenet_tftp_farm_guardian_advanced_health_check_config

Verificação de saúde do SFTP

Como já está disponível o exame de saúde check_sshpodemos usá-lo diretamente. Portanto, o comando Farm Guardian para configurar no farm SFTP seria o seguinte:

check_ssh HOST

Então, a configuração seria mostrada como é mostrado na imagem a seguir.

zevenet_ssh_sftp_farm_guardian_advanced_health_check_config

Aproveite a sua alta transferência de arquivos disponível e escalável!

Compartilhar no:

Documentação sob os termos da Licença de Documentação Livre GNU.

Esse artigo foi útil?

Artigos Relacionados