BCards-Scripts-Server/README-NEW-ARCHITECTURE.md
2025-07-22 21:24:07 -03:00

190 lines
4.7 KiB
Markdown

# 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!**