GNU/Linux >> Znalost Linux >  >> Linux

Nginx vyrovnávání zátěže

Vyvažování zátěže mezi více aplikacemi, backendy a servery je součástí procesu optimalizace zdrojů, zlepšování výkonu a odolnosti služby vůči chybám.

Nginx jako nástroj pro vyrovnávání zatížení

Tento webový server je považován za jedno z nejoblíbenějších a nejproduktivnějších řešení, protože má nejširší funkčnost a flexibilitu při konfiguraci. Nginx se tedy často používá pro vyrovnávání zátěže.

Existuje několik přístupů a implementací, ale nejprve zkontrolujte dostupnost modulu ngx_http_upstream_module:

# nginx -v

Pokud chybí, budete muset znovu sestavit Nginx přidáním tohoto modulu. Poté můžete začít konfigurovat webový server. Chcete-li povolit vyvažování, přidejte direktivu pro upstream (část http) do konfiguračního souboru Nginx:

upstream backend  {
  server backend1.somesite.com;
  server backend2.somesite.com;
  server backend3.somesite.com;
}

Nyní je třeba zadat přesměrování potřebné skupiny:

server {
  location / {
    proxy_pass  http://backend;
  }
}

Nginx navíc podporuje další parametry a metody vyrovnávání zátěže.

Výběr metody vyvažování

Nginx nabízí několik metod vyrovnávání zátěže.

Round-robin

Ve výchozím nastavení webový server rozděluje požadavky rovnoměrně mezi backendy (ale s ohledem na váhy). Toto je standardní metoda v Nginx, takže neexistuje žádná směrnice o začlenění.

least_conn

Požadavky jsou nejprve odeslány do backendu s nejmenším počtem aktivních připojení (avšak s ohledem na váhy):

upstream backend {
    least_conn;

    server backend1.somesite.com;
    server backend2.somesite.com;
}

Hash a IP hash

Pomocí této metody můžete vytvořit určitý druh trvalého spojení mezi klienty a backendy. Pro každý požadavek Nginx vypočítá hash, který se skládá z textu, proměnných webového serveru nebo jejich kombinace, a poté jej namapuje na backendy:

upstream backend {
   hash $scheme$request_uri;

   server backend1.somesite.com;
   server backend2.somesite.com;
   server backend3.somesite.com;
}

IP hash funguje pouze s HTTP, toto je předdefinovaná možnost, ve které se hash vypočítává podle IP adresy klienta:

upstream backend {
   ip_hash;

   server backend1.somesite.com;
   server backend2.somesite.com;
   server backend3.somesite.com;
}

Hmotnost zadní části

Pokud jsou některé backendy na stacku výkonnější než jiné, pak se váhy hodí:

upstream backend {
    server backend1.somesite.com weight=10;
    server backend2.somesite.com weight=5;
    server backend3.somesite.com;
    server 192.0.0.1 backup;
}

V tomto příkladu z každých 16 požadavků zpracuje první backend 10, druhý 5 a třetí 1. V tomto případě bude záložní server přijímat požadavky pouze v případě, že tři hlavní backendy nejsou dostupné.

Monitorování

Pokud se Nginx domnívá, že backendový server je nedostupný, dočasně na něj zastaví odesílání požadavků. Jsou za to zodpovědné dvě směrnice:

  • max_fails — nastavuje počet neúspěšných pokusů o připojení, po kterých je backend po určitou dobu považován za nedostupný;
  • fail_timeout — doba, po kterou je server považován za nedostupný.

Parametry vypadají takto:

upstream backend {                
    server backend1.somesite.com;
    server backend2.somesite.com max_fails=3 fail_timeout=30s;
    server backend3.somesite.com max_fails=2;
}

Závěr

Výběr vhodného způsobu vyvažování umožní rovnoměrnější rozložení zátěže. Nezapomeňte na backendové váhy, monitorování a odolnost proti chybám serveru.


Linux
  1. nginx - 413 entita požadavku je příliš velká

  2. Jak nakonfigurovat HAProxy load balancer

  3. Nainstalujte Nginx na Windows

  1. Jak přesměrovat HTTP na HTTPS v Nginx

  2. Jak zkontrolovat zatížení serveru v Linuxu

  3. Nginx Whitelist určité IP adresy

  1. Jak hostovat webovou stránku na webovém serveru NGINX

  2. Jak nastavit HAProxy jako Load Balancer pro Nginx na CentOS 8

  3. Nastavte vyrovnávání zátěže pomocí HAProxy, Nginx a Keepalived v Linuxu