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

Файлы cookie не устанавливаются в среде с балансировкой нагрузки

У меня есть балансировщик нагрузки Nginx, балансирующий нагрузку на два сервера nginx, обслуживающих содержимое PHP (Moodle). Они используют одну и ту же базу данных и используют один и тот же каталог сеансов, используя общий ресурс NFS на отдельном сервере.

Я использую PHP 5.4.1 и последнюю версию Moodle.

Сейчас балансировка нагрузки работает нормально, и я могу получить доступ к обоим рабочим узлам с помощью прокси. Однако при входе в Moodle я получаю сообщение об отключении файлов cookie. Очевидно, что это не так, и вход в один из рабочих узлов работает нормально. При доступе к узлам по отдельности устанавливается cookie MoodleSession, но при доступе к нему через балансировщик нагрузки cookie не устанавливается вообще.

Я попытался изменить режим cookie для использования базы данных MySQL, но это тоже не сработало.

Что можно сделать, чтобы несколько рабочих узлов установили файлы cookie, которые сервер хранит в общем каталоге (NFS)?

Возможно, вы захотите явно перенаправить заголовок Set-Cookie с помощью proxy_pass_header Set-Cookie.

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

Только когда балансировщик нагрузки работает должным образом с одним воркером, тогда, как упоминал @ user1279647, вы можете определить, нужны ли вам липкие сеансы или нет, путем тестирования с несколькими воркерами.