Sobes.tech
Middle

Welke load balancers ken je? Wat is je ervaring ermee en welke technologieën heb je gebruikt?

sobes.tech AI

Antwoord van AI

De volgende typen load balancers zijn bekend:

  • Hardware Load Balancers: Gespecialiseerde apparaten. Voorbeeld: F5 BIG-IP.
  • Software Load Balancers: Werken als software. Voorbeelden: HAProxy, Nginx, AWS Elastic Load Balancing (ELB), Google Cloud Load Balancing, Azure Load Balancer.

Ervaring met HAProxy en Nginx als software load balancers, evenals met cloudoplossingen zoals AWS ELB (Application Load Balancer en Network Load Balancer).

HAProxy:

  • Gebruikt voor het balanceren van TCP- en HTTP-verkeer.
  • Instellingen werden gedaan via configuratiebestanden.
  • Gebruikt voor:
    • Verdelen van HTTP-verzoeken over webservers.
    • Zorgen voor hoge beschikbaarheid van databases (TCP-verkeer).
  • Implementaties:
    • Load balancing algoritmes (round-robin, leastconn).
    • Gezondheidstests van servers.
    • SSL-terminatie.
# Voorbeeld van HAProxy-configuratie
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 # of 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 # Load balancing algoritme
    server s1 192.168.1.10:80 check # Server 1 met health check
    server s2 192.168.1.11:80 check # Server 2 met health check

Nginx:

  • Gebruikt als reverse proxy en HTTP(S) verkeer load balancer.
  • Instellingen werden gedaan in nginx.conf of ingesloten bestanden.
  • Gebruikt voor:
    • Verdeling van belasting over webservers en microservices.
    • Caching, compressie, SSL-terminatie.
  • Implementaties:
    • Verschillende load balancing methodes (round-robin, least_conn, ip_hash).
    • Gezondheidstests in de commerciële versie (Nginx Plus) of met modules.
    • Virtuele hosts configuratie.
# Voorbeeld van Nginx-configuratie
http {
    upstream backend_servers {
        server 192.168.1.20:8080 weight=1; # Server 1 met gewicht
        server 192.168.1.21:8080 weight=1; # Server 2 met gewicht
        # least_conn; # Alternatieve load balancing methode
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend_servers; # Proxy naar servergroep
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            # Andere proxy-instellingen
        }
    }
}

AWS ELB:

  • Application Load Balancer (ALB): Gebruikt voor HTTP/HTTPS verkeer op L7.
    • Routing op basis van URL, headers en HTTP-methoden.
    • Integratie met Auto Scaling Groups.
    • SSL-terminatie, Web Application Firewall (WAF).
  • Network Load Balancer (NLB): Gebruikt voor TCP/UDP verkeer op L4.
    • Hoge prestaties en lage latency.
    • Gebruikt voor databases, game servers en andere latency-gevoelige applicaties.

Ervaring met het instellen van Listeners, Target Groups, health checks en integratie met andere AWS-diensten via AWS Management Console, AWS CLI en Terraform.

Technologieën:

  • Configuratie: Handmatig bewerken van bestanden, Ansible, Chef, Puppet.
  • Infrastructure-as-code: Terraform voor automatische deployment en beheer van load balancers in de cloud.
  • Monitoring: Prometheus, Grafana met exporters voor HAProxy/Nginx of via CloudWatch voor AWS ELB.
  • CI/CD: Integratie van configuratie en herconfiguratie van load balancers in CI/CD pipelines.

Over het algemeen hangt de keuze van load balancer af van de applicatie-eisen (verkeerstype, prestaties, functionaliteit), infrastructuur (cloud of on-premise) en budget.