Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 2945|Odpowiedź: 0

Load balancing Nginx rozwiązuje problem pojedynczego punktu backend SESSION

[Skopiuj link]
Opublikowano 10.01.2023 20:38:39 | | | |
Wymagania: Użyj Nginx do zbudowania reverse proxy, odpowiedzialnego za planowanie wszystkich żądań, backend jest rozwijany przez ASP.NET MVC i wdrażany na wielu różnych serwerach, tworząc klaster backendInformacje o sesji nie mogą być udostępniane, co skutkuje nieprawidłowym przetwarzaniem niektórych żądań。 Pojawią się następujące problemy:





ASP.NET Strona internetowa może być nazywana następująco:

asp.net udostępnianie sesji (przez StateServer)
https://www.itsvse.com/thread-6613-1-1.html

. Architektura rozproszona sieci: Współdzielenie sesji oparte na Redisie
https://www.itsvse.com/thread-5189-1-1.html

Najczęściej stosowane rozwiązania to:

Użyj bazy danych do przechowywania SESSION

Ponieważ każdy serwer musi korzystać z tej samej sesji, możemy przechowywać sesję w tej samej bazie danych, za każdym razem wchodzimy do bazy, aby sprawdzić, czy ta sesja istnieje, czy ta sesja wygasła, a następnie możemy synchronizować sesję wielu serwerów;

Zasługa:Korzystanie z tej metody jest proste, wygodne i łatwe do rozpoczęcia;

Niedociągnięcie:Wykorzystanie bazy danych do synchronizacji sesji zwiększy liczbę wejść i obciążenie bazy danych. Jednocześnie każdy dostęp musi przechwytywać żądania i zapytywać bazę danych, co skutkuje dodatkową warstwą dostępu i marnowaniem czasu sesji bazy danych.


Użyj mechanizmu buforowania, takiego jak Memcache lub Redis, aby przechowywać SESSION

Wykorzystanie rozproszonych mechanizmów buforowania, takich jak memcache czy redis, do przechowywania danych sesji, jest popularnym rozwiązaniem do równoważenia obciążenia i synchronicznych sesji w wielu dużych projektach. Zasada projektu polega na tym, że projekt korzysta z pamięci podręcznej memcache lub redis w tym samym miejscu, a gdy użytkownik się zaloguje, sesja jest przechowywana w pamięci podręcznej, a niezależnie od tego, do którego serwera projektu uchodzi dostęp, pamięć podręczna sesji jest pobierana z tego samego miejsca, dzięki czemu synchronizacja sesji jest łatwa;

Zasługa:Użycie pamięci podręcznej do synchronizacji sesji nie zwiększy obciążenia bazy danych, ani nie musisz ręcznie oceniać, czy sesja istnieje, czy wygasa, co eliminuje część logiki biznesowej.

Niedociągnięcie:Memcache lub Redis dzieli pamięć na wiele specyfikacji bloków pamięci, a istnieją bloki o rozmiarach, co również oznacza, że memcache lub redis nie mogą w pełni wykorzystać pamięci, co powoduje fragmentację pamięci, a jeśli bloki pamięci są niewystarczające, dochodzi do przepełnienia pamięci.

Wykorzystaj wzór ip_hash w Nginx

Ta technika, znana również jako prowadzenie sesji, jest ip_hash technologią w nginx, która pozwala naŻądania z określonego adresu IP są przypięte do tego samego serwera aplikacji backendowej, tak aby klient i backend pod tym IP mogli nawiązać stabilną sesję.

(Ale istnieje też wada, jeśli sieć operatora jest bardziej niestabilna i niestabilna,IP wyjściowe jest dynamiczneTak, z tą metodą pojawią się problemy. )

Metodą testową jest otwarcie dwóch lokalizacji na podstawie dockera,Musisz utworzyć nowy plik index.html odpowiednio w katalogach /data/testsite/a i /data/testsite/b, polecenie brzmi następująco:

Dostęp przez przeglądarkę, jak pokazano poniżej:



Jeśli utworzysz nowy kontener nginx oparty na Dockerze, nie używając ip_hash technologii, żądanie może być wysyłane do różnych serwerów backendowych, jak pokazano na poniższym rysunku:



Korzystając z ip_hash technologii, utworz nowy plik /data/testsite/nginx.conf z następującą konfiguracją:

Polecenie uruchamiania dockera wygląda następująco:




Zachowanie sesji oparte na ciasteczkach, które można sprawdzić w przypiętym module, zostało pominięte

Konfiguracja Nginx:Logowanie do linku jest widoczne.

(Koniec)




Poprzedni:【Praktyczne działanie】Użyj Dockera do budowy prywatnego repozytorium Gitlab
Następny:Modul przepisywania URL IIS – Czyszczenie reguł
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com