如何使用 PHP memcached 进行具有自动缩放功能的会话存储?

如何使用 PHP memcached 进行具有自动缩放功能的会话存储?

我已经memcached在我的服务器上安装了并且我将默认设置修改php.ini为:

session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

我正在使用带有 Auto Scaling 和负载均衡器的 Amazon EC2 实例 (Ubuntu 16.04 LTS),但我对 有一个大疑问PHP memcached。首先,解释一下我的问题:我已将 存储sessions在 中Server A,并且还有另一个Server B也在运行。但是,当我停止Server A(我已连接到sessions)时,负载均衡器会将我重定向到Server B,看起来好像sessions丢失了,因为我已断开与网站的连接,他要求我再次登录。

我读过这篇关于在多台服务器上使用 memcached 进行会话存储的摘录(来自这里):

在您的 php.ini 中您应该将 session.save_path 设置为 memcached 服务器列表,例如 server1:11211,server2:11211。

但是我怎样才能知道谁将会server1:11211使用server2:11211Auto Scaling,并且我可能有“n”台服务器呢?

答案1

您的 memcached 服务器应位于 ASG 之外。如您所知,状态不能存储在 ASG 实例中。因此,请使用 AWS 的 Elasticache 服务或运行您自己的 memcached 服务器,然后将您的 ASG 实例指向那里。

相关内容