190 lines
4.7 KiB
Markdown
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!** |