Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 2945|Svar: 0

Nginx lastbalansering löser backend-problemet med SESSION single point

[Kopiera länk]
Publicerad på 2023-01-10 20:38:39 | | | |
Krav: Använd Nginx för att bygga en reverse proxy, ansvarig för schemaläggning av alla förfrågningar, backend utvecklas av ASP.NET MVC och distribueras till flera olika servrar, vilket bildar ett backendklusterSessionsinformation kan inte delas, vilket leder till att vissa förfrågningar inte behandlas korrekt。 Följande problem kommer att uppstå:





ASP.NET Webbplatsen kan refereras till enligt följande:

asp.net sessionsdelning (via StateServer)
https://www.itsvse.com/thread-6613-1-1.html

. Netdistribuerad arkitektur: Sessionsdelning baserad på Redis
https://www.itsvse.com/thread-5189-1-1.html

Vanligt använda lösningar är följande:

Använd databasen för att lagra SESSIONEN

Eftersom varje server behöver använda samma session kan vi lagra sessionen i samma databas, varje gång vi öppnar går vi till databasen för att kontrollera om denna session finns eller om den har gått ut, och sedan kan vi synkronisera sessionen för flera servrar;

Förtjänst:Att använda denna metod är enkelt, bekvämt och lätt att komma igång;

Brist:Att använda databasen för att synkronisera sessioner kommer att öka databasens IO och öka belastningen på databasen. Samtidigt måste varje åtkomst avlyssna förfrågningar och fråga databasen, vilket resulterar i ett extra åtkomstlager och bortkastad session i databasen.


Använd en cache-mekanism som Memcache eller Redis för att lagra SESSIONEN

Att använda distribuerade cachemekanismer som memcache eller redis för att lagra sessionsdata är en populär lösning för lastbalansering och synkrona sessioner i många storskaliga projekt. Dess princip är att projektet använder memcachen eller redis-cachen på samma plats, när användaren loggar in lagras sessionen i cachen, och oavsett vilken server i projektet som nås, hämtas sessionscachen från samma plats, så att sessionssynkronisering enkelt kan genomföras;

Förtjänst:Att använda cache för att synkronisera sessioner ökar inte belastningen på databasen, och du behöver inte manuellt bedöma om sessionen existerar eller förfaller, vilket eliminerar en del affärslogik.

Brist:Memcache eller Redis delar in minnet i många specifikationer av lagringsblock, och det finns block med storlek, vilket också avgör att Memcache eller Redis inte kan utnyttja minnet fullt ut, vilket leder till minnesfragmentering, och om lagringsblocken är otillräckliga kommer även minnesöverflöd att uppstå.

Utnyttja ip_hash-mönstret i Nginx

Denna teknik, även känd som sessionsföring, är den ip_hash teknologin i nginx som låter dig göra det möjligtFörfrågningar från en viss IP-adress är fastnålade till samma backend-applikationsserver, så att en klient och en backend under denna IP kan etablera en stabil session.

(Men det finns också en nackdel om operatörens nätverk är mer instabilt och inflytande,Egress IP är dynamiskJa, det kommer att finnas problem med denna metod. )

Testmetoden är att öppna två platser baserade på docker,Du behöver skapa en ny index.html-fil under katalogerna /data/testsite/a respektive /data/testsite/b, kommandot är följande:

Åtkomst via en webbläsare som visas nedan:



Om du skapar en ny nginx-container baserad på Docker, utan att använda ip_hash teknik, kan förfrågan skickas till olika backend-servrar, som visas i figuren nedan:



Med ip_hash teknik, skapa en ny /data/testsite/nginx.conf-fil med följande konfiguration:

Docker-startkommandot är följande:




Cookiebaserad sessionshantering, som kan konsulteras i den fastklistrade modulen, utelämnades

Nginx-konfiguration:Inloggningen med hyperlänken är synlig.

(Slut)




Föregående:【Practical Action】Använd Docker för att bygga ett privat Gitlab-repository
Nästa:Rensning av IIS URL-omskrivningsmodulregler
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com