使用 CakePHP 进行负载平衡和会话管理

Load balancing and session management with CakePHP

这个精彩网站上的第一个问题 ;)

注意:我使用的是 CakePHP 2.6.2

所以,这是我的问题: 我后面有一个负载平衡器和 2 个网络服务器。 我在这些服务器上放置了一个网站,由于负载平衡器不使用会话粘性(而且我无法激活它,服务器不是我的),我遇到了会话问题(当平衡器将我从一个服务器到另一个)。

服务器之间唯一的共享资源是数据库,所以我考虑使用 CakePHP 数据库会话存储。

但此时我想知道 cakephp 中是否有任何内置解决方案允许在服务器之间切换或复制会话。

谢谢!

正如您可能已经发现的那样,不使用基于文件的会话非常重要。相反,您必须使用基于数据库、redis 或 memcached 的会话。

理想情况下,您不想阻止人们在服务器之间移动。粘性会话似乎是一个很好的解决方案,直到您由于某些问题而失去服务器。相反,我发现将所有网络服务器轻松替换的无共享架构作为目标要好得多。

您可能需要解决的另一件事是文件上传。在多服务器设置中,您不能简单地将上传的文件保存到本地磁盘,因为以下请求可能不会到达同一台服务器。相反,我建议您查看 blob 存储提供商,例如 Amazon S3、Azure blob 存储和 Rackspace 云文件。