Балансировка нагрузки и управление сессиями с CakePHP

1

первый вопрос на этом замечательном сайте;)

Примечание. Я использую CakePHP 2.6.2

Итак, вот моя проблема: у меня есть балансировщик нагрузки и 2 веб-сервера. Я помещаю веб-сайт на эти серверы, и поскольку балансировщик нагрузки не использует сессионную липкость (и я не могу его активировать, серверы не мои), я сталкиваюсь с проблемами с сеансами (когда балансировщик переключает меня с одного сервер к другому).

Единственный общий ресурс между серверами - это база данных, поэтому я хотя бы об использовании хранилища сеансов базы данных CakePHP.

Но на данный момент мне интересно, есть ли встроенное решение в cakephp, которое позволяет переключать или дублировать сеанс между серверами.

Спасибо!

Теги:
cakephp
session
load-balancing

1 ответ

5
Лучший ответ

Не использовать сеансы на основе файлов действительно важно, как вы, вероятно, выяснили. Вместо этого вы должны использовать сеансы базы данных, redis или memcached.

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

Другое дело, что вам может понадобиться решить, это загрузка файлов. В настройках с несколькими серверами вы не можете просто сохранять загруженные файлы на локальный диск, так как следующий запрос может не попасть на тот же сервер. Вместо этого я бы рекомендовал вам посмотреть на устройства хранения blob, такие как Amazon S3, хранилище Azure blob и облачные файлы Rackspace.

  • 0
    Конечно, липкие сессии были бы лучшими, но я не могу использовать это, к сожалению. Но я думаю, что я пошел далеко со своим вопросом. Мне просто интересно, есть ли встроенный способ справиться с этой проблемой (сохранить сессию при переключении сервера) в CakePHP.
  • 1
    Я бы сказал, что липких сессий следует избегать. Хотя это решает некоторые проблемы, оно усложняет добавление / удаление серверов в пул и делает обслуживание серверов более проблематичным, поскольку вы не можете легко удалить сервер из пула.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню