Есть ли хитрость в использовании переменных сеанса Classic ASP в среде с балансировкой нагрузки AWS? - PullRequest
1 голос
/ 23 апреля 2019

У меня есть среда AW2 с балансировкой нагрузки и EC2, на которой работает устаревший веб-сайт ASP. Приложение использует переменные сеанса для управления состоянием входа пользователя.

Проблема в том, что она не всегда работает, когда среда масштабируется до 2 или более экземпляров. Это хит, и иногда переменные не существуют после того, как они объявлены. Я что-то упустил для этого типа среды?

Когда существует только один экземпляр EC2. Нет проблемы. Более того, переменная сеанса не всегда устанавливается.

Session("loggedin")=true

1 Ответ

2 голосов
/ 23 апреля 2019

Если вы храните сеанс пользователя «в процессе», то есть он хранится в памяти сервера, на котором запущено ваше приложение, вам необходимо включить «липкие сеансы» на вашем балансировщике нагрузки, чтобы каждый пользователь был привязан к этому конкретному серверу.В противном случае вы столкнетесь с проблемой, которую вы видите, когда балансировщик нагрузки отправляет трафик на другой сервер, который может иметь или не иметь данные сеанса, которые вы ищете. (это плохая идея, поэтому не делайте этого, но это решит вашу проблему)

Правильный способ обработки сеанса, поскольку липкие сеансы не масштабируются должным образом, заключается в использованииотдельная служба или хранилище данных для обработки данных сеанса пользователя.Например, вы можете сохранить сеанс пользователя в Elasticache или DynamoDB, и, следовательно, сеанс будет считываться вне ваших экземпляров EC2, и вы сможете продолжать добавлять (или удалять) новые экземпляры EC2 без проблем.Вы также можете использовать сервер базы данных для обработки информации о вашем сеансе.Ключ заключается в том, чтобы не обрабатывать данные сеанса на реальном экземпляре EC2.

Проверьте это: Использование DynamoDB с сеансом

...