Solução de espelhamento do servidor Unix

2

Temos três servidores rodando o Ubuntu Server 10.04, balanceando a carga entre eles através do DNS. Usamos Django, nginx para servir conteúdo e PostgresQL como banco de dados.

Para o PostgresQL, existem algumas soluções de espelhamento, mas qual é a melhor maneira de espelhar nossos arquivos estáticos, usando o esquema "três mestres"?

Eu acho que apenas rsyncing eles não seria uma forma escalável e fácil de manter.

    
por smugglerFlynn 12.08.2010 / 13:13

3 respostas

3

Contanto que os arquivos não mudem com freqüência e devam ser mantidos sincronizados o tempo todo, por que não o rsync? Apenas certifique-se de ter um servidor mestre no qual você edita os arquivos, o que facilita a sincronização.

Além disso, um sistema de arquivos em rede como o NFS pode funcionar, ou você pode implementar algo como DRBD para manter os arquivos sincronizados vezes.

    
por 12.08.2010 / 13:24
2

Existem muitas outras soluções (afs, unionfs ...), mas o rsync funciona surpreendentemente bem para replicação unidirecional e é autocorretivo - e é escalável ao longo da medida em que você definiu caminhos para replicação (um único mestre está bem para até cerca de 5 escravos, mas além disso provavelmente há boas razões para ir para a replicação de várias camadas).

O único problema é com o tempo de replicação. Como você está usando o DNS round-robin, você já tem afinidade com o servidor - então você não terá o problema de um servidor de atualizações A não poder ver as atualizações porque ele está olhando para o servidor B. Mas atrasos na propagação de código pode causar algum problema nas implementações (especialmente se você tiver uma dependência de código nas alterações de DDL em um banco de dados comum).

Se você precisar de replicação bidirecional (tente evitar, se possível), então sim, um sistema de replicação em tempo real seria mais apropriado.

Se você está atualmente executando o rsync manualmente / via cron, você pode considerar o uso de inotify para executar o rsync em arquivos conforme eles mudam de forma que o atraso se torne muito curto.

C.

    
por 12.08.2010 / 13:44
0

Quando o código é implantado na produção, ele deve ser implantado em todos os servidores de uma só vez. Se essa ação for controlada adequadamente, ela deverá ser espelhada como parte de seus controles e uma solução de tecnologia será desnecessária. Nem todas as soluções administrativas são baseadas em tecnologia.

O OpenEFS é uma ferramenta projetada para permitir o controle de alterações, bem como implantações, que podem ser úteis. Eu implementei muito do que eles fazem sozinho, mas para alguém que não tem base, seria um bom começo.

Para servidores estáticos que não estão no escopo de controle de alterações, descobri que o rsync é uma solução apropriada no passado. Normalmente, para os servidores que se enquadram nessa categoria, é improvável que o escalonamento seja um problema, mas se é onde NFS ou AFS pode entrar em jogo.

    
por 12.08.2010 / 16:00

Tags