PHP memcached会话冗余

我正在尝试按照如何在多个Memcached服务器上共享PHP会话文章,并将其实施到我的环境中:

/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:11211SELinux处于Permissive模式。

我能够看到一些块存储在一个memcached服务器,但没有在另一个。

我究竟做错了什么?

我写的DigitalOcean文章有memcache.session_redundancy ,你的configuration文件使用了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的值必须等于no。 由于PHP中的错误 ,服务器+ 1

所以在你的情况下,它必须是:

 memcache.session_redundancy=3 

只要:

 memcache.allow_failover=1 memcache.redundancy=2 

应该在memcache.ini中。

其他人应该在php.ini。