Melhor maneira de armazenar sessões de uma maneira de alta disponibilidade / alto desempenho no ambiente de vários servidores

3

Eu tenho um aplicativo (Magento) que possui uma camada de armazenamento de sessão abstraída. Estou tentando visualizar a melhor maneira de armazenar sessões.

banco de dados mysql? Estou pensando em um banco de dados dedicado com um innodb_buffer_pool_size muito grande, basicamente como o Cache de RAM com backup em disco. Eu estou pensando em ter um DB separado apenas para sessões e colocar as outras coisas DB em um servidor DB / DB separado.

Memcache? Isso é ótimo, mas estou um pouco preocupado com o que acontece se o servidor falhar? Eu perderia essa partição de sessões com o travamento porque, pelo que entendi, o Memcache não é distribuído. Posso fazer isso distribuído? (Acabei de dizer que eu posso usar o módulo pecl memcache > = 3

armazenamento de arquivos de memória tmpfs? Isso funciona, mas eu teria que sincronizar a sessão na gravação com todos os outros servidores usando o rsync ou algo que detecta quando uma gravação acontece nessa pasta. Tenho certeza de que algo tem que existir para isso.

Outra solução em que não estou pensando? Amaria ideias.

Obrigado!

    
por Christian Scarlet 09.08.2011 / 19:43

1 resposta

2

Memcache? This is great but I am a bit concerned with what happens if the server crashes? I would lose that partition of sessions with the crash because from what I understand Memcache is not distrubuted. Can I make it distrubuted? ( I was just told that I can use pecl memcache module >= 3

Estou usando o repcached . É iniciado como abaixo:

  • no servidor 1:

    memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached.pid -x <server2_ip>

  • no servidor 2:

    memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached.pid -x <server1_ip>

Configuração para a extensão PHP Memcache:

extension=memcache.so
memcache.allow_failover = 1
memcache.redundancy = 1
memcache.session_redundancy=2
memcache.hash_strategy = consistent

E o manipulador de sessão em php.ini :

session.save_handler = memcache
session.save_path="tcp://ip1:11211, tcp://ip2:11211"
    
por 21.08.2011 / 16:14