Cluster de failover do PostgreSQL no Windows Server

4

Estamos procurando conselhos sobre como configurar um cluster de failover básico para nosso aplicativo:

  • Usaremos 4 máquinas executando o Microsoft Windows Server (provavelmente 2003).
  • Todos os quatro sempre executarão nosso aplicativo, que é essencialmente um serviço da web.
  • O balanceamento de carga é "terceirizado" - outra pessoa lida com a distribuição das solicitações da web entre os servidores.
  • Apenas um dos servidores executará o servidor PostgreSQL ativamente a qualquer momento. Outro servidor (dos quatro) também possui o banco de dados instalado, mas está em standby / passivo.
  • Os dados do banco de dados são armazenados em armazenamento compartilhado . Não copie dados entre servidores.
    • As leituras são feitas com muita frequência por muitos usuários finais e em pequenos blocos de dados.
    • As gravações são feitas com muito menos frequência, por menos usuários e em grandes volumes de dados.

Agora, como podemos configurar o Microsoft Cluster Service para manter apenas uma instância do servidor de banco de dados e 4 instâncias (1 por servidor) do nosso aplicativo em todos os momentos? E o PostgreSQL integra-se perfeitamente ao MSCS?

Atualizar : Em vez de manter os dados no armazenamento compartilhado, também considero o uso do envio de log para replicar dados em alguns servidores de banco de dados. Existem dois problemas com esta opção:

  • O envio de logs só garante que eu tenha um segundo servidor que receba todos os dados e esteja pronto para assumir o controle. Como faço para implementar a detecção de falha real e a alternância de failover?
  • Voltando: Suponha que o mestre falhe e o sistema automaticamente efetue o failover para o escravo, e depois o mestre volta a ficar online. Eu entendo que com o envio do WAL isso exigirá reconfigurar o envio do log mais uma vez, e que voltar está longe de ser perfeito. É assim?
por Yodan Tauber 07.03.2010 / 17:49

1 resposta

1

O PostgreSQL funciona bem com o MSCS, usando o modo de serviço genérico. É recomendado que você instale os binários do PostgreSQL na unidade compartilhada, bem como, e aponte o serviço para lá - dessa forma, você tem certeza de que não obterá uma incompatibilidade de versões.

Lars tem um bom ponto em que não é recomendado executar o db e o appserver nas mesmas máquinas. Você pode querer considerar o uso de 2 máquinas para o banco de dados e 2 para o servidor de aplicativos - ou pelo menos fazer o MSCS derrubar o servidor de aplicativos no nó em que o PostgreSQL é executado (não tenho certeza se ele pode fazer isso, mas imagino deveria)

    
por 07.03.2010 / 20:51