Sobes.tech
Middle

Kokius apkrovos balansus žinote? Kokia jūsų patirtis dirbant su jais ir kokias technologijas naudojote?

sobes.tech AI

Atsakymas iš AI

Žinomi šie apkrovos paskirstytuvų tipai:

  • HARDWARE (Hardware Load Balancers): Specializuotos įrangos įrenginiai. Pavyzdys: F5 BIG-IP.
  • SOFTWARE (Software Load Balancers): Veikia kaip programinė įranga. Pavyzdžiai: HAProxy, Nginx, AWS Elastic Load Balancing (ELB), Google Cloud Load Balancing, Azure Load Balancer.

Yra patirties su HAProxy ir Nginx kaip programinės įrangos apkrovos paskirstytuvais, taip pat su AWS ELB debesų sprendimais.

HAProxy:

  • Naudotas TCP ir HTTP srauto paskirstymui.
  • Nustatymai buvo atliekami per konfigūracijos failus.
  • Naudotas:
    • HTTP užklausų paskirstymui tarp žiniatinklio serverių.
    • Aukšto prieinamumo užtikrinimui duomenų bazėms (TCP srautas).
  • Įgyvendinti:
    • Paskirstymo algoritmai (round-robin, leastconn).
    • Serverių veiklos patikros.
    • SSL terminacija.
# HAProxy konfigūracijos pavyzdys
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 # arba 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 # Paskirstymo algoritmas
    server s1 192.168.1.10:80 check # Veikiantis serveris 1
    server s2 192.168.1.11:80 check # Veikiantis serveris 2

Nginx:

  • Naudotas kaip reverse proxy ir HTTP(S) srauto paskirstytojas.
  • Nustatymai buvo atliekami nginx.conf faile arba įtrauktų failų konfigūracijoje.
  • Naudotas:
    • Svorio paskirstymas tarp žiniatinklio serverių ir mikroservisų.
    • Talpykla, suspaudimas, SSL terminacija.
  • Įgyvendinti:
    • Skirtingi paskirstymo metodai (round-robin, least_conn, ip_hash).
    • Veiklos patikros.
    • Virtualių hostų konfigūracija.
# Nginx konfigūracijos pavyzdys
http {
    upstream backend_servers {
        server 192.168.1.20:8080 weight=1; # Serveris 1
        server 192.168.1.21:8080 weight=1; # Serveris 2
        # least_conn; # Kitas paskirstymo metodas
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend_servers; # Proxy grupė
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            # Kiti proxy nustatymai
        }
    }
}

AWS ELB:

  • Application Load Balancer (ALB): Naudojamas HTTP/HTTPS srauto paskirstymui. L7 lygmenyje.
    • Maršrutizuoja užklausas pagal URL, antraštes ir HTTP metodus.
    • Integruojasi su Auto Scaling grupėmis.
    • SSL terminacija, Web Application Firewall (WAF).
  • Network Load Balancer (NLB): Naudojamas TCP/UDP srauto paskirstymui. L4 lygmenyje.
    • Aukštas našumas ir žemas delsimas.
    • Naudojamas duomenų bazių, žaidimų serverių ir kitų jautrių delsimo aplikacijų paskirstymui.

Patirtis apima Listeners, Target Groups, sveikatos patikras ir integraciją su kitomis AWS paslaugomis per AWS Management Console, AWS CLI ir Terraform.

Technologijos:

  • Konfigūracija: Rankinis failų redagavimas, Ansible, Chef, Puppet.
  • Infrastruktūra kaip kodas: Terraform automatinė diegimas ir valdymas debesyje.
  • Stebėsena: Prometheus, Grafana su eksportuotojais HAProxy/Nginx arba per CloudWatch AWS ELB.
  • CIDI: Konfigūracijų įjungimas ir perkonfigūravimas CI/CD pipeline'ose.

Apskritai, pasirinkimas priklausė nuo programos reikalavimų (srauto tipas, našumas, funkcionalumas), infrastruktūros (debesis ar on-premise) ir biudžeto.