Loading Now

🧠 Cluster Postgres com Patroni, Keepalived e HAProxy — Quando e Por Que Usar Cada Um?

CURSOPATRONIPORTUGUES 🧠 Cluster Postgres com Patroni, Keepalived e HAProxy — Quando e Por Que Usar Cada Um?

Uma dúvida clássica que surge com frequência ao projetar um cluster PostgreSQL com high availability é:

“Se o Keepalived já oferece failover de IP via VRRP e posso checar o status do Patroni via REST API, por que eu ainda precisaria de HAProxy?”

Essa pergunta foi feita por um aluno do curso, que está montando um cluster PostgreSQL baseado em Patroni com 3 nós e quer entender se faz sentido adicionar HAProxy, ou se um Keepalived com checagens via API + TCP já seria suficiente para HA num ambiente pequeno.


📌 Pergunta do Aluno

“Eu entendo que o Keepalived faz failover no nível de IP (via VRRP) e que o check do Patroni é usado no script de saúde. Se tudo o que eu preciso é garantir failover para o leader do Patroni para conectividade de read/write, por que eu não posso simplesmente usar um VIP com Keepalived direcionado para a porta padrão do PostgreSQL sem HAProxy?”


🧩 Resposta — Explicada em Detalhes

De fato, com um cluster simples (3 nós, Patroni gerenciando failover, checks REST + TCP implementados no Keepalived) você pode construir um ambiente altamente disponível que funcione bem — especialmente para workloads menores ou aplicações não críticas como Zabbix. Isso funciona porque:

  • O Keepalived pode mover um VIP para o nó atual do líder com base em checagens REST/TCP customizadas;
  • O cliente conecta-se sempre ao mesmo IP/porta;
  • E em muitos casos isso já é suficiente para garantir disponibilidade básica.

Esse modelo é funcional e mais simples do que arquiteturas tradicionais com load balancers dedicados.


⚠️ Por Que A Arquitetura de Produção Usa HAProxy?

No entanto, quando estamos falando de ambientes de produção ou aplicações realmente críticas, recomendamos incluir HAProxy (geralmente em front-ends dedicados, com Keepalived fornecendo um VIP para ele) — por vários motivos:

✅ 1. Separação de Responsabilidades

Keepalived só lida com IP failover, ou seja: ✔ Movimenta o VIP conforme prioridades de saúde ❌ Não entende a lógica de PostgreSQL (leader/replica) ❌ Não faz roteamento baseado no estado real do banco

HAProxy, por outro lado, fala com a API do Patroni e sabe qual nó é primário. Dessa forma, apenas o leader recebe tráfego de escrita, e não há chance de direcionar clientes erroneamente para um nó que já foi promovido para standby.


✅ 2. Failover Mais Limpo e Seguro

HAProxy:

  • Pode detectar alterações imediatas de líderes
  • Evita o envio de tráfego para um nó que está em transição
  • Reduz janelas de erro (“read-only transaction”) durante failover — algo que scripts simples de Keepalived não conseguem gerenciar tão bem

✅ 3. Escalabilidade e Futuro

Ao adicionar HAProxy você abre portas para:

  • Read/Write split
  • Pooling eficiente
  • Capacidade de distribuir conexões em múltiplos back-ends
  • Fácil adição de PgBouncer ou outras camadas mais avançadas

Sem HAProxy, seu VIP aponta diretamente para PostgreSQL — e não há nenhuma camada intermediária de lógica de roteamento.


⚠️ 4. Proteção Contra Falha do Proxy

Se você usar apenas um Keepalived apontando diretamente para PostgreSQL, um problema no próprio proxy (ou no serviço que implementa a lógica de checagem) pode deixar todo o cluster inacessível.

Arquiteturas profissionais normalmente usam:

[ Aplicação ]
     ↓
VIP (Keepalived)
     ↓
HAProxy (2 instâncias)
     ↓
Patroni/PostgreSQL Cluster

Assim o Keepalived garante HA do HAProxy, e o HAProxy garante roteamento correto dentro do cluster.


🤝 Resumo — Quando Usar o Quê:

SituaçãoKeepalived sóKeepalived + HAProxyPequenos clusters, baixo tráfego✔✔ (opcional)Aplicações não críticas✔✔Produção com SLAs altos⚠✔ recomendadoNecessidade de escalabilidade ou read/write split❌✔


📌 Conclusão

Sim — para um cluster simples de 3 nós com Patroni e verificações personalizadas, um Keepalived bem configurado pode atender às necessidades básicas de alta disponibilidade.

Mas quando falamos de ambientes de produção, com expectativas de tolerância a falhas, failovers suaves, menor impacto em clientes e capacidade de escalar ou evoluir a arquitetura, utilizar HAProxy em conjunto com Keepalived ainda é o padrão recomendado pela maioria das referências de alta disponibilidade PostgreSQL.

Quer Aprender POSTGRES e a configurar o Cluster com o Patroni com super desconto?

https://www.udemy.com/course/postgrescompleto/?couponCode=C7F64792DCDCB1198550

https://www.udemy.com/course/clusterpostgres/?couponCode=FE2B9876CC7D99009125

🚀 Ready to boost your career in data?

👉 DBAcademy – DBA & Data Analyst Training
Over 1,300 lessons and 412 hours of exclusive content.
Includes subtitles in English, Spanish, and French.

🔗 https://filiado.wixsite.com/dbacademy

💡 Start learning today and become a highly in-demand data professional.

Share this content:

Sandro Servino is a senior IT professional with over 30 years of experience in technology, having worked as a Developer, Project Manager (acting as a Requirements Analyst and Scrum Master), Professor, IT Infrastructure Team Coordinator, IT Manager, and Database Administrator. He has been working with Database technologies since 1996 and has been vendor-certified since the early years of his career. Throughout his professional journey, he has combined deep technical expertise with leadership, education, and consulting experience in mission-critical environments. Sandro has trained more than 20,000 students in database technologies, helping professionals build strong foundations and advance their careers in data platforms and database administration. He has delivered corporate training programs for multiple companies and served as a university professor teaching Database and Data Administration for over five years. For many years, he worked as an independent consultant specializing in SQL Server, providing strategic and technical support for complex database environments. He has extensive experience in troubleshooting and resolving critical issues in SQL Server production environments, including performance tuning, high availability, disaster recovery, security, and infrastructure optimization. His academic background includes: Postgraduate Degree in School Education MBA in IT Governance Master’s Degree in Knowledge Management and Information Technology Currently, Sandro works as a Database Administrator for multinational companies in Europe, managing enterprise-level SQL Server environments and supporting large-scale, high-demand infrastructures. Areas of Expertise SQL Server (Administration, Performance, HA/DR, Troubleshooting) Azure SQL Databases MySQL Oracle PostgreSQL Power BI Data Analytics Data Warehouse Windows Server Oracle Linux Server Ubuntu Linux Server DBA Training and Mentorship Business Continuity and Disaster Recovery Strategies Courses and Training Programs Sandro delivers professional training programs focused on the formation of DBAs and Data/BI Analysts, covering: SQL Server and Azure SQL Databases MySQL Oracle PostgreSQL Power BI Data Analytics Data Warehouse Windows Server Oracle Linux Server Ubuntu Linux Server With a unique combination of technical depth, academic knowledge, real-world consulting experience, and international exposure, Sandro Servino brings practical, results-driven expertise to database professionals and organizations seeking reliability, performance, and resilience in their data platforms.

Post Comment