Precisa de sugestões para um sistema de arquivos distribuídos do R / W para um cluster de servidor da Web executando o Apache + PHP

6

Nos últimos meses, tenho tentado encontrar a melhor maneira de compartilhar o conteúdo de vários sites em vários servidores da Web (12+), todos executando o Apache + PHP. Um dos maiores desafios que enfrento é que precisamos ler e escrever no sistema de arquivos a todo o momento, para todos os tipos de boas e más razões (ou seja, o aplicativo não está sob nosso controle, wordpress site gerenciado via interface web, etc ...).

Aqui estão algumas das coisas que eu experimentei e o que aconteceu:

  • Rsync / duplicity / csync2: só é executado uma vez por minuto, o que significa que determinadas alterações não serão compartilhadas no cluster com a rapidez necessária para evitar grandes problemas.
  • inotify / incron: Muito complicado, considerando a enorme quantidade de arquivos e diretórios a serem monitorados. Além disso, não estava funcionando muito bem com novos arquivos.
  • GlusterFS: Tivemos um back-end com 4 servidores e o desempenho, embora definitivamente lento, era tolerável. Infelizmente, o cliente gluster em execução em cada servidor da web travou constantemente, o que congelou um dos 4 servidores de arquivos em qualquer lugar entre 2 e 15 minutos. Entramos em contato com a Gluster Inc. para conseguir que alguns de seus engenheiros nos ajudassem, mas eles não conseguiram descobrir o problema. Nós tivemos que desistir depois de 3 meses de uso.

Informações gerais sobre nossa configuração:

  • Hospedado no Amazon EC2
  • Executando o Ubuntu Maverick
  • Executando Nginx (2) - > Verniz (2) - > Apache (12 +)
  • .htaccess está desativado para melhor desempenho. Adicionamos as diretivas diretamente aos arquivos de configuração dos sites
  • A maioria dos sites / aplicativos que executamos não são nossos e, infelizmente, não é possível um ambiente somente de leitura
  • A alta disponibilidade com failover automático é muito importante para nós, considerando a tarefa que esses servidores da Web estão lidando

Então eu acho que isso cobre tudo :). Agradecemos antecipadamente pelo seu tempo e respostas.

    
por Pierre 14.03.2011 / 18:32

3 respostas

3

A opção "Least Worst" (TM) é o NFS. Eu sei que é difícil de engolir. Tentei evitá-lo com o rsync, tentei evitá-lo com o GFS, tentei evitá-lo com o incron / inotify. Eu tentei evitá-lo, empurrando os desenvolvedores a parar de usar o sistema de arquivos como um armazenamento de dados. No final, nós realmente não temos uma opção melhor do que o NFS. Não porque o NFS seja bom, como você disse, a parte do HA é difícil, mas porque realmente não há melhor opção.

    
por 14.03.2011 / 20:01
1

Ainda é tecnicamente 'beta', mas o Bittorrent Sync seria perfeito para você, eu acho. Eu não tenho esse ambiente (vários servidores web), então não tentei por mim mesmo, mas ouvi falar de outros fazendo exatamente isso e sendo muito feliz. Eu o uso para backups de servidores distribuídos, o que é um uso similar do ponto de vista técnico: link

link

    
por 20.08.2013 / 01:18
0

O que há de errado com o bom e velho NFS + DRBD (supondo que isso esteja no Linux)?

    
por 14.03.2011 / 18:59