Replicação Multimaster Síncrona postgresql pgpool 2

2

Gostaríamos de construir um sistema com dois servidores Postgresql 8.4, com o pgpool 2 na frente que fará com que todas as gravações sejam enviadas para ambos os sistemas. No caso de falha em um dos nós, ele será degradado e o pgpool direcionará todas as gravações no nó restante.

De lá, podemos sincronizar novamente tudo novamente e trazer tudo de volta.

Atualmente, estou fazendo alguns testes para esse efeito e percebendo algumas coisas interessantes.

Meu script tem um loop simples que insere linhas no banco de dados. Quando eu desligo a interface de rede em um servidor, o script pausa, o pgpool aguarda uma resposta do servidor inativo, mas não o degrada, até que alguém tente se conectar. Depois que outra pessoa criar uma nova conexão, ela retornará um erro e degradará o servidor. Então, se eu executar o script novamente, ele direcionará as gravações para o único servidor restante.

Isso parece ser um pouco de muita atividade necessária para degradar um servidor. Estou esquecendo de algo? isso é normal?

Felicidades

Marcar

    
por Mark 13.07.2011 / 08:10

1 resposta

2

Eu acredito que o comportamento que você está descrevendo é normal para o pgpool - Ele degrada um servidor quando ele não consegue se conectar a ele, mas se uma conexão já estiver "estabelecida" ela não morre tão rápido quanto você poderia esperar é provável que lide com falhas transitórias de rede e evite degradar o ambiente para um "soluço").

Por curiosidade, você considerou a replicação do log de streaming disponível no Postgres 9? A implementação mais recente é quase em tempo real e permite que você execute consultas nos servidores escravos. Acredito que a replicação síncrona está chegando em breve (ou já pode ter sido implementada).
Você precisaria de um script ou processo manual para lidar com uma falha (reiniciar um dos servidores "escravos" como mestre e transferir um IP virtual), mas a implementação não é substancialmente diferente do que você obteria do pgpool (re -sync quando um servidor falha, etc.)

A grande vantagem aqui é que você está usando o que está embutido no núcleo do servidor Postgres, e tem alguns testes e documentações bastante extensos no processo beta 9.0. É minha recomendação de fato se você não tiver restrições que tornem impraticável.

    
por 13.07.2011 / 18:39