Generator Nginx load balancer

Rozłóż ruch między serwery aplikacji

Bez konta
Bez instalacji
Bezpłatnie
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Podaj serwery, aby wygenerować konfigurację load balancera.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Podaj dalej

Komuś też się przyda?

Wyślij znajomemu link. Otworzy narzędzie od razu, bez konta i bez opłat.

Generator load balancera Nginx

Gdy jedna instancja aplikacji nie wystarcza, ruch rozkłada się między kilka serwerów. Nginx pełni wtedy rolę load balancera, zwiększając wydajność i niezawodność.

Metody rozkładu ruchu

MetodaZasada działania
round-robinpo kolei do każdego serwera (domyślna)
least_conndo serwera z najmniejszą liczbą połączeń
ip_hashten sam klient trafia do tego samego serwera

Przykład

Dwie instancje aplikacji na portach 3000 i 3001 tworzą grupę backend. Nginx kieruje ruch metodą least_conn i utrzymuje do 32 połączeń keepalive na serwer.

Waga serwera

Dyrektywa weight pozwala kierować więcej ruchu do mocniejszej maszyny, np. server 10.0.0.1:3000 weight=3;. Serwer zapasowy ustawia się słowem backup, a wyłączony — down.

Jak działa generator load balancera Nginx

Generator zbiera wybrane ustawienia w jeden blok upstream i dopisuje do niego konfigurację proxy_pass wraz z nagłówkami przekazującymi dane klienta. Sam blok upstream jest listą serwerów, do których Nginx może kierować żądanie; reszta konfiguracji to reguły wyboru jednego z nich.

Mechanizm wyboru zależy od metody. W trybie round-robin Nginx przechodzi po liście serwerów po kolei i po ostatnim wraca do pierwszego. W least_conn wybiera serwer z najmniejszą liczbą aktywnych połączeń, a przy ustalonych wagach liczy ten stosunek względem wagi. W ip_hash wylicza skrót z adresu klienta i przypisuje go do stałego miejsca w grupie, więc ten sam klient trafia do tego samego serwera.

Waga nie jest proporcją ruchu wyrażoną w procentach — to mnożnik w kolejce wyboru. Przy wagach 3 i 1 (suma 4) co czwarte żądanie w round-robin trafia do lżejszego serwera, co daje 75% i 25%. Dyrektywa keepalive w upstreamie nie otwiera połączeń z góry — ustala, ile bezczynnych połączeń do każdego serwera Nginx może trzymać w cache i użyć ponownie. Dostępność sterują znaczniki backup i down oraz progi max_fails i fail_timeout: po przekroczeniu liczby nieudanych prób w oknie czasowym serwer jest pomijany na czas równy fail_timeout.

Przykład konfiguracji krok po kroku

  1. Do grupy trafiają dwie instancje aplikacji: 10.0.0.1:3000 na mocniejszej maszynie i 10.0.0.2:3001 na słabszej. Każda jest osobnym wpisem server w bloku upstream.
  2. Zostawiasz domyślną metodę round-robin i dodajesz weight=3 do pierwszego serwera. Suma wag wynosi 3 + 1 = 4, więc na każde 4 żądania trzy idą do 10.0.0.1:3000, a jedno do 10.0.0.2:3001 — czyli 75% i 25% ruchu.
  3. Jeśli czasy odpowiedzi są nierówne, przełączasz metodę na least_conn. Nginx wybierze wtedy serwer o najmniejszej liczbie aktywnych połączeń, a waga nadal wpływa na ten wybór.
  4. Dodajesz keepalive 32. Nginx może trzymać do 32 bezczynnych połączeń do każdego z dwóch serwerów, razem do 64 w puli. W bloku location ustawiasz proxy_http_version 1.1 oraz proxy_set_header dla nagłówka Connection z pustą wartością.
  5. Ustawiasz max_fails 3 i fail_timeout 30s. Gdy w ciągu 30 sekund trzy próby do 10.0.0.1:3000 zakończą się błędem, serwer wypada z grupy na 30 sekund i 100% ruchu obsługuje 10.0.0.2:3001.
  6. Na koniec dodajesz zapas: trzeci serwer 10.0.0.3:3002 oznaczasz słowem backup — przyjmuje ruch tylko wtedy, gdy oba serwery podstawowe są niedostępne.

Tabela referencyjna ustawień upstream

