我们正在从1个Web服务器设置过渡到两个Web服务器设置,我需要开始在两个负载平衡的计算机之间共享PHP会话。我们已经安装并启动了memcached,因此我感到很惊讶,我只需更改文件中的3行(session.save_handler和session.save_path)就可以完成新服务器之间的共享会话:php.ini
我更换:
session.save_handler = files
与:
session.save_handler = memcache
然后在主Web服务器上,将设置session.save_path
为指向localhost:
session.save_path="tcp://localhost:11211"
在从属网络服务器上,我将设置session.save_path
为指向主服务器:
session.save_path="tcp://192.168.0.1:11211"
工作完成,我对其进行了测试,并且可以正常工作。但...
显然,使用memcache意味着会话在RAM中,如果计算机重新启动或memcache守护进程崩溃,会话将丢失-我对此有点担心,但是我对两个Web服务器之间的网络流量有些担心(尤其是我们会扩大规模),因为只要有人将负载平衡到从属Web服务器上,他们的会话就会从主Web服务器通过网络获取。我想知道是否可以定义两个,save_paths
以便机器在使用网络之前先查看自己的会话存储。例如:
主:
session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"
奴隶:
session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"
这样可以在服务器之间成功共享会话并提高性能吗?即节省网络流量50%的时间。还是这种技术仅用于故障转移(例如,当一个内存缓存守护程序无法访问时)?
注意:我并不是真正在问有关Memcache复制的问题-有关PHP Memcache客户端是否可以在池中的每个Memcache守护程序内部达到峰值,如果找到一个则返回一个会话,如果找不到则仅创建一个新会话在所有商店。在写这篇文章的时候,我想我在向PHP提出很多要求,哈哈...
假设:没有粘性会话,循环负载平衡,LAMP服务器。