Sobes.tech
Middle

¿Qué balanceadores de carga conoces? ¿Qué experiencia tienes trabajando con ellos y qué tecnologías has utilizado?

sobes.tech AI

Respuesta de la IA

Se conocen los siguientes tipos de balanceadores de carga:

  • Hardware Load Balancers: Dispositivos especializados. Ejemplo: F5 BIG-IP.
  • Software Load Balancers: Funcionan como software. Ejemplos: HAProxy, Nginx, AWS Elastic Load Balancing (ELB), Google Cloud Load Balancing, Azure Load Balancer.

Tengo experiencia trabajando con HAProxy y Nginx como balanceadores de carga de software, así como con soluciones en la nube como AWS ELB (Application Load Balancer y Network Load Balancer).

HAProxy:

  • Se utilizó para balancear tráfico TCP y HTTP.
  • La configuración se realizaba a través de archivos de configuración.
  • Se aplicó para:
    • Distribuir solicitudes HTTP entre servidores web.
    • Garantizar alta disponibilidad de bases de datos (tráfico TCP).
  • Se implementaron:
    • Algoritmos de balanceo (round-robin, leastconn).
    • Chequeos de salud de los servidores.
    • Terminación SSL.
# Ejemplo de configuración de HAProxy
global
    log /dev/log    local0
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    mode    http # o tcp
    option  httplog
    option  dontlognull
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_front
    bind *:80
    default_backend http_back

backend http_back
    balance roundrobin # Algoritmo de balanceo
    server s1 192.168.1.10:80 check # Servidor 1 con chequeo de salud
    server s2 192.168.1.11:80 check # Servidor 2 con chequeo de salud

Nginx:

  • Se utilizó como proxy inverso y balanceador de tráfico HTTP(S).
  • La configuración se realizaba en archivos nginx.conf o archivos incluidos.
  • Se aplicó para:
    • Distribuir carga en servidores web y microservicios.
    • Caché, compresión, terminación SSL.
  • Se implementaron:
    • Diversos métodos de balanceo (round-robin, least_conn, ip_hash).
    • Chequeos de salud en la versión comercial (Nginx Plus) o con módulos.
    • Configuración de hosts virtuales.
# Ejemplo de configuración de Nginx
http {
    upstream backend_servers {
        server 192.168.1.20:8080 weight=1; # Servidor 1 con peso
        server 192.168.1.21:8080 weight=1; # Servidor 2 con peso
        # least_conn; # Otro método de balanceo
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend_servers; # Proxy a grupo de servidores
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            # Otras configuraciones de proxy
        }
    }
}

AWS ELB:

  • Application Load Balancer (ALB): Se utilizó para balancear tráfico HTTP/HTTPS. En nivel L7.
    • Enrutamiento basado en URL, encabezados y métodos HTTP.
    • Integración con Auto Scaling Groups.
    • Terminación SSL, Web Application Firewall (WAF).
  • Network Load Balancer (NLB): Se utilizó para balancear tráfico TCP/UDP en nivel L4.
    • Alta rendimiento y baja latencia.
    • Se usa para balancear tráfico hacia bases de datos, servidores de juegos y otras aplicaciones sensibles a la latencia.

La experiencia incluyó configuración de Listeners, Target Groups, chequeos de salud e integración con otros servicios AWS mediante AWS Management Console, AWS CLI y Terraform.

Tecnologías:

  • Configuración: Edición manual de archivos, Ansible, Chef, Puppet.
  • Infraestructura como código: Terraform para despliegue y gestión automática de balanceadores en la nube.
  • Monitoreo: Prometheus, Grafana con exporters para HAProxy/Nginx o a través de CloudWatch para AWS ELB.
  • CIDI: Integración de configuración y reajuste de balanceadores en pipelines CI/CD.

En general, la elección del balanceador dependía de los requisitos de la aplicación (tipo de tráfico, rendimiento, funcionalidad), infraestructura (nube o on-premise) y presupuesto.