Solução de espelhamento de servidor Unix

Solução de espelhamento de servidor Unix

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

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

Acho que apenas sincronizá-los novamente não seria uma maneira escalonável e fácil de manter.

Responder1

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

Fora isso, um sistema de arquivos em rede como o NFS pode funcionar, ou você implementa algo comoDRBDpara manter os arquivos sincronizados o tempo todo.

Responder2

Existem muitas outras soluções (afs, unionfs...), mas o rsync funciona surpreendentemente bem para replicação unidirecional e é auto-recuperável - e é escalonável conforme você definiu caminhos para replicação (um único mestre é adequado para até cerca de 5 escravos, mas além disso provavelmente há um bom motivo para ir para a replicação de vários níveis).

O único problema é com o tempo de replicação. Como você está usando DNS round-robin, você já tem afinidade de servidor - então você não terá o problema de um usuário atualizar o servidor A e não poder ver as atualizações porque está olhando para o servidor B. Mas atrasos na propagação de o código pode causar alguns problemas nas implantações (especialmente se você tiver uma dependência de código em alterações 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ê estiver executando o rsync manualmente/via cron, considere usar o inotify para executar o rsync nos arquivos à medida que eles mudam, de modo que o atraso se torna muito curto.

C.

Responder3

Quando o código é implantado na produção, ele deve ser implantado em todos os servidores de uma só vez. Se esta acção for devidamente controlada, deverá ser reflectida como parte dos seus controlos e uma solução tecnológica será desnecessária. Nem todas as soluções administrativas são baseadas em tecnologia.

OpenEFSé uma ferramenta projetada para permitir o controle de alterações, bem como implantações, o que pode ser útil. Implementei muito do que eles fazem sozinho, mas para quem não tem base, seria um bom começo.

Para servidores estáticos que não estão no escopo do controle de alterações, descobri que o rsync era uma solução apropriada no passado. Normalmente, para servidores que se enquadram nesta categoria, é improvável que o dimensionamento seja um problema, mas se for esse o casoNFSouAFSpode entrar em jogo.

informação relacionada