Se usar essas ferramentas pode fazer um ótimo cluster de banco de dados moderno com recursos completos:
- pgbouncer (com HAProxy para HA)
- repmgr
- barman
O banco de dados principal será executado nos servidores repmgr. Tem primário e standby. Se o primário estiver inativo, o modo de espera pode subir. Mas vai demorar alguns segundos. Nesse momento, o usuário não consegue acessar o banco de dados por pendência? Não existe uma boa maneira de fazer uma resposta em tempo real?
Com todas as soluções de alta disponibilidade, você sempre terá algum tempo de inatividade durante um failover, normalmente menos de um minuto.
A razão é que o clusterware precisa determinar com segurança que um membro está inativo antes que possa fazer failover. Isso significa que o failover só é iniciado depois que várias tentativas de comunicação com o membro do cluster falharam.
Você pode reduzir o tempo de failover fazendo esses testes com menos frequência, mas isso aumenta o risco de um failover desnecessário (por exemplo, causado por uma falha de rede única). Failovers desnecessários reduzem o tempo de atividade total do seu banco de dados, então você não ganha nada dessa forma.
Tente PgpoolII ou PGpool com Regmgr 1. Opensource 2. Alta disponibilidade 3. Conexão de pool com porta de acesso db externa única
Para alcançar uma alta disponibilidade razoável, acho que você precisa ter pelo menos 3 servidores.
Aqui está o documento on-line pgpoolII de como criar um sistema de cluster robusto e evitar o ponto único de falha ou cérebro dividido
Fonte do diagrama