![如何使用 PHP memcached 进行具有自动缩放功能的会话存储?](https://linux22.com/image/695039/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20PHP%20memcached%20%E8%BF%9B%E8%A1%8C%E5%85%B7%E6%9C%89%E8%87%AA%E5%8A%A8%E7%BC%A9%E6%94%BE%E5%8A%9F%E8%83%BD%E7%9A%84%E4%BC%9A%E8%AF%9D%E5%AD%98%E5%82%A8%EF%BC%9F.png)
我已经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:11211
Auto Scaling,并且我可能有“n”台服务器呢?
答案1
您的 memcached 服务器应位于 ASG 之外。如您所知,状态不能存储在 ASG 实例中。因此,请使用 AWS 的 Elasticache 服务或运行您自己的 memcached 服务器,然后将您的 ASG 实例指向那里。