Sinatra sinatra+thin+nginx 的 session 问题

sunmoonstr · 2012年11月05日 · 最后由 iBachue 回复于 2012年11月05日 · 3962 次阅读

我这里有个基于 ruby sinatra 的 Web 应用,使用的是 thin 服务器,之前部署在一台服务器上访问没有问题。考虑到如果访问客户量增大需要负载平衡,我搭建了 Nginx 反向代理服务器,现在测试结果是,如果一个用户登录到系统中,该系统崩溃了的话,Nginx 可以将其指向到另外的服务器,但是该用户就被强制退出了系统,需要重新输入用户名密码登录,这样对用户太不方便了。请问 Nginx 后面的多台 thin 服务器如何构建成 cluster,并且实现 session 的共享或复制?或者有没有其他好的方案实现上述功能?

  1. try HAProxy
  2. 使用 memcached 或者数据库存储 session(cookie 也可以,但是容量有限制),sinatra 不了解,Rails 可以很容易的实现这个方法。

#1 楼 @iBachue 在 HAProxy 中能够实现 session 的共享吗?我试过了,跟 Nginx 结果一样,如果一个用户登录到系统中,该系统服务器崩溃了的话,Nginx 可以将其指向到另外的服务器,但是该用户就被强制退出了系统。能够提供一下,HAProxy 中实现 session 共享的资料。谢谢。

#2 楼 @sunmoonstr 额 HAProxy 是用来实现分布式的 web server,与 session 无关,session 共享还是需要使用 memcached 或是数据库来实现的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号