Мы переходим от установки 1 веб-сервера к установке с двумя веб-серверами, и мне нужно начать совместное использование сеансов PHP между двумя компьютерами с балансировкой нагрузки. Мы уже установили ( и запустили ) memcached, и поэтому я был приятно удивлен, что смог выполнить совместное использование сеансов между новыми серверами, изменив только 3 строки в файле ( session.save_handler и session.save_path ):php.ini
Я заменил:
session.save_handler = files
с:
session.save_handler = memcache
Затем на главном веб-сервере я установил session.save_path
указатель на localhost:
session.save_path="tcp://localhost:11211"
и на подчиненном веб-сервере я установил, session.save_path
чтобы указать на мастер:
session.save_path="tcp://192.168.0.1:11211"
Работа выполнена, я проверил, и это работает. Но...
Очевидно, что использование memcache означает, что сеансы находятся в оперативной памяти и будут потеряны в случае перезагрузки компьютера или сбоя демона memcache - меня это немного беспокоит, но меня больше беспокоит сетевой трафик между двумя веб-серверами (особенно в связи с тем, что мы увеличиваем масштаб), потому что всякий раз, когда кто-то балансирует нагрузку на подчиненный веб-сервер, его сеансы будут передаваться по сети с главного веб-сервера. Мне было интересно, смогу ли я определить два, save_paths
чтобы машины смотрели в собственном хранилище сеансов перед использованием сети. Например:
Мастер:
session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"
Ведомый:
session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"
Будет ли это успешно разделить сеансы на серверах и помочь производительности? т.е. сэкономить сетевой трафик 50% времени. Или эта техника предназначена только для отработки отказа (например, когда один демон memcache недоступен)?
Примечание : я на самом деле не спрашиваю конкретно о репликации memcache - подробнее о том, может ли PHP-клиент memcache работать с пиками внутри каждого демона memcache в пуле, возвращать сеанс, если он находит один, и создавать новый сеанс, только если он не находит его. во всех магазинах. Когда я пишу это, я думаю, что немного спрашиваю из PHP, лол ...
Предположим : нет липких сессий, циклическое распределение нагрузки, серверы LAMP.