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

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:

  1. Backup (se necessário):
# Backup de dados importantes
ssh ubuntu@129.153.123.92 "sudo docker cp container_name:/data ./backup/"
  1. Limpar Swarm:
ssh ubuntu@129.153.123.92 "sudo docker swarm leave --force"
ssh ubuntu@129.146.116.218 "sudo docker swarm leave --force"
  1. 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!