当负载均衡器与后端的不同Web服务器一起使用时,如何维护同一用户的会话。换句话说,假设存在负载均衡器以在不同服务器之间分配负载,并且用户被定向到存储其会话的一个服务器,然后下次将同一用户定向到第二服务器。服务器如何知道它是否是同一个用户?如何维护它是两个服务器上的同一个用户
答案 0 :(得分:0)
我通过将会话存储表单文件更改为另一个可以处理tcp连接的系统(在我的情况下是memcache,但你甚至可以使用mysql)来实现它。
memcache解决方案: 对于memcache扩展
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"
表示memcacheD
session.save_handler = memcached
session.save_path = "localhost:11211"
,但当然,您应该将localhost更改为您的dns / ip
中查看答案 1 :(得分:0)
您的负载均衡器可以配置为将同一用户/客户端定向到同一服务器。唯一一次变得“棘手”的是在SSL和不安全的流量之间跳转,但仍然可以在负载均衡器上配置。
如果由于某种原因,您无法执行此操作,则可以在SQL Server中存储/检索会话状态。请参阅this article for direction.
答案 2 :(得分:0)
使用数据库进行会话存储。 (注意SQL注入,因为持有PHPSESSID的cookie来自客户端。)
从这里开始: http://php.net/manual/en/function.session-set-save-handler.php