Varnish处理用户Web会话

时间:2012-05-18 13:46:01

标签: session varnish

我有来自2个大型托管组织的2个系统管理员告诉我Varnish将处理Web服务器之间的会话共享。我无法在网上找到任何支持这一点,事实上发现this这个家伙明确表示没有。我不知道这个人是Varnish员工还是贡献者或者是什么。

只是在这一点上寻找更多验证。

1 个答案:

答案 0 :(得分:4)

会话允许您存储许多内容(购物车,登录用户等),并且通常由Cookie标识(例如sessionid)。 Web服务器知道如何使用此sessionid获取会话(并且可以访问/更新您的购物车),但varnish仅处理cookie。 Varnish可以对后端进行负载均衡查询,无论cookie值或基于某些规则(您需要编写自己的清漆配置)。

但是,Web服务器之间会话共享的一个挑战是Web服务器是否可以访问由另一个Web服务器创建/更新的会话。在许多Java Web容器中,会话默认存储在内存中(只有一个Web服务器),负载均衡器实现某种“粘性会话”机制(将会话发送到特定后端的用户,可以使用清漆轻松设置)。另一种选择是将(序列化的)会话值存储在共享数据库中,以便任何后端都可以检索它们(如果Web服务器出现故障,它们将继续工作)。第三种选择是将会话完全序列化为cookie并停止使用sessionids,但这很复杂(有限的大小,带宽,安全性需要一些签名机制,但扩展很棒)。

所有方法都有优点和缺点。你必须选择,清漆支持任何选项,但不会'自动'做你想要的,所以准备写一些清漆配置......

如果您要描述如何进行负载均衡或尝试实现的目标,您可以获得更具体的答案。