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

Общие сеансы PHP в среде httpd с балансировкой нагрузки

У меня есть два сервера httpd, на которых работает PHP на RHEL 5.7. Первоначально я разделял сеансы PHP между серверами, используя общий ресурс NFS, который размещался на третьем сервере. Это приводило к замедлению работы и, в конечном итоге, зависанию на серверах httpd.

Как лучше всего использовать данные сеанса PHP между несколькими интерфейсными серверами httpd?

Производитель рекомендует использовать постоянство соединения с балансировкой нагрузки через cookie или исходный IP-адрес, но я обеспокоен тем, что сбой на одном из серверов httpd приведет к тому, что пользователи потеряют данные сеанса и выйдут из системы (например).

Мысли?

Спасибо!

Либо поместите свои сеансы в свою (надеюсь, реплицированную) базу данных, либо используйте реплицированные memcached серверы для ваших сессий.

Один из легких вариантов тестирования: Scache. Но прочтите это введение, при использовании $ _SESSION в многосерверной среде возникают проблемы с блокировкой.

Это результат того, что я использую для разных клиентов:

В настоящее время он основан на ZF, но его можно легко расширить для работы с другими фреймворками. Идея состоит в том, чтобы использовать как Memcache, так и MySQL в качестве резервной копии. Поскольку он использует ext/memcache (многие предлагают придерживаться версии 2.x-stable) Я могу добавить несколько серверов, чтобы расширение реплицировало данные между ними.

Не уверен на 100%, что это лучшая идея, вы можете добиться того же и в коде пользовательского пространства.