Estou criando um aplicativo que precisa distribuir um servidor de arquivos padrão em alguns sites por uma WAN. Basicamente, cada site precisa gravar muitos arquivos variados de tamanho variado (alguns na faixa dos 100s MB, mas os mais pequenos), e o aplicativo é gravado de modo que as colisões não sejam um problema. Eu gostaria de ter um sistema configurado que atenda às seguintes qualificações:
- Cada site pode armazenar arquivos em um "espaço para nome" compartilhado. Ou seja, todos os arquivos apareceriam no mesmo sistema de arquivos.
- Cada site não enviaria dados pela WAN, a menos que necessário. Ou seja, haveria armazenamento local em cada lado da WAN que seria "mesclado" no mesmo sistema de arquivos lógico.
- Linux & Free ($$$) é um Plus
Basicamente, algo como um compartilhamento central do NFS atenderia à maioria dos requisitos, no entanto, não permitiria que os dados gravados localmente permanecessem locais. Todos os dados dos lados remotos da WAN seriam copiados localmente o tempo todo.
Eu examinei o Luster e executei alguns testes bem-sucedidos, no entanto, ele parece distribuir arquivos de maneira bastante uniforme no armazenamento distribuído. Examinei a documentação e não encontrei nada que "preferisse" o armazenamento local automaticamente ao armazenamento remoto. Mesmo algo que acompanha o armazenamento de menor latência seria bom. Funcionaria na maioria das vezes, atendendo aos requisitos desse aplicativo.
Algumas respostas para algumas perguntas abaixo:
- Nós do servidor: 2 ou 3 para iniciar. Cada servidor teria dezenas de clientes simultâneos de leitura / gravação se conectando.
- A topologia da WAN é de malha completa e confiável. (grande empresa, o custo não é tão limitador quanto a burocracia)
- Failover de cliente: na verdade, eu não tinha pensado em fazer o failover de clientes (principalmente porque nosso aplicativo atual não faz isso em apenas um site). Suponho que a resposta prática seja que se espera que os servidores em cada site distribuído geograficamente sejam pontos únicos de falhas para os clientes que estão atendendo. No entanto, se você estiver pensando em algo específico aqui, acho que seria bastante pertinente para a discussão.
- Roll-my-own: pensei em rsync / unison, no entanto, precisaria de um pouco de lógica sofisticada para tornar a parte "dinâmica" deste trabalho perfeitamente. Ou seja, o arquivo parece ser local, mas é recuperado somente sob demanda.
- MS-DFS: Certamente parece ser algo que eu deveria procurar. Meu principal problema seria não ter certeza sobre a configuração / confiabilidade / desempenho do servidor NFS no Windows, pois muitos dos clientes conectados são clientes NFS.