Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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

Поширені рішення такі:

Використовуйте базу даних для збереження SESSION

Оскільки кожен сервер має використовувати одну й ту ж сесію, ми можемо зберігати сесію в одній і тій самій базі даних, кожного разу, коли ми звертаємося до неї, щоб перевірити, чи існує ця сесія, чи вона закінчилася, а потім синхронізуємо сесію кількох серверів;

Заслуга:Використання цього методу просте, зручне та легко почати;

Недолік:Використання бази даних для синхронізації сесій збільшує IO бази даних і збільшує навантаження на базу. Водночас кожен доступ має перехоплювати запити та звертатися до бази даних, що призводить до додаткового рівня доступу та марної сесії часу бази даних.


Використовуйте механізми кешування, такі як Memcache або Redis, щоб зберігати SESSION

Використання розподілених механізмів кешування, таких як 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 виглядає так:




Збереження сесій на основі cookie, яке можна проконсультуватися у закріпленому модулі, виключено

Конфігурація Nginx:Вхід за гіперпосиланням видно.

(Кінець)




Попередній:【Practical Action】Use Docker to build a private repository Gitlab
Наступний:Очищення правил модуля переписування URL IIS
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com