Sobes.tech
Middle

Ktoré load balancery poznáte? Aké máte s nimi skúsenosti a aké technológie ste použili?

sobes.tech AI

Odpoveď od AI

Nasledujúce typy vyvažovačov záťaže sú známe:

  • Hardvérové (Hardware Load Balancers): Špecializované zariadenia. Príklad: F5 BIG-IP.
  • Softvérové (Software Load Balancers): Fungujú ako softvér. Príklady: HAProxy, Nginx, AWS Elastic Load Balancing (ELB), Google Cloud Load Balancing, Azure Load Balancer.

Máte skúsenosti s HAProxy a Nginx ako softvérovými vyvažovačmi záťaže, ako aj s cloudovými riešeniami AWS ELB (Application Load Balancer a Network Load Balancer).

HAProxy:

  • Používal sa na vyvažovanie TCP a HTTP prevádzky.
  • Nastavenia sa vykonávali cez konfiguračné súbory.
  • Používal sa na:
    • Rozdeľovanie HTTP požiadaviek medzi webové servery.
    • Zabezpečenie vysokej dostupnosti databáz (TCP prevádzka).
  • Implementované:
    • Algoritmy vyvažovania (round-robin, leastconn).
    • Kontroly dostupnosti (health checks) serverov.
    • SSL terminácia.
# Príklad konfigurácie 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 # alebo 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 # Algoritmus vyvažovania
    server s1 192.168.1.10:80 check # Server 1 s kontrolou dostupnosti
    server s2 192.168.1.11:80 check # Server 2 s kontrolou dostupnosti

Nginx:

  • Používal sa ako reverzný proxy a vyvažovač HTTP(S) prevádzky.
  • Nastavenia sa vykonávali v súboroch nginx.conf alebo v zahrnutých súboroch.
  • Používal sa na:
    • Rozdeľovanie záťaže na webové servery a mikroslužby.
    • Cacheovanie, kompresiu, SSL termináciu.
  • Implementované:
    • Rôzne metódy vyvažovania (round-robin, least_conn, ip_hash).
    • Kontroly dostupnosti v komerčnej verzii (Nginx Plus) alebo s modulmi.
    • Konfigurácia virtuálnych hostiteľov.
# Príklad konfigurácie Nginx
http {
    upstream backend_servers {
        server 192.168.1.20:8080 weight=1; # Server 1 s váhou
        server 192.168.1.21:8080 weight=1; # Server 2 s váhou
        # least_conn; # Iná metóda vyvažovania
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend_servers; # Proxy na skupinu serverov
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            # Ďalšie nastavenia proxy
        }
    }
}

AWS ELB:

  • Application Load Balancer (ALB): Používal sa na vyvažovanie HTTP/HTTPS prevádzky. Na úrovni L7.
    • Routing požiadaviek na základe URL, hlavičiek a metód HTTP.
    • Integrácia s Auto Scaling Groups.
    • SSL terminácia, Web Application Firewall (WAF).
  • Network Load Balancer (NLB): Používal sa na vyvažovanie TCP/UDP prevádzky na úrovni L4.
    • Vysoký výkon a nízka latencia.
    • Používa sa na vyvažovanie prevádzky k databázam, herným serverom a iným aplikáciám citlivým na latenciu.

Skúsenosti zahŕňali nastavenie Listeners, Target Groups, health checks a integráciu s ďalšími službami AWS cez AWS Management Console, AWS CLI a Terraform.

Technológie:

  • Konfigurácia: Ručné úpravy súborov, Ansible, Chef, Puppet.
  • Infraštruktúra ako kód: Terraform na automatické nasadzovanie a správu vyvažovačov záťaže v cloude.
  • Monitoring: Prometheus, Grafana s exportermi pre HAProxy/Nginx alebo cez CloudWatch pre AWS ELB.
  • CIDI: Zapnutie konfigurácie a prekonfigurácie vyvažovačov záťaže v CI/CD pipeline.

Celkovo výber vyvažovača závisel od požiadaviek aplikácie (typ prevádzky, výkon, funkčnosť), infraštruktúry (cloud alebo on-premise) a rozpočtu.