Eu tenho um site que oferece espaço FTP. É uma função secundária para o site principal, mas um recurso que está se mostrando popular. Eu uso o ProFTPd com o MySQL, que coloca os usuários em seus diretórios home e bloqueia-os, etc. Ele também fornece acesso ao FTP do usuário, por segurança.
O problema que tenho agora é o de escalar.
Estou ficando rapidamente sem espaço no meu servidor de 4 TB e preciso descarregar o tráfego de FTP em vários servidores. No entanto, pareço ter encontrado um obstáculo em todos os cenários.
Cenário 1: Acabei de executar vários servidores e atribuir espaço FTP de usuários individuais em cada servidor. As vantagens incluem o tráfego que não está no gargalo do servidor principal, no entanto, ele não permite que o usuário A (por exemplo) atualize para 500 GB de armazenamento, se houver apenas 100 GB na unidade. (Isso pode acontecer).
Cenário 2: Execute algo como GlusterFS e crie um pool de servidores como um sistema de arquivos distribuído e monte meu diretório de usuários no servidor principal como um cliente Gluster. Desvantagem como eu vejo é que se eu tiver 50 servidores FTP no futuro (talvez), então todos os 50 servidores estarão apontando tráfego para o meu servidor principal e o gargalo será tremendo.
Cenário 3: Use algo como S3FS e apenas monte um balde (ou vários). As vantagens são escaláveis infinitamente, mas as desvantagens incluem gargalos acima e faturas de largura de banda fenomenais da AWS.
Alguém poderia sugerir uma "melhor rota" para o cenário que eu descrevo. Esqueça os clientes existentes, estou feliz em mover dados e entradas de diretório no banco de dados, um de cada vez, se isso significa que posso obter um modelo funcional. Eu simplesmente não sabia que se tornaria popular, então não pensei muito sobre isso.
Então, o ideal é que eu tenha a capacidade de criar usuários de FTP, com cotas, em tempo real do PHP, como faço agora, criar um diretório home e bloquear usuários nele, mas ter a capacidade de adicione servidores extras (com redundância) conforme necessário, que serão dimensionados bem e não afunilados. E se SFTP sobre SSH fosse possível adicionar a tudo isso, seria um resultado celestial.
Eu posso fazer todas as coisas acima individualmente, mas não consigo encontrar uma solução que atenda às minhas necessidades para cobrir todas elas.
Sua ajuda e conselhos seriam muito apreciados.
Tags mysql ftp cluster scalability