Saltearse al contenido

Balanceo de Carga L7 y Edge Proxy

🖧 Infrastructure Context
Network Topology Diagram

Access via SSH from the default terminal. The cluster topology is defined below:

📄 /etc/hosts (Cluster Inventory)

# Management & Controller
10.0.0.15   terminal       # Main Entry Point

# Web & Application Tier
10.0.0.60   web-srv1   # Nginx / Apache
10.0.0.70   app-srv1    # Backend App

# Data Persistence Tier
10.0.0.80   data-001    # Primary DB
10.0.0.90   data-002    # Replica / Backup

# Virtualization & Containers
10.0.0.100  kvm-001        # Libvirt Hypervisor
10.0.0.110  docker-001     # Container Runtime
⚠️
Constraint: Nested SSH is forbidden. Connect directly from terminal to target IPs.

Contexto de Negocio: Las aplicaciones internas legacy alojadas en web-server01 están expuestas actualmente en puertos no estándar (1111, 2222), complicando las reglas de firewall y el acceso del cliente. Se requiere una solución de Proxy Reverso para estandarizar el acceso vía HTTP.

Objetivos Técnicos:

  1. Nodo Objetivo: web-server01 (10.0.0.60).
  2. Redirección de Tráfico (Puerto 8001):
    • El tráfico entrante debe ser reenviado a la ruta backend específica: http://127.0.0.1:2222/special.
  3. Balanceo de Carga (Puerto 8000):
    • Distribuir tráfico entre App A (:1111) y App B (:2222).
    • Algoritmo: Round Robin (Por defecto) o Random.

  1. Acceso al Nodo Objetivo

    Establezca una conexión segura al servidor web desde el host bastión.

    Ventana de terminal
    ssh web-server01
  2. Verificar Salud del Backend

    Asegúrese de que las aplicaciones upstream están operativas antes de configurar el proxy.

    Ventana de terminal
    curl -I http://127.0.0.1:1111
    curl -I http://127.0.0.1:2222
  3. Definir Configuración del Proxy

    Cree un archivo de configuración modular en /etc/nginx/conf.d/. Evite editar nginx.conf directamente.

    Ventana de terminal
    sudo vim /etc/nginx/conf.d/loadbalancer.conf

    Implemente el siguiente bloque para definir el grupo upstream y los contextos server:

    /etc/nginx/conf.d/loadbalancer.conf
    # 1. Definir Grupo Upstream (Balanceador)
    upstream backend_apps {
    server 127.0.0.1:1111;
    server 127.0.0.1:2222;
    }
    # 2. Tarea: Balanceador de Carga (Puerto 8000)
    server {
    listen 8000;
    server_name localhost;
    location / {
    proxy_pass http://backend_apps;
    }
    }
    # 3. Tarea: Redirección/Proxy (Puerto 8001)
    server {
    listen 8001;
    server_name localhost;
    location / {
    proxy_pass http://127.0.0.1:2222/special;
    }
    }
  4. Validar y Recargar

    Realice una comprobación de sintaxis para prevenir caídas del servicio, luego recargue la señal del proceso.

    Ventana de terminal
    sudo nginx -t
    sudo systemctl reload nginx
  5. Verificación Funcional

    Probar Balanceador (8000): Ejecute múltiples peticiones. Las respuestas deben alternar entre backends.

    Ventana de terminal
    for i in {1..4}; do curl http://localhost:8000; echo; done

    Probar Redirección (8001):

    Ventana de terminal
    curl -v http://localhost:8001
  • Connection Refused: Asegúrese de que Nginx está escuchando en los nuevos puertos:
    Ventana de terminal
    ss -tulpn | grep nginx
  • 502 Bad Gateway: Indica que Nginx no puede alcanzar los puertos upstream (1111/2222). Verifique si las apps backend han caído.