UstawienieSkładnia lub wartośćEfekt działania
round-robinbrak dodatkowej dyrektywyŻądania trafiają po kolei do każdego serwera; metoda domyślna.
least_connleast_conn;Wybór serwera z najmniejszą liczbą aktywnych połączeń.
ip_haship_hash;Ten sam klient trafia do tego samego serwera.
weightserver 10.0.0.1:3000 weight=3;Mnożnik w kolejce wyboru; wagi 3 i 1 dają podział 3:1, czyli 75% i 25%.
backupserver 10.0.0.3:3002 backup;Serwer przyjmuje ruch tylko wtedy, gdy serwery podstawowe są niedostępne.
downserver 10.0.0.1:3000 down;Serwer oznaczony jako wyłączony, nie bierze udziału w rozkładzie ruchu.
keepalivekeepalive 32;Do 32 bezczynnych połączeń do każdego serwera trzymanych w cache; wymaga HTTP/1.1.
max_fails i fail_timeoutmax_fails=3 fail_timeout=30sPo 3 nieudanych próbach w oknie czasowym serwer jest pomijany na czas fail_timeout.

Praktyczne wskazówki

  • Zacznij od round-robin — domyślna metoda wystarcza, gdy instancje mają podobną moc, a żądania są krótkie. least_conn włączaj, gdy czasy odpowiedzi są nierówne i część połączeń utrzymuje się dłużej.
  • Waga to nie pomiar wydajności — weight=3 ustawiaj świadomie, znając różnicę między maszynami. Sam stosunek 3:1 nie chroni szybszego serwera przed przeciążeniem przy nagłym wzroście ruchu.
  • keepalive wymaga dwóch linii w location — proxy_http_version 1.1 oraz pusty nagłówek Connection. Bez nich pula połączeń nie zadziała mimo wpisu keepalive w upstreamie.
  • Nie mieszaj ip_hash z lepkim magazynem sesji — jeśli możesz przenieść sesje do wspólnego magazynu, ip_hash przestaje być potrzebny, a rozkład ruchu staje się równiejszy.
  • Ustaw progi awarii — max_fails i fail_timeout chronią przed kierowaniem ruchu do martwej instancji. Wartości dobierz do tego, jak aplikacja znosi pojedyncze błędy.

Czego narzędzie nie uwzględnia

  • Nie uruchamia Nginxa — generator zwraca fragment konfiguracji, ale nie waliduje go poleceniem nginx -t ani nie sprawdza, czy dane dyrektywy są dostępne w Twojej wersji.
  • Nie zna Twojej infrastruktury — nie wie, ile rdzeni mają maszyny ani jakie jest realne obciążenie, więc waga i keepalive pozostają wartościami, które dobierasz samodzielnie.
  • Nie monitoruje stanu serwerów — wygenerowana konfiguracja opiera się na max_fails i fail_timeout; zaawansowane health checks to funkcja Nginx Plus i narzędzie jej nie generuje.
  • Nie uwzględnia warstwy transportu i limitów — konfiguracja TLS, worker_connections, rozwiązywanie nazw DNS w upstreamie i reguły zapory pozostają poza jego zakresem.

Najczęstsze pytania

Po co keepalive w upstream?

Pozwala Nginx ponownie używać połączeń do backendu, co zmniejsza opóźnienia i obciążenie. Wymaga nagłówka Connection "" dla HTTP/1.1.

Kiedy stosować ip_hash?

Gdy sesje użytkownika są przechowywane lokalnie na serwerze. Lepiej jednak wynieść sesje do wspólnego magazynu (np. Redis).

Jak sprawdzić kondycję serwerów?

W wersji open source służy do tego max_fails i fail_timeout. Wersja Plus oferuje zaawansowane health checks.

Czym różni się least_conn od round-robin w Nginx?

round-robin przekazuje żądania po kolei, niezależnie od tego, ile połączeń jest aktualnie otwartych. least_conn wybiera serwer z najmniejszą liczbą aktywnych połączeń, więc lepiej radzi sobie, gdy żądania trwają różnie długo.

Jak ustawić wagę serwera w upstream?

Dopisujesz weight do wpisu server, na przykład server 10.0.0.1:3000 weight=3;. Waga działa jak mnożnik w kolejce wyboru: przy wagach 3 i 1 na każde 4 żądania trzy trafiają do pierwszego serwera, a jedno do drugiego.

Po co keepalive w upstream i ile połączeń ustawić?

keepalive 32 oznacza, że Nginx trzyma w cache do 32 bezczynnych połączeń do każdego serwera i używa ich ponownie, co zmniejsza opóźnienia i obciążenie backendu. Wymaga to proxy_http_version 1.1 oraz pustego nagłówka Connection.

Jak wyłączyć serwer z load balancera bez usuwania go z konfiguracji?

Dopisujesz słowo down do wpisu server, na przykład server 10.0.0.1:3000 down;. Serwer zostaje w pliku, ale nie bierze udziału w rozkładzie ruchu. Słowo backup oznacza serwer zapasowy, używany dopiero wtedy, gdy serwery podstawowe są niedostępne.

Co się dzieje, gdy jeden z backendów przestanie odpowiadać?

Nginx zlicza nieudane próby i po przekroczeniu max_fails w oknie fail_timeout wyłącza serwer z grupy na czas fail_timeout. Ruch przechodzi wtedy na pozostałe serwery z bloku upstream.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!