PHP memcached сессионное резервирование

Я пытаюсь следовать статье " Как поделиться сеансами PHP на нескольких серверах Memcached" и реализовать ее в своей среде:

/etc/php.d/memcache.ini:

# grep -v ^\; /etc/php.d/memcache.ini
extension=memcache.so
memcache.allow_failover=1
memcache.session_redundancy=2
session.save_handler=memcache
session.save_path='tcp://192.168.52.143:11211, tcp://192.168.52.142:11211'
# 

phpinfo();:

# php -i | grep -E 'memcache.allow_failover|memcache.session_redundancy|session.save_handler|session.save_path'
memcache.allow_failover => 1 => 1
memcache.session_redundancy => 2 => 2
session.save_handler => memcache => memcache
session.save_path => tcp://192.168.52.142:11211, tcp://192.168.52.143:11211 => tcp://192.168.52.142:11211, tcp://192.168.52.143:11211
# 

обе системы RHEL6 и работает php-5.3.3:

# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.6 (Santiago)
# rpm -q php php-pecl-memcache
php-5.3.3-40.el6_6.x86_64
php-pecl-memcache-3.0.5-4.el6.x86_64
# 

TCP мудр: .142 может добраться до .143:11211, а также .143 может добраться до .142:11211, SELinux в Permissive Режим.

Я могу видеть некоторые куски, хранящиеся в одном memcached сервер, но не в другой.

Что я делаю неправильно?

2 ответа

Решение

Эта статья о DigitalOcean, которую я написал, memcache.session_redundancy, ваш конфигурационный файл использовал memcache.redundancy, оба разные, и это может быть причиной того, что он не работает, как ожидалось.

Значение по умолчанию memcache.redundancy является 1 и это прекрасно работает для этой установки.

extension=memcache.so
memcache.allow_failover=1
memcache.session_redundancy=2
session.save_handler=memcache
session.save_path = 'tcp://192.168.52.143:11211,tcp://192.168.52.142:11211'

http://php.net/manual/en/memcache.ini.php

редактировать

Ваш комментарий:

На другом сервере IP обратны, но синтаксис тот же.

Вот в чем проблема, session.save_path должен быть точным на всех серверах.

Так что оба сервера должны иметь 'tcp://192.168.52.143:11211,tcp://192.168.52.142:11211'

Прочтите второй шаг этой статьи, все 3 сервера имеют одинаковый порядок.

Редактировать № 2

Значение memcache.session_redundancy должно быть равно нет. серверов + 1 из-за ошибки в PHP.

Так что в вашем случае это должно быть:

memcache.session_redundancy=3

Только:

memcache.allow_failover=1
memcache.redundancy=2

должен быть в memcache.ini.

Остальные должны быть в php.ini.

Другие вопросы по тегам