Estamos pasando de una configuración de 1 servidor web a una configuración de dos servidores web y necesito comenzar a compartir sesiones PHP entre las dos máquinas con equilibrio de carga. Ya hemos instalado memcached ( y empezamos ) y, por lo tanto, me sorprendió gratamente que pudiera lograr compartir sesiones entre los nuevos servidores cambiando solo 3 líneas en el php.ini
archivo ( session.save_handler y session.save_path ):
Reemplacé:
session.save_handler = files
con:
session.save_handler = memcache
Luego, en el servidor web maestro, configuré session.save_path
para que apunte a localhost:
session.save_path="tcp://localhost:11211"
y en el servidor web esclavo configuré session.save_path
para que apunte al maestro:
session.save_path="tcp://192.168.0.1:11211"
Trabajo hecho, lo probé y funciona. Pero...
Obviamente, usar memcache significa que las sesiones están en RAM y se perderán si se reinicia una máquina o el demonio memcache se bloquea: estoy un poco preocupado por esto, pero estoy un poco más preocupado por el tráfico de red entre los dos servidores web (especialmente porque escalamos) porque cada vez que alguien tiene una carga equilibrada en el servidor web esclavo, sus sesiones se recuperarán a través de la red desde el servidor web maestro. Me preguntaba si podría definir dos save_paths
para que las máquinas busquen en su propio almacenamiento de sesión antes de usar la red. Por ejemplo:
Dominar:
session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"
Esclavo:
session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"
¿Compartiría con éxito las sesiones entre los servidores Y ayudaría al rendimiento? es decir, ahorrar tráfico de red el 50% del tiempo. ¿O es esta técnica solo para failovers (por ejemplo, cuando un demonio memcache no está disponible)?
Nota : Realmente no estoy preguntando específicamente sobre la replicación de Memcache, más acerca de si el cliente PHP Memcache puede alcanzar el máximo dentro de cada demonio Memcache en un grupo, devolver una sesión si encuentra una y solo crear una nueva sesión si no encuentra una En todas las tiendas. Mientras escribo esto, creo que estoy pidiendo un poco de PHP, jajaja ...
Suponga : sin sesiones fijas, balanceo de carga round-robin, servidores LAMP