Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator Nginx load balancer

Rozłóż ruch między serwery aplikacji

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
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ć

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!