我已经在我的服务器中安装了memcached ,并且已经将默认的php.ini修改为:
session.save_handler = memcached session.save_path = "127.0.0.1:11211"
我正在使用Auto Scaling和Load Balancer的Amazon EC2实例(Ubuntu 16.04 LTS),但是我在脑海里对PHP memcached有个很大的疑问。 首先,解释我的问题:我已经将会话存储在Server A ,另一台Server B也在运行。 但是,当我停止Server A (即与sessions连接)时,负载平衡器将我redirect到Server B ,看起来sessions丢失,因为我断开了我的网站,并要求我再次login。
我读了这个摘录,用于在多个服务器上使用memcached进行会话存储(从这里 ):
在您的php.ini中,您应该将session.save_path设置为memcached服务器列表,例如server1:11211,server2:11211。
但我怎么能说谁将是server1:11211和server2:11211是我使用Auto Scaling,我可能有“n”个服务器?
你的memcached服务器应该在你的ASG之外。 如您所知,状态不能存储在ASG实例中。 因此,要么使用AWS的Elasticache服务,要么运行您自己的memcached服务器,然后将您的ASG实例指向那里。