Sobes.tech
Middle

Milyen load balancer-eket ismer? Milyen tapasztalatod van velük, és milyen technológiákat használtál?

sobes.tech MI

Válasz az MI-től

A következő típusú terheléselosztók ismertek:

  • Hardver terheléselosztók: Specializált eszközök. Példa: F5 BIG-IP.
  • Szoftveres terheléselosztók: Szoftverként működnek. Példák: HAProxy, Nginx, AWS Elastic Load Balancing (ELB), Google Cloud Load Balancing, Azure Load Balancer.

Tapasztalat HAProxy és Nginx szoftveres load balancereként, valamint felhőalapú megoldásokkal, például AWS ELB-vel (Application Load Balancer és Network Load Balancer).

HAProxy:

  • TCP és HTTP forgalom kiegyensúlyozására használták.
  • Beállításokat konfigurációs fájlokon keresztül végezték.
  • Alkalmazták:
    • HTTP kérések elosztása web szerverek között.
    • Magas rendelkezésre állás biztosítása adatbázisok számára (TCP forgalom).
  • Megvalósítások:
    • Load balancing algoritmusok (round-robin, leastconn).
    • Egészségügyi ellenőrzések a szervereken.
    • SSL termináció.
# HAProxy konfigurációs példa
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 # vagy 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 algoritmus
    server s1 192.168.1.10:80 check # Egészségügyi ellenőrzéssel szerver 1
    server s2 192.168.1.11:80 check # Egészségügyi ellenőrzéssel szerver 2

Nginx:

  • Reverse proxy és HTTP(S) forgalom load balancerként használták.
  • Beállításokat a nginx.conf vagy beágyazott fájlokban végezték.
  • Alkalmazták:
    • Web szerverek és mikroszolgáltatások közötti terhelés elosztására.
    • Gyorsítótárazás, tömörítés, SSL termináció.
  • Megvalósítások:
    • Különböző load balancing módszerek (round-robin, least_conn, ip_hash).
    • Egészségügyi ellenőrzések (Nginx Plus vagy modulokkal).
    • Virtuális hoszt konfiguráció.
# Nginx konfigurációs példa
http {
    upstream backend_servers {
        server 192.168.1.20:8080 weight=1; # Szerver 1
        server 192.168.1.21:8080 weight=1; # Szerver 2
        # least_conn; # Alternatív load balancing
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend_servers; # Proxy szervercsoport
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            # Egyéb proxy beállítások
        }
    }
}

AWS ELB:

  • Application Load Balancer (ALB): HTTP/HTTPS forgalomhoz, L7 szinten.
    • URL, fejlécek és HTTP módszerek alapján irányítás.
    • Auto Scaling csoportokkal való integráció.
    • SSL termináció, Web Application Firewall (WAF).
  • Network Load Balancer (NLB): TCP/UDP forgalomhoz, L4 szinten.
    • Magas teljesítmény és alacsony késleltetés.
    • Adatbázisok, játék szerverek és más késleltetés-érzékeny alkalmazások terheléselosztására.

Tapasztalat Listener-ek, Target Groups, egészségügyi ellenőrzések beállításában és más AWS szolgáltatásokkal való integrációban az AWS Management Console, AWS CLI és Terraform segítségével.

Technológiák:

  • Konfiguráció: Fájlok manuális szerkesztése, Ansible, Chef, Puppet.
  • Infrastruktúra-ként-kód: Terraform a felhőben lévő load balancerek automatikus telepítéséhez és kezeléséhez.
  • Megfigyelés: Prometheus, Grafana, exporters HAProxy/Nginx vagy CloudWatch az AWS ELB-hez.
  • CI/CD: Konfiguráció és load balancer újrakonfigurálása CI/CD pipeline-okban.

Általánosságban a load balancer kiválasztása az alkalmazás igényeitől (forgalom típusa, teljesítmény, funkcionalitás), az infrastruktúrától (felhő vagy helyszíni) és a költségvetéstől függ.