Возможно, самый правильный ответ заключается в том, что вы не должны создавать веб-приложения без надлежащей базы данных сеансов, доступной для всех серверов веб-приложений.
Однако ELB обеспечивает обходной путь для этого контроля, известный как «липкие сеансы» (или «близость сеанса»).
По умолчанию балансировщик нагрузки направляет каждый запрос независимо от экземпляра приложения с наименьшей нагрузкой. Тем не менее, вы можете использовать функцию липкой сессии (также известную как сродство к сеансу), которая позволяет балансировщику нагрузки привязывать сеанс пользователя к конкретному экземпляру приложения.
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html
Конечно, если сервер приложений не удается, или в автономном режиме для обслуживания, ваш пользователь по-прежнему имеет недопустимое сессию ... но по большей части, эта функция должна выполнить то, что вы хотите ,
Спасибо, Майкл, но липкие сеансы хорошо работают с моими переменными PHP Session, по какой-то причине они не работают с тем, что устанавливает Facebook в сеансе. Мои липкие сеансы включены, и все приложение отлично работает везде, где необходимы данные сеанса, именно этот процесс регистрации пропускает данные и возвращает нулевой сеанс. Сейчас у нас не так много серверов приложений, поэтому нам не нужна отдельная база данных для сеансов. – amannigam
Помогите мне понять, что вы говорите, здесь ... вы говорите, что липкие сеансы в ELB уже включены и работают, но вы также говорите, что они не работают («пользователь подписывается из одного экземпляра, сеанс создается для этого но перенаправление происходит во втором экземпляре »). Можете ли вы расширить это? –
Итак, приложение использует данные сеанса во многих местах и эти данные доступны для любого экземпляра из-за липких сеансов, но FacebookRedirectLoginHelper не получает никакой сессии в этом случае. Я думаю, что я попытаюсь сохранить данные сеанса самостоятельно и не использовать помощника Facebook. – amannigam