У меня три сервера для одного домена
Я использую nginx в качестве loadbalancer.
Я хочу поделиться сессиями php на этих серверах.
Мое приложение сильно зависит от сессии. хранение сессий в файлах — плохая идея. Я использую memcached для этого.
Как именно и эффективно я должен настроить memcached для чтения и записи сеансов и быстрого обмена между серверами.
или любое другое хорошее альтернативное предложение.
Как я читаю ваш вопрос, это выглядит как вы установили Memcache на каждом сервере (и поэтому вы спрашиваете об «обмене между серверами»?).
То, что я хотел бы сделать, это иметь сервер, на котором вы ТОЛЬКО Memcached на нем. Каждый веб-сервер будет подключаться к вашему экземпляру Memcache. При необходимости вы также можете иметь пул серверов Memcache, и Memcache позаботится о правильном распределении ваших данных и сеансов.
Во-первых, вы можете захотеть изменить способ обработки сеансов в PHP (для каждого сервера) для чтения данных сеанса в Memcache. Ваш php.ini файл понадобится так:
[Session]
; Handler used to store/retrieve data.
session.save_handler = memcache[d] ; memcache or memcached
session.save_path = "127.0.0.1:11211"
Смотри как Обработчики сессий Работа. Обратите внимание, что вы можете использовать Memcache или же Memcached расширение. Они не то же самое.
Вот документация для обоих расширений:
Если вы хотите получить более подробную информацию о том, как правильно выбрать memcache, я предлагаю вам проверить это:
https://serverfault.com/questions/63383/memcache-vs-memcached
Обратите внимание, что хранение сеансов в Memcache может быть проблематичным. Если Memcache остановлен (по какой-либо причине), вы потеряете все данные, которые у вас есть. Возможно, вы захотите сохранить свои сессии в базе данных, а также иметь их в Memcache для ускорения процесса.
Вы можете создать собственный обработчик сессий, чтобы убедиться, что он соответствует вашим потребностям. Вы можете прочитать больше о Класс SessionHandler.
Наконец, если вы открыты для предложения, я также хотел бы рассмотреть возможность использования Redis вместо Memcache, так как он предлагает больше функций и позволит вам перезагрузить данные при корректном завершении работы.
Других решений пока нет …