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.confalebo 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.