多个服务器中的Memcached和PHP会话

时间:2015-06-16 21:29:13

标签: php memcached

我想知道memcached如何管理php会话的缓存我的意思。我想设计一个扩展的php应用程序,并在每个http-PHP服务器中包含一个memcached层(db,app cache和session caching),但是如果memcached不复制de data,当用户来到webserver1时看不到相同的webserver2中的会话。

需要复制memcached1和memcached2来处理php会话 提前谢谢。

问候。

2 个答案:

答案 0 :(得分:0)

虽然我同意这里毫无疑问,但我们可以尝试帮助OP了解memcache的工作原理。

当您使用内存缓存内存缓存时,如何设置它取决于您当前的基础架构。

例如,如果您只有1个Web服务器,则可以在同一台计算机上安装memcache,同时也可以在该计算机上安装数据库层。这有助于提高站点的性能,因为站点可以从memcache(在内存中)而不是从数据库(在磁盘上,并且读取速度较慢)获取数据。以这种方式使用它很好,但是由于您的站点需要更好的性能或可伸缩性,您可能会在负载均衡器后面启动一组Web服务器。

这是事情变得有点棘手的时候。你拥有所有这些机器,并且你认为你需要在每台机器上都有memcache,那么我们如何复制这些实例呢?简单的答案是你不要。如果您有多个Web服务器,最好的方法是将memcache放在它自己的服务器(或负载均衡器后面的集群)上,这样每个Web服务器都会为内存缓存服务器命中相同的IP地址。 / p>

您不必担心保持同步,因为memcache的工作方式是创建一个散列,指定密钥已分配给哪个服务器(当您有一个memcache服务器集群时)。

基于这个问题,您似乎需要执行以下操作之一:

1。)阅读系统架构
2.)雇用某人来构建您的系统层。

我最好的建议是为memcache实例使用单个服务器,并将Web服务器设置为使用memcache,而不是尝试在每个Web服务器上运行memcache。

答案 1 :(得分:0)

约瑟夫。

我坚持你的观点,我已经使用一个单独的memcached服务器(以及redis)来测试架构。我的意图是将应用程序服务器“打包”在一个单元(docker)中,并测量负载参数以部署新实例,以扩展基础结构。

我找到了这个。

https://www.digitalocean.com/community/tutorials/how-to-share-php-sessions-on-multiple-memcached-servers-on-ubuntu-14-04

感谢您的回复!

问候。