Назад | Перейти на главную страницу

Доступ к приложениям через AWS Load Balancer с автоматическим масштабированием

Я настраиваю тестовую архитектуру AWS для веб-приложения, которое я планирую перенести с выделенного хостинга на AWS. У меня сейчас следующее:

Новые экземпляры EC2 уже будут запущены с кодом и параметрами подключения RDS, готовыми через настраиваемый образ, и я работаю в регионе Сан-Паулу.

Все работает нормально, кроме одного. Если я захожу на сайт через DNS-запись ELB, я вижу там сайт, но не могу войти в систему. Когда я ввожу учетные данные пользователя, ничего не происходит. (Сайт в основном представляет собой панель администратора, поэтому мне нужно войти в систему, чтобы увидеть их содержимое), но если я получаю доступ через IP или DNS-запись отдельного экземпляра, я могу войти в систему и использовать приложение в обычном режиме. Пользовательские данные (пользователь и пароль) хранятся в RDS.

Если кто-нибудь испытал что-то подобное, я очень ценю вашу помощь. Заранее спасибо!

Когда вы пытаетесь получить доступ через ELB, получаете ли вы какой-либо журнал доступа или какой-либо вид входа в ваше приложение? Если нет, то это, скорее всего, проблема с переходом IP между экземплярами ELB и EC2. Может быть специфическим для приложения, например: вам нужен реальный IP-адрес клиента (например, заголовок X-Forwarded-For)? Возможно, это из-за логики аутентификации, которую вы используете в своем приложении.

Обычный способ поддержания сеанса:

  1. Аутентифицируйте пользователя.
  2. Отправьте в браузер файл cookie с уникальным идентификатором для этого сеанса.
  3. Ищите cookie сеанса при последующих обращениях из этого браузера.

Файл cookie сеанса обычно сохраняется и извлекается из места, которое не зависит от веб-серверов, например, отдельного сервера базы данных. Таким образом, не имеет значения, на какой веб-сервер они обращаются, они получат один и тот же файл cookie и тот же сеанс.

Файл cookie сеанса должен быть безопасным и уникальным для клиента, поэтому некоторые приложения будут создавать хэш, включающий в расчет IP-адрес клиента. Если это так, то другой IP-адрес выглядит как другой сеанс.

Вам нужно будет проверить свое приложение, чтобы узнать, так ли это.

В качестве альтернативы, если вам действительно нужно привязать сеанс к определенному серверу (например, приложение хранит состояние локально на веб-сервере), вы можете использовать Прикрепленные сеансы ELB привязать сеанс к определенному веб-серверу. Это необходимо только в том случае, если ваше приложение действительно хранит состояние локально на каждом веб-сервере.