Carregue servidores Drupal balanceados: uma boa maneira de compartilhar dados entre os servidores?

6

Estou tentando obter uma visão geral de como criar uma configuração de servidor da Web de carga balanceada. Configurar o balanceador de carga real e adicionar dois ou mais servidores da Web parece bastante adequado. No entanto, não consigo decidir qual seria a melhor configuração para arquivos.

Os servidores da web estarão executando um sistema CMS (neste caso, Drupal). Pode haver arquivos enviados por usuários relacionados ao conteúdo, e isso deve estar acessível a todos os servidores da web. Agora, eu estava pensando em simplesmente ter um servidor de arquivos designado e montar um diretório de arquivos em cada servidor da Web para que os vários servidores da Web pudessem acessar esses arquivos "compartilhados".

No entanto, esta solução seria um gargalo se falamos de 4 a 5 servidores? Eu acho que a montagem seria feita em SSH.

Tudo ajuda muito apreciado!

Atualização (15 de janeiro de 2013)

Eu decidi usar uma combinação de Csync2 e Lsyncd. Eu então configurei dois servidores que atuam como espelhos. O Lsyncd ouve as alterações em determinados diretórios (e seus subdiretórios) e chama o Csync2, que cuida da sincronização dos arquivos com o outro servidor. Se você estiver interessado em saber mais, dê uma olhada em este tutorial .

    
por sbrattla 06.10.2011 / 08:15

4 respostas

7

Antes de me mudar para o CDN, eu tinha um web farm de cerca de 20 servidores. Eu comecei com o NFS até acertar um bug no kernel do linux cerca de 3 anos atrás que causou um problema ao não montar o volume e ele não estava falhando corretamente.

Eu então criei um script rsync que sincronizaria o diretório a cada 5 minutos para cada servidor de imagem. Isso não era ideal, mas funcionou e eu não tive problemas com isso.

O próximo passo eu mudei para lsyncd que usa inotify para monitorar um diretório e quando um arquivo é alterado, ele gera um processo para sincronizar esse arquivo. Por padrão, é o rsync. Essa solução era sólida e, se não fosse pela economia de um CDN, eu teria continuado com isso.

Lsyncd: link

Espero que ajude.

    
por 06.10.2011 / 15:09
9

Cinco etapas de John e Cailin tutorial sobre dimensionamento de Drupal será muito útil para você. / p>

Os dois primeiros passos são os seguintes:

Etapa 1: Separe seu servidor web do seu servidor de banco de dados.

Etapa 2: Configurar servidores da Web redundantes e balanceamento de carga.

Linha de fundo: você não vai querer escalar horizontalmente (adicionando múltiplos servidores com funções idênticas) sem primeiro escalar verticalmente (separando funções que atualmente residem no mesmo servidor em camadas diferentes).

    
por 06.10.2011 / 08:23
4

Eu usei o glusterfs ( link ) para compartilhar arquivos entre servidores web de carga balanceada. Eu tentei também compartilhar os arquivos do banco de dados MySQL entre os servidores, bem como com o glusterfs, mas sem sucesso - eu recomendo separar a web do servidor de banco de dados como o primeiro pôster sugere.

Outras soluções para compartilhar arquivos entre servidores são o brilho ( link ) e, dependendo da configuração do balanceador de carga, Você também pode usar o lsyncd ( link ) para sincronizar arquivos entre os servidores.

    
por 06.10.2011 / 14:53
0

Você pode definir um compartilhamento NFS altamente disponível e montá-lo em todos os servidores http para servir seus arquivos.

Por favor, encontre um tutorial para um cluster MySQL altamente disponível: link

    
por 06.10.2011 / 10:05