2014-12-17 2 views
0

Я запускаю два экземпляра Linux за ELB. Мое приложение имеет вход в facebook как способ регистрации. В живой среде пользователь подписывается из одного экземпляра, для него создается сеанс, но перенаправление происходит во втором экземпляре много раз, что приводит к нулевому сеансу из facebook, поскольку этот сеанс существует в первом экземпляре.Facebook Сессия, возвращающая null за ELB

Помогите мне исправить это. Это очень важно для нашего продукта.

ответ

0

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

Однако ELB обеспечивает обходной путь для этого контроля, известный как «липкие сеансы» (или «близость сеанса»).

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

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html

Конечно, если сервер приложений не удается, или в автономном режиме для обслуживания, ваш пользователь по-прежнему имеет недопустимое сессию ... но по большей части, эта функция должна выполнить то, что вы хотите ,

+0

Спасибо, Майкл, но липкие сеансы хорошо работают с моими переменными PHP Session, по какой-то причине они не работают с тем, что устанавливает Facebook в сеансе. Мои липкие сеансы включены, и все приложение отлично работает везде, где необходимы данные сеанса, именно этот процесс регистрации пропускает данные и возвращает нулевой сеанс. Сейчас у нас не так много серверов приложений, поэтому нам не нужна отдельная база данных для сеансов. – amannigam

+0

Помогите мне понять, что вы говорите, здесь ... вы говорите, что липкие сеансы в ELB уже включены и работают, но вы также говорите, что они не работают («пользователь подписывается из одного экземпляра, сеанс создается для этого но перенаправление происходит во втором экземпляре »). Можете ли вы расширить это? –

+0

Итак, приложение использует данные сеанса во многих местах и ​​эти данные доступны для любого экземпляра из-за липких сеансов, но FacebookRedirectLoginHelper не получает никакой сессии в этом случае. Я думаю, что я попытаюсь сохранить данные сеанса самостоятельно и не использовать помощника Facebook. – amannigam

Смежные вопросы