Redundância da sessão do memcached em PHP

3

Estou tentando seguir Como Compartilhar Sessões PHP em Vários Servidores Memcached artigo e implementar isso no meu ambiente:

/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
# 

ambos os sistemas são RHEL6 e estão em execução 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 wise: .142 é capaz de chegar a .143:11211 e .143 é capaz de chegar a .142:11211 , SELinux está no modo Permissive .

Eu posso ver alguns trechos armazenados em um servidor memcached , mas não em outro.

O que estou fazendo de errado?

    
por alexus 29.01.2015 / 17:32

2 respostas

4

Esse artigo da DigitalOcean que eu escrevi tem memcache.session_redundancy , seu arquivo de configuração usou memcache.redundancy , ambos são diferentes e pode ser a razão pela qual ele não está funcionando como esperado.

O valor padrão de memcache.redundancy é 1 e funciona bem para essa configuração.

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'

link

Editar

Seu comentário:

IP are in reverse on another server, but syntax is the same.

Aqui é onde está o problema, o session.save_path deve ser exato em todos os servidores .

Portanto, os dois servidores devem ter 'tcp://192.168.52.143:11211,tcp://192.168.52.142:11211'

Leia o Passo Dois desse artigo, todos os três servidores têm exatamente a mesma ordem.

Editar # 2

O valor de memcache.session_redundancy deve ser igual a não. de servidores + 1 devido a um bug no PHP .

Então, no seu caso, deve ser:

memcache.session_redundancy=3
    
por 29.01.2015 / 18:54
-1

Apenas:

memcache.allow_failover=1
memcache.redundancy=2

deve estar no memcache.ini.

Os outros devem estar no php.ini.

    
por 29.01.2015 / 18:05