Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 2945|Отговор: 0

Nginx балансирането на натоварването решава проблема с единичната точка в бекенд СЕСИЯ

[Копирай линк]
Публикувано в 10.01.2023 г. 20:38:39 ч. | | | |
Изисквания: Използвайте Nginx за изграждане на обратен прокси, отговорен за планирането на всички заявки, бекендът се разработва от ASP.NET MVC и се разгръща на няколко различни сървъра, формирайки бекенд клъстерИнформацията за сесията не може да се споделя, което води до неправилна обработка на някои заявки。 Ще възникнат следните проблеми:





ASP.NET Уебсайтът може да се нарича по следния начин:

asp.net споделяне на сесия (чрез StateServer)
https://www.itsvse.com/thread-6613-1-1.html

. Мрежова разпределена архитектура: Споделяне на сесии на база Redis
https://www.itsvse.com/thread-5189-1-1.html

Често използваните решения са следните:

Използвайте базата данни за съхранение на СЕСИЯТА

Тъй като всеки сървър трябва да използва една и съща сесия, можем да съхраняваме сесията в една и съща база данни, всеки път когато я достъпим, отиваме в базата данни, за да проверим дали има тази сесия или дали тя е изтекла, и след това можем да синхронизираме сесията на няколко сървъра;

Заслуга:Използването на този метод е лесно, удобно и лесно за започване;

Недостатък:Използването на базата данни за синхронизиране на сесии ще увеличи входа на базата данни и ще увеличи натоварването върху нея. В същото време всеки достъп трябва да прихваща заявки и да прави заявки към базата данни, което води до допълнителен слой достъп и загуба на време за сесия в базата данни.


Използвайте кеширащ механизъм като Memcache или Redis за съхранение на СЕСИЯТА

Използването на разпределени кеширащи механизми като memcache или redis за съхранение на данни от сесии е популярно решение за балансиране на натоварването и синхронни сесии в много мащабни проекти. Принципът му е, че проектът използва memcache или redis кеша на едно и също място, когато потребителят влезе, сесията се съхранява в кеша и независимо кой сървър на проекта се достъпва, сесийният кеш се получава от едно и също място, така че синхронизацията на сесиите се осъществява лесно;

Заслуга:Използването на кеш за синхронизиране на сесиите няма да увеличи натоварването върху базата данни, нито е нужно ръчно да преценявате дали сесията съществува или изтече, което елиминира част от бизнес логиката.

Недостатък:memcache или redis разделят паметта на много спецификации на блокове за съхранение, като има блокове с размери, което също определя, че memcache или redis не могат напълно да използват паметта, което води до фрагментация на паметта, а ако блоковете за съхранение са недостатъчни, ще настъпи и препълване на паметта.

Използвайте модела ip_hash в Nginx

Тази техника, известна още като сесийно поддържане, е ip_hash технология в nginx, която ви позволяваЗаявките от определен IP адрес се закрепват към същия бекенд сървър, така че клиент и бекенд под този IP да могат да установят стабилна сесия.

(Но има и недостатък, ако мрежата на оператора е по-нестабилна и нестабилна,Изходният IP е динамиченДа, ще има проблеми с този метод. )

Тестовият метод е да се отворят два сайта на база docker,Трябва да създадете нов index.html файл под директориите /data/testsite/a и /data/testsite/b съответно, командата е следната:

Достъп чрез браузър, както е показано по-долу:



Ако създадете нов nginx контейнер на базата на Docker, без да използвате ip_hash технология, заявката може да бъде изпратена към различни бекенд сървъри, както е показано на фигурата по-долу:



Използвайки ip_hash технология, създайте нов файл /data/testsite/nginx.conf със следната конфигурация:

Командата за стартиране на docker е следната:




Сесийното съхранение на базата на бисквитки, което може да се консултира в закрепения модул, е пропуснато

Конфигурация на Nginx:Входът към хиперлинк е видим.

(Край)




Предишен:【Practical Action】Използвайте Docker за изграждане на Gitlab private repository
Следващ:Изчистване на правилата за IIS URL модул за пренаписване
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com