Estamos passando de uma configuração de 1 servidor para uma configuração de dois servidores e preciso começar a compartilhar sessões PHP entre as duas máquinas com balanceamento de carga. Já instalamos o memcached ( e iniciamos ) e, por isso, fiquei agradavelmente surpreso ao concluir as sessões de compartilhamento entre os novos servidores alterando apenas três linhas no php.ini
arquivo ( session.save_handler e session.save_path ):
Eu substituí:
session.save_handler = files
com:
session.save_handler = memcache
Em seguida, no servidor da web principal, defino o session.save_path
ponto para localhost:
session.save_path="tcp://localhost:11211"
e no servidor escravo, defino o session.save_path
ponto para o mestre:
session.save_path="tcp://192.168.0.1:11211"
Trabalho feito, eu testei e funciona. Mas...
Obviamente, usar o memcache significa que as sessões estão na RAM e serão perdidas se uma máquina for reinicializada ou o daemon do memcache travar - estou um pouco preocupado com isso, mas estou um pouco mais preocupado com o tráfego de rede entre os dois servidores da web (especialmente como aumentamos) porque sempre que alguém é balanceado por carga para o servidor escravo, suas sessões serão buscadas na rede a partir do servidor web mestre. Eu queria saber se eu poderia definir dois save_paths
para que as máquinas olhem em seu próprio armazenamento de sessão antes de usar a rede. Por exemplo:
Mestre:
session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"
Escravo:
session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"
Isso compartilharia sessões com êxito entre os servidores e ajudaria no desempenho? ou seja, economize tráfego de rede 50% do tempo. Ou essa técnica é apenas para failovers (por exemplo, quando um daemon do memcache está inacessível)?
Nota : Na verdade, não estou perguntando especificamente sobre a replicação do memcache - mais sobre se o cliente PHP do memcache pode entrar dentro de cada daemon do memcache em um pool, retornar uma sessão se encontrar um e criar apenas uma nova sessão se não encontrar um em todas as lojas. Enquanto escrevo isso, estou pensando em pedir um pouco demais ao PHP, lol ...
Suponha : sem sessões complicadas, balanceamento de carga round-robin, servidores LAMP.