# 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** ```bash # 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** ```bash # 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) ```bash # 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** ```bash # Configurar servidores ./scripts/setup-servers.sh # Configurar NGINX Load Balancer ./scripts/setup-nginx-loadbalancer.sh --ssl ``` ### 2. **Deploy da Aplicação** ```bash # 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** ```nginx 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** ```bash # 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** ```bash # 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:** 1. **Backup** (se necessário): ```bash # Backup de dados importantes ssh ubuntu@129.153.123.92 "sudo docker cp container_name:/data ./backup/" ``` 2. **Limpar Swarm**: ```bash ssh ubuntu@129.153.123.92 "sudo docker swarm leave --force" ssh ubuntu@129.146.116.218 "sudo docker swarm leave --force" ``` 3. **Deploy nova arquitetura**: ```bash ./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!**