Projeto de Trabalho de Conclusão de Curso focado na implementação e análise de uma arquitetura de alta disponibilidade para PostgreSQL usando ferramentas open-source em um ambiente containerizado com Docker.
Cluster PostgreSQL de alta disponibilidade desenvolvido como TCC, implementando uma arquitetura resiliente a falhas com ferramentas open-source em ambiente containerizado.
- PostgreSQL (3 nós) + Patroni: Replicação streaming e failover automático
- etcd (3 nós): Coordenação distribuída e eleição de líder
- PgPool-II: Proxy com balanceamento de carga e roteamento inteligente
- Prometheus Exporters: Monitoramento de métricas
✅ Failover automático e recuperação rápida
✅ Balanceamento de carga para leituras
✅ Replicação streaming assíncrona
✅ Testes automatizados de resiliência (RTO/RPO)
✅ Testes de performance com pgbench
- Arquitetura ARM64 (projeto otimizado para ARM)
- Docker 20.10+ e Docker Compose v2.20+
- Python 3.10+ (para testes)
- Mínimo: 4 CPU cores, 8GB RAM, 20GB disco
Veja os detalhes completos em docs/QUICK-START.md
# Clone e configure
git clone https://github.com/richwrd/postgres-ha-cluster-lab
cd postgres-ha-cluster-lab
cp .env.example .env
# Crie diretórios e suba o cluster
./scripts/create_data_dirs.sh
docker compose up -d
# Verifique a saúde
./scripts/health_checks/check_cluster_status.sh📖 Guia completo: docs/QUICK-START.md
# Configurar ambiente
cd pytest
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Testes de resiliência
./scripts/test/run-crash-up.sh # RTO
pytest tests/resilience/test_rpo_primary_failure.py -v -s # RPO
# Testes de performance
sudo ./scripts/test/run-benchmark-baseline.sh # Baseline
sudo ./scripts/test/run-benchmark-cluster.sh # Cluster📖 Documentação completa: docs/TESTES.md
postgres-ha-cluster-lab/
├── docker-compose*.yaml # Configuração Docker modular
├── infra/ # Dockerfiles e configs (Patroni, PgPool)
├── pytest/ # Framework de testes
├── scripts/ # Utilitários e health checks
└── docs/ # Documentação técnica
- Quick Start: Instalação e configuração inicial
- Guia de Testes: Executando testes de resiliência e performance
- Casos de Uso: Exemplos práticos e cenários reais
- Configuração Docker Compose: Arquivos compose modulares (em breve)
- Configuração Patroni + DCS: etcd e Patroni (em breve)
- Autenticação PgPool: Configuração de autenticação (em breve)
- Arquitetura do Projeto: Estrutura e design (em breve)
- README Pytest: Visão geral do framework
- Arquitetura de Testes: Design e padrões
Exemplos práticos de uso do cluster:
- Failover Automático: Simule falhas e observe a recuperação
- Benchmark de Performance: Compare nó único vs. cluster
- Análise de Resiliência: Meça RTO e RPO
- Balanceamento de Carga: Distribua leituras entre réplicas
- Switchover Planejado: Troca de líder sem downtime
📖 Guia completo com exemplos: docs/CASOS-DE-USO.md
Exporters Prometheus disponíveis:
- PostgreSQL:
patroni-postgres-X:9187/metrics - Patroni API:
patroni-postgres-X:8008/metrics - etcd:
etcd-X:2379/metrics - PgPool:
pgpool:9719/metrics
Guia completo de configuração com Prometheus e Grafana em breve.
Contribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Documentação Oficial Patroni: patroni.readthedocs.io
- Documentação Oficial PgPool-II: pgpool.net
⭐ Se este projeto foi útil para você, considere dar uma estrela no repositório!
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ for the PostgreSQL community
