Executando vários aplicativos de uma árvore de arquivos espelhados no Ubuntu

1

Eu tenho uma carga de servidores apache, todos servindo uma variedade de aplicativos Rails. A base de código em todos os servidores é a mesma, mas os aplicativos permitem uploads de usuários.

A pergunta é: como eu melhor gerencio o sistema de arquivos aqui? Gostaria de ter apenas que implantar código em um local e também gostaria que os uploads dos usuários estivessem disponíveis para qualquer nó no cluster.

Essencialmente, acho que estou procurando um único sistema de arquivos em que todos os servidores funcionem. Isso é mesmo performant? Está espelhando uma aposta melhor ou algum tipo de sistema de arquivos de rede compartilhado?

O que você faria?

Os servidores são todos do Ubuntu Linux.

    
por Neil Middleton 24.06.2009 / 12:27

2 respostas

1

Você pode ver um sistema de arquivos em cluster, por exemplo, GFS ou OCFS. Outro NFS sábio, talvez - embora eu suspeite que você possa ter problemas com handles de arquivos obsoletos, já que estávamos tentando usar o NFS para algo similar para nós. Depende de como seu aplicativo funciona.

Tivemos três servidores da Web e uma caixa de teste. A caixa do stagin enviou arquivos para o conteúdo do site que estava no NFS.

O meu entendimento do problema (que é incompleto porque não estava envolvido na investigação ou na correção) era que os servidores da Web teriam um arquivo aberto, digamos, index.html e o servidor de teste iria enviar uma nova cópia do índice .html A nova versão sobrescreveria a versão antiga, mas quando os servidores da Web foram para lê-la, obtiveram erros de manipulação de arquivos obsoletos, porque eles ainda tinham referências à versão antiga do arquivo, que foi substituída e substituída por um novo arquivo. Então, eles estavam tentando fazer referência a um arquivo para o qual tinham um arquivo, mas isso não existia.

    
por 24.06.2009 / 16:43
1

Se o desempenho dos envios de usuários for crítico, use o espelhamento. Caso contrário, use nfs. Eu estou supondo que você tenha algum tipo de cache implementado no Rails se você tiver uma carga de servidores com muitos aplicativos.

Anders

    
por 24.06.2009 / 13:05