我已经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 实例指向那里。