【问题标题】:Load balancing and session management with CakePHPCakePHP 的负载平衡和会话管理
【发布时间】:2015-09-28 01:33:01
【问题描述】:

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

注意:我使用的是 CakePHP 2.6.2

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

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

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

谢谢!

【问题讨论】:

    标签: php session cakephp load-balancing


    【解决方案1】:

    不使用基于文件的会话非常重要,您可能已经知道了。相反,您必须使用基于数据库、redis 或 memcached 的会话。

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

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

    【讨论】:

    • 当然,粘性会话是最好的,但不幸的是我不能使用它。但我想我的问题走得太远了。我只是想知道 CakePHP 中是否有内置的方法来处理这个问题(在服务器切换时保持会话)。
    • 我认为应该避免粘性会话。虽然它解决了一些问题,但它使向池中添加/删除服务器变得复杂,并使服务器维护更加困难,因为您无法轻松地从池中删除服务器。
    • 您可以在切换服务器时使用数据库会话保持会话处于活动状态。使用数据库会话,您的会话数据存储在数据库服务器上,而不是单独的网络服务器上。这使用户可以轻松地在服务器之间移动。
    • 我设法通过数据库会话和一些工作解决了我的问题。感谢您的时间和帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2014-05-08
    • 2012-07-22
    • 1970-01-01
    • 2018-12-20
    • 2012-03-12
    • 2011-01-01
    相关资源
    最近更新 更多