Sincronizando arquivos entre dois servidores com balanceamento de carga?

2

No PHP, estamos criando vários arquivos em nossos servidores. O problema é que temos dois servidores, com balanceamento de carga. Qual seria a melhor maneira de manter os arquivos criados em sincronia entre os dois? Existe alguma prática comum que eu nunca ouvi falar?

    
por loneboat 04.05.2011 / 23:58

4 respostas

2

# 1: você pode deixar o SO fazer o trabalho. Supondo que você esteja usando o ambiente Microsoft Windows, um DFS seria a solução mais simples (em termos de trabalho administrativo). Você precisa configurar um controlador de domínio, que precisa de uma versão R2 do Windows Server (seja 2003 ou 2008).

# 2: não crie arquivos no HDD dos próprios servidores com balanceamento de carga. Você deve separar a manipulação de arquivos do servidor da Web e usar um armazenamento externo.

    
por 05.05.2011 / 00:07
1

Armazenamento compartilhado é o caminho a percorrer. Usamos o NAS para disponibilizar os arquivos para todos os servidores.

    
por 05.05.2011 / 03:17
0

Bem, uma sincronização unidirecional seria fácil com o rsync. E quanto a bidirecional? Eu fiz um rápido google e parece que é possível.

link

Na parte inferior desse link, você recebe um método.

    
por 05.05.2011 / 00:26
0

Seu balanceador de carga deve permitir que você o configure para que todas as solicitações de um determinado cliente sempre sejam direcionadas para o mesmo servidor com balanceamento de carga. Com isso ativado, sempre que um arquivo é criado para um cliente, ele está presente nas solicitações subsequentes do mesmo cliente. Não funciona tão bem, se, e. O cliente A está acionando a criação de um arquivo para o cliente B.

Você pode querer considerar um servidor de banco de dados. Por exemplo, se os arquivos criados armazenarem informações da sessão, armazene esses dados em um banco de dados, para os quais os servidores da Web apontam (você pode adicionar replicação aqui para manter a carga distribuída se quiser / precisar). Se não forem dados da sessão, considere armazenar os dados necessários para gerar os arquivos nesse banco de dados e gerar apenas o arquivo real sob demanda quando solicitado, puxando esses dados do banco de dados; pode não ser aplicável em sua situação, no entanto.

Por fim, você pode considerar o armazenamento compartilhado e / ou replicado. O DFS em um ambiente Windows é uma boa solução de replicação; NFS ou SMB podem ser aplicáveis ou uma SAN; basicamente tudo que @karatedog mencionou.

Mais uma opção a considerar é uma solução de banco de dados centrada em arquivos, como o MongoDB, que basicamente assume a forma de um banco de dados que serve como um repositório de arquivos centralizado. Coloque seus arquivos lá e o servidor poderá retirá-los novamente mais tarde.

    
por 05.05.2011 / 00:29