Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 2945|Válasz: 0

A Nginx terheléselosztása kezeli a háttérben lévő SESSION egypontos problémát

[Linket másol]
Közzétéve 2023. 01. 10. 20:38:39 | | | |
Követelmények: Használd a Nginx-et egy fordított proxy építésére, amely felelős az összes kérés ütemezéséért, a háttérrendszert ASP.NET MVC fejleszti, és több különböző szerverre telepítik, így egy backend klasztert alkotA session információk nem oszthatók meg, ami egyes kérések nem megfelelően történő feldolgozásához vezet。 A következő problémák merülnek fel:





ASP.NET A weboldal a következőképpen nevezhető:

asp.net munkamenetmegosztás (StateServer segítségével)
https://www.itsvse.com/thread-6613-1-1.html

. Hálózati elosztott architektúra: Redis alapú szekciómegosztás
https://www.itsvse.com/thread-5189-1-1.html

A leggyakrabban használt megoldások a következők:

Használja az adatbázist a SESSION tárolására

Mivel minden szervernek ugyanazt az ülést kell használnia, tárolhatjuk a szekciót ugyanabban az adatbázisban, minden alkalommal, amikor hozzáférünk, megnézzük, van-e ez a munkamenet, vagy lejárt-e az ülés, majd szinkronizálhatjuk több szerver munkamenetét;

Érdem:Ennek a módszernek a használata egyszerű, kényelmes és könnyen elkezdhető;

Hiány:Az adatbázis használata a szingingingák szinkronizálására növeli az adatbázis IO-ját és növeli az adatbázis terhét. Ugyanakkor minden hozzáférésnek el kell fognia a kéréseket és lekérdezést kell végeznie az adatbázisban, ami további hozzáférési réteget eredményez és elpazarolt adatbázis ülésidőt.


Használj gyorsítótározó mechanizmust, például a Memcache-t vagy a Redis-t a SESSION tárolására

Az elosztott gyorsítótározó mechanizmusok, mint például a memcache vagy a redis használata a munkamenetadatok tárolására népszerű megoldás a terheléselosztásra és szinkron ülésekre sok nagyszabású projektben. Az elv, hogy a projekt ugyanott használja a memcache vagy redis cache-t, amikor a felhasználó bejelentkezik, a szekció a cache-ben tárolódik, és függetlenül attól, hogy melyik szervert használják a projektből, a session cache-t ugyanonnan kapják, így a szingíció szinkronizálása könnyen megvalósítható;

Érdem:Gyorsítótár használata az ülések szinkronizálására nem növeli az adatbázis terhét, és nem kell manuálisan megítélni, hogy létezik-e vagy lejár-e az ülés, így némi üzleti logika kizárt.

Hiány:A Memcache vagy Redis számos tárolóblokkra osztja a memóriát, és vannak méretű blokkok, ami azt is megállapítja, hogy a Memcache vagy Redis nem tudja teljesen kihasználni a memóriát, ami memória fragmentációt eredményez, és ha a tárolóblokkok nem elegendőek, memória túlcsordulás is előfordulhat.

Használd ki a ip_hash mintát Nginxben

Ez a technika, más néven session keeping (session keeping ), a nginx ip_hash technológiája, amely lehetővé teszi, hogyEgy adott IP-címről érkező kérések ugyanahhoz a háttérrendszerű alkalmazásszerverhez vannak rögzítve, így egy kliens és egy háttérrendszer ezen IP alatt stabil ülést hozhat létre.

(De van egy hátrány is, ha a szolgáltató hálózata ingatagabb és instabilabb,Az Exress IP dinamikusIgen, ezzel a módszerrel lesznek problémák. )

A tesztmódszer két helyszínt nyitunk docker alapján,Új index.html fájlt kell létrehoznod a /data/testsite/a és /data/testsite/b könyvtárak alatt, a parancs a következő:

Böngészőn keresztül érhető el, ahogy az alábbiakban látható:



Ha létrehozol egy új nginx konténert Docker alapján, ip_hash technológia használata nélkül, a kérést különböző backend szervereknek lehet küldeni, ahogy az alábbi ábrán látható:



ip_hash technológiával hozz létre egy új /data/testsite/nginx.conf fájlt a következő konfigurációval:

Docker indítási parancs a következő:




A cookie-alapú session keeping (cookie-alapú session-keeping rendszer) (amely a sticky modulban is elérhető) kimarad

Nginx konfiguráció:A hiperlink bejelentkezés látható.

(Vége)




Előző:【Practical Action】Use Docker to build a Gitlab private repository
Következő:IIS URL újraírás modul szabálytörlése
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com