Pouze pro návštěvníky našeho blogu Získejte další 3 měsíce zdarma + 10% slevu na tříletý plán YSBLOG10
Chyťte dohodu

Jak vytvořit Load Balancer na Linuxovém serveru v roce 2026

Vyrovnávač zátěže pro Linux Distribuuje příchozí provoz mezi více backendových serverů, aby se zvýšila dostupnost, výkon a odolnost proti chybám. Chcete-li vytvořit vyrovnávač zátěže na serveru Linux, nainstalujte a nakonfigurujte proxy, jako je HAProxy nebo Nginx, nastavit kontroly stavu, povolit SSL v případě potřeby ukončit a zajistit, monitorovat a testovat vysokou dostupnost.

Pokud vás zajímá, jak vytvořit vyrovnávač zátěže na Linuxovém serveru, tato příručka vás provede nastavením připraveným pro produkční prostředí pomocí Nginx a HAProxy s volitelnou vysokou dostupností přes Keepalived.

Probereme plánování, instalaci, konfiguraci, SSL ukončení, trvalé relace, zabezpečení, monitorování a ladění výkonu – krok za krokem a vhodné pro začátečníky.

Co je to Linux Load Balancer (a proč ho potřebujete)

Vyrovnávač zátěže (load balancer) je umístěn před vašimi aplikačními servery a směruje požadavky na zdravé instance. To vám pomáhá zvládat špičky v provozu, zkracovat prostoje a horizontálně škálovat. V Linuxu jsou nejoblíbenějšími open-source možnostmi Nginx a HAProxy pro vyvažování zátěže na vrstvě 7 (HTTP/HTTPS) a vrstvě 4 (TCP) a LVS/IPVS pro ultravysokou propustnost na vrstvě 4.

Co je to Linux Load Balancer (a proč ho potřebujete)

Předpoklady a plánování architektury

Než začnete, naplánujte si architekturu a shromážděte základní informace:

  • 1 veřejný Linuxový server (Debian/Ubuntu/CentOS/RHEL/AlmaLinux/Rocky) pro vyrovnávač zátěže
  • 2+ privátní/backendové servery, na kterých běží vaše aplikace (např. Node.js, PHP-FPM, Django nebo statický obsah)
  • Doména a DNS záznam (A/AAAA) ukazující na balancer
  • Přístup root nebo sudo, otevřené porty 80/443
  • SSL certifikát (Pojďme šifrovat nebo si to na míru upravíme)

Rozhodněte o: -

  • Vyvažování vrstvy 7 (HTTP/HTTPS) vs. vrstvy 4 (TCP)
  • Algoritmus vyvažování zátěže (round robin, leastconn, hash zdroje/IP adresy)
  • Potřeby pro perzistenci relace (stálé relace)
  • Aktivní kontroly stavu vs. pasivní kontroly
  • Jeden load balancer vs. vysoká dostupnost (aktivní/pasivní s VRRP)

Možnost 1: Vytvořte vyrovnávač zátěže HTTP/HTTPS pomocí Nginx

Nginx je lehký, rychlý reverzní proxy a HTTP load balancer. Ve výchozím nastavení podporuje round robin s volitelnou perzistencí relace založenou na IP adrese.

instalovat Nginx

# Debian/Ubuntu
sudo apt update && sudo apt install -y nginx

# RHEL/CentOS/Alma/Rocky
sudo dnf install -y nginx
sudo systemctl enable --now nginx

Konfigurace upstreamů a vyvažování zátěže

Vytvořte upstream s vašimi backendovými servery a serverový blok, který proxyje požadavky. Tento příklad používá round robin s pasivními kontrolami stavu.

sudo nano /etc/nginx/conf.d/loadbalancer.conf

upstream app_backend {
    # Use round-robin by default
    server 10.0.0.11:8080 max_fails=3 fail_timeout=10s;
    server 10.0.0.12:8080 max_fails=3 fail_timeout=10s;

    # For simple persistence, uncomment IP hash:
    # ip_hash;
}

server {
    listen 80;
    server_name example.com;

    # Redirect HTTP to HTTPS (uncomment after SSL is ready)
    # return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.crt;
    ssl_certificate_key /etc/ssl/private/example.key;

    # Security and performance
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    client_max_body_size 25m;
    proxy_read_timeout 60s;

    location / {
        proxy_pass http://app_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }

    # Health endpoint passthrough
    location /health {
        proxy_pass http://app_backend/health;
    }
}

Ověřit a znovu načíst:

sudo nginx -t
sudo systemctl reload nginx

umožnit SSL s Let's Encrypt (volitelné)

# Debian/Ubuntu
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

# RHEL family (EPEL may be required)
sudo dnf install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

Nginx open source podporuje pasivní kontroly stavu prostřednictvím max_fails/fail_timeoutPro pokročilé aktivní kontroly stavu nebo trvalost na základě souborů cookie zvažte HAProxy nebo NGINX Plus. Pro jednodušší perzistenci použijte ip_hash.

Možnost 2: Vytvořte TCP/HTTP Load Balancer pomocí HAProxy

HAProxy vyniká ve vyvažování zátěže HTTP vrstvy 7 a TCP vrstvy 4, nabízí robustní kontroly stavu, podrobnou sledovatelnost a vestavěné lepivé relace, což ho činí ideálním pro produkční úlohy.

Instalace HAProxy

# Debian/Ubuntu
sudo apt update && sudo apt install -y haproxy

# RHEL/CentOS/Alma/Rocky
sudo dnf install -y haproxy
sudo systemctl enable --now haproxy

Základní HTTP Load Balancer (cyklické zpracování + kontroly stavu)

sudo nano /etc/haproxy/haproxy.cfg

global
    log /dev/log local0
    log /dev/log local1 notice
    maxconn 50000
    tune.ssl.default-dh-param 2048
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5s
    timeout client  60s
    timeout server  60s
    retries 3

frontend fe_http
    bind *:80
    redirect scheme https code 301 if !{ ssl_fc }

frontend fe_https
    bind *:443 ssl crt /etc/ssl/private/example.pem
    mode http
    option httpclose
    option forwardfor
    default_backend be_app

backend be_app
    mode http
    balance roundrobin
    option httpchk GET /health
    http-check expect rstring OK
    server app1 10.0.0.11:8080 check fall 3 rise 2
    server app2 10.0.0.12:8080 check fall 3 rise 2

listen stats
    bind *:8404
    mode http
    stats enable
    stats uri /stats
    stats refresh 5s
    # Protect with basic auth
    stats auth admin:StrongPassHere

Zřetězení certifikátu a klíče do PEM pro HAProxy:

sudo bash -c 'cat /etc/ssl/certs/example.crt /etc/ssl/private/example.key > /etc/ssl/private/example.pem'
sudo chmod 600 /etc/ssl/private/example.pem
sudo systemctl restart haproxy
backend be_app
    mode http
    balance roundrobin
    cookie SRV insert indirect nocache
    option httpchk GET /health
    http-check expect rstring OK
    server app1 10.0.0.11:8080 check cookie s1
    server app2 10.0.0.12:8080 check cookie s2

Základy omezení rychlosti a DDoS útoků

frontend fe_https
    # ...previous lines...
    stick-table type ip size 200k expire 10m store http_req_rate(10s)
    tcp-request connection track-sc0 src
    acl too_fast sc0_http_req_rate gt 50
    http-request deny if too_fast

Toto omezuje počet požadavků zneužívajících klientů na 50 za 10 sekund. Upravte podle své pracovní zátěže.

Vysoká dostupnost s Keepalived (virtuální IP adresa VRRP)

Abyste se vyhnuli jedinému bodu selhání, spusťte dva nástroje pro vyrovnávání zátěže (LB1 a LB2) a pomocí služby Keepalived mezi nimi přesměrujte virtuální IP adresu (VIP). Klienti se připojují k VIP, která se automaticky přepne na fail-over.

Instalace a konfigurace Keepalivedu

# Debian/Ubuntu
sudo apt install -y keepalived

# RHEL family
sudo dnf install -y keepalived
# On LB1 (MASTER)
sudo nano /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 200
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass StrongVRRPPass
  }
  virtual_ipaddress {
    203.0.113.10/24 dev eth0
  }
  track_process {
    haproxy
  }
}

# On LB2 (BACKUP)
sudo nano /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
  state BACKUP
  interface eth0
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass StrongVRRPPass
  }
  virtual_ipaddress {
    203.0.113.10/24 dev eth0
  }
  track_process {
    haproxy
  }
}

sudo systemctl enable --now keepalived

Otestujte failover zastavením HAProxy nebo Keepalived na LB1 a ověřením přesunů VIP na LB2:

ip addr show | grep 203.0.113.10
sudo systemctl stop haproxy   # triggers VIP failover

Firewall, SELinux a zabezpečení

Otevřete požadované porty

# UFW (Ubuntu)
sudo ufw allow 80,443/tcp
sudo ufw allow 8404/tcp   # HAProxy stats (optional)
sudo ufw enable

# firewalld (RHEL family)
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --add-port=8404/tcp --permanent
sudo firewall-cmd --reload

Kontexty SELinuxu (HAProxy)

# Place certs where HAProxy can read them:
sudo mkdir -p /etc/pki/haproxy
sudo cp example.pem /etc/pki/haproxy/
sudo chown haproxy:haproxy /etc/pki/haproxy/example.pem
sudo chmod 600 /etc/pki/haproxy/example.pem

# If SELinux is enforcing, label context:
sudo semanage fcontext -a -t haproxy_etc_t "/etc/pki/haproxy(/.*)?"
sudo restorecon -Rv /etc/pki/haproxy

Ladění systému

sudo tee -a /etc/sysctl.d/99-lb-tuning.conf > /dev/null <<'EOF'
net.core.somaxconn=65535
net.ipv4.ip_local_port_range=10240 65000
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=15
net.core.netdev_max_backlog=16384
EOF

sudo sysctl --system

# Increase file descriptors
echo '* soft nofile 200000' | sudo tee -a /etc/security/limits.conf
echo '* hard nofile 200000' | sudo tee -a /etc/security/limits.conf

Monitorování, protokoly a pozorovatelnost

  • Povolte stránku se statistikami HAProxy na portu 8404 (jak je znázorněno) a chraňte ji pomocí auth.
  • Odesílejte protokoly do centrálního systému (Elastic, Loki, CloudWatch) pomocí rsyslog nebo Vector.
  • Sledujte klíčové metriky: míru požadavků, aktivní připojení, dobu odezvy, stav backendu, rychlosti 4xx/5xx.
  • Pro dashboardy použijte node_exporter a HAProxy exporter s Prometheus + Grafana.

Benchmark a ladění

  • Použijte wrk or ab pro zátěžový test proti LB VIP nebo doméně.
  • Upravit časové limity (timeout connect/client/server) aby odpovídaly chování aplikace.
  • Vyberte správný algoritmus: leastconn pro dlouhodobé požadavky; roundrobin pro rovnoměrné zatížení; source pro jednoduchou vytrvalost.
  • Horizontálně škálujte backendy; přidávejte/odebírejte servery bez výpadků.

Časté chyby a rychlé opravy

  • 502 Špatná brána: Zkontrolujte port backendu, firewall, SELinux nebo cestu pro kontrolu stavu.
  • SSL selhání handshake: Zajistěte plný řetězec PEM pro HAProxy a správná oprávnění k souborům.
  • Znovu načtení selhalo: Ověřte syntaxi konfigurace (nginx -t / haproxy -c -f /etc/haproxy/haproxy.cfg).
  • Zaseknuté relace nefungují: Potvrďte vložení cookies a aplikace je respektuje.
  • VIP se nehýbe: Ověřte priority Keepalived, VRRP ID, názvy rozhraní a sledování procesů.

Kdy použít spravované vyvažování zátěže

Pokud nechcete manage SSL zvažte obnovení, failover, monitorování a opravy managevyvažování zátěže d. V YouStable, naši inženýři navrhují a provozují HAProxy/Nginx klastry s VRRP, SSL offload, WAF a nepřetržitá sledovatelnost – abyste se mohli soustředit na svou aplikaci. Zeptejte se nás na migraci nebo kontrolu výkonu.

FAQs

1. Co je lepší pro vyvažování zátěže v Linuxu: Nginx nebo HAProxy?

Nginx je vynikající pro jednoduché reverzní proxyování HTTP a statický obsah. HAProxy nabízí bohatší kontroly stavu, podrobné metriky, pokročilou stabilitu a podporu TCP. Pro většinu produkčních aplikací je HAProxy bezpečnější výchozí volbou. Mnoho týmů ji používá. Nginx na okraji sítě a HAProxy pro směrování aplikací.

2. Jak přidám SSL k mému vyrovnávači zátěže v Linuxu?

Používejte Let's Encrypt s NginxPlugin Certbot nebo bind SSL v HAProxy se souborem PEM, který zřetězí certifikát a privátní klíč. Ukončete TLS na straně vyrovnávače zátěže a proxyujte HTTP do backendů nebo v případě potřeby přešifrujte na HTTPS.

3. Potřebuji pro svou aplikaci fixed sessions (sticky sessions)?

Použijte trvalé relace, pokud vaše aplikace ukládá stav relace do paměti na jednom backendu (např. PHP soubory relací). Pro bezstavové aplikace nebo distribuovaná úložiště relací (Redis, databáze) nepotřebujete lepivost. HAProxy podporuje lepivost založenou na souborech cookie; Nginx open-source podporuje IP protokoly ip_hash.

4. Jak mohu zajistit vysokou dostupnost nástroje pro vyrovnávání zátěže?

Nasaďte dva uzly pro vyrovnávání zátěže a virtuální IP adresu pomocí služby Keepalived (VRRP). VIP se automaticky přepne při selhání, pokud primární uzel nebo proces přestane fungovat. Můžete také použít cloud-managed Návrhy založené na LB nebo BGP pro větší prostředí.

5. Jaký je rozdíl mezi vyvažováním zátěže na vrstvě 4 a vrstvě 7?

Vrstva 4 pracuje na transportní úrovni (TCP/UDP) a je extrémně rychlá, ale postrádá podporu HTTP. Vrstva 7 rozumí HTTP hlavičkám, cestám a souborům cookie, což umožňuje funkce jako směrování URL, přepisování hlaviček, kompresi a trvalé relace. Vyberte na základě potřeb funkcí a výkonnostních cílů.

Sdílet přes:

Sanjeet Chauhan

Sanjeet Chauhan je bloger a SEO expert, který se věnuje pomoci webovým stránkám s organickým růstem. Sdílí praktické strategie, užitečné tipy a poznatky pro zvýšení návštěvnosti, zlepšení pozic ve vyhledávání a maximalizaci online přítomnosti.

Zanechat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

Přejděte na začátek