管理不同服务器之间的会话

时间:2012-07-03 15:25:27

标签: php asp.net

当负载均衡器与后端的不同Web服务器一起使用时,如何维护同一用户的会话。换句话说,假设存在负载均衡器以在不同服务器之间分配负载,并且用户被定向到存储其会话的一个服务器,然后下次将同一用户定向到第二服务器。服务器如何知道它是否是同一个用户?如何维护它是两个服务器上的同一个用户

3 个答案:

答案 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

在手册Sessions support

中查看

答案 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