Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 2945|Ответ: 0

Балансировка нагрузки Nginx решает проблему одиночной точки на сервере SESSION

[Скопировать ссылку]
Опубликовано 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

Поскольку каждый сервер должен использовать одну и ту же сессию, мы можем хранить сессию в одной базе данных, каждый раз при доступе к ней мы заходим в базу, чтобы проверить, есть ли эта сессия или она истечена, а затем синхронизируем сессию нескольких серверов;

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

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


Используйте механизмы кэширования, такие как 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】Используйте Docker для создания приватного репозитория Gitlab
Следующий:Очистка правил модуля переписки URL IIS
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com