4.7 KiB
4.7 KiB
BCards Infrastructure - Nova Arquitetura Simplificada
Mudanças Implementadas
❌ Removido: Docker Swarm
- Eliminado problemas com caracteres especiais em tokens
- Removida complexidade desnecessária do Swarm
- Não mais dependente de conectividade entre servidores
✅ Nova Arquitetura: Containers Independentes
Servidor 1 (129.153.123.92)
- Função: Load Balancer + App Container
- Componentes:
- NGINX (Load Balancer para ambos servidores)
- Container bcards-app-server1 na porta 8080
- SSL/TLS com Let's Encrypt
Servidor 2 (129.146.116.218)
- Função: App Container
- Componentes:
- Container bcards-app-server2 na porta 8080
- Funciona independentemente
Scripts Atualizados
1. setup-servers.sh
# O que mudou:
- ❌ Removido: setup_docker_swarm()
- ❌ Removido: Portas Swarm no firewall (2377, 7946, 4789)
- ✅ Adicionado: setup_nginx() - Instala NGINX
- ✅ Mudado: Redes Docker agora são locais (bridge)
2. deploy-to-servers.sh
# O que mudou:
- ❌ Removido: Docker Swarm stack deployment
- ❌ Removido: Swarm service management
- ✅ Adicionado: Docker Compose independente por servidor
- ✅ Mudado: Containers com portas expostas (8080)
- ✅ Melhorado: Health checks individuais por container
3. setup-nginx-loadbalancer.sh (NOVO)
# Novo script para:
- Configurar NGINX como load balancer
- Setup SSL com Let's Encrypt
- Configurar redirecionamento HTTP->HTTPS
- Testar conectividade com backends
Fluxo de Deploy
1. Setup Inicial
# Configurar servidores
./scripts/setup-servers.sh
# Configurar NGINX Load Balancer
./scripts/setup-nginx-loadbalancer.sh --ssl
2. Deploy da Aplicação
# Deploy normal
./scripts/deploy-to-servers.sh
# Deploy versão específica
./scripts/deploy-to-servers.sh v1.2.3
# Deploy sem rebuild
./scripts/deploy-to-servers.sh latest --skip-build
Benefícios da Nova Arquitetura
✅ Simplicidade
- Sem tokens complexos do Swarm
- Cada servidor funciona independentemente
- Fácil debug e troubleshooting
✅ Robustez
- Falha em um servidor não afeta o outro
- Rollback independente por servidor
- Load balancer detecta servidores down
✅ Facilidade de Manutenção
- Docker Compose familiar e simples
- Logs isolados por servidor
- Updates independentes
✅ Flexibilidade
- Fácil adicionar/remover servidores
- Configuração por servidor personalizada
- Escalabilidade horizontal simples
Configuração do Load Balancer
NGINX Upstream
upstream bcards_backend {
server 129.153.123.92:8080;
server 129.146.116.218:8080;
keepalive 32;
}
Health Checks
- NGINX detecta automaticamente servidores indisponíveis
- Failover automático entre servidores
- Health check endpoint:
/health
SSL/TLS
- Let's Encrypt automático
- Redirecionamento HTTP->HTTPS
- Headers de segurança configurados
Comandos Úteis
Verificar Status
# Status dos containers
ssh ubuntu@129.153.123.92 "sudo docker ps"
ssh ubuntu@129.146.116.218 "sudo docker ps"
# Status do NGINX
ssh ubuntu@129.153.123.92 "sudo systemctl status nginx"
# Logs da aplicação
ssh ubuntu@129.153.123.92 "sudo docker logs bcards-app-server1"
ssh ubuntu@129.146.116.218 "sudo docker logs bcards-app-server2"
Troubleshooting
# Teste de conectividade
curl -f http://bcards.site/health
curl -f https://bcards.site/health
# Logs do NGINX
ssh ubuntu@129.153.123.92 "sudo tail -f /var/log/nginx/bcards_access.log"
ssh ubuntu@129.153.123.92 "sudo tail -f /var/log/nginx/bcards_error.log"
# Restart individual
ssh ubuntu@129.153.123.92 "cd ~/bcards && sudo docker compose restart"
ssh ubuntu@129.146.116.218 "cd ~/bcards && sudo docker compose restart"
Migração da Arquitetura Anterior
Para migrar do Docker Swarm:
- Backup (se necessário):
# Backup de dados importantes
ssh ubuntu@129.153.123.92 "sudo docker cp container_name:/data ./backup/"
- Limpar Swarm:
ssh ubuntu@129.153.123.92 "sudo docker swarm leave --force"
ssh ubuntu@129.146.116.218 "sudo docker swarm leave --force"
- Deploy nova arquitetura:
./scripts/setup-servers.sh
./scripts/setup-nginx-loadbalancer.sh --ssl
./scripts/deploy-to-servers.sh
Monitoramento
Health Checks
- Endpoint:
https://bcards.site/health - Frequência: 30s por container
- Timeout: 10s
- Retries: 3
Logs
- NGINX:
/var/log/nginx/bcards_*.log - Containers: Docker logs com rotação automática
- Sistema:
/var/log/bcards/
✅ Arquitetura simplificada e robusta implementada com sucesso!