代码之家  ›  专栏  ›  技术社区  ›  kender DaveL

在多服务器环境中运行django站点-如何处理会话?

  •  6
  • kender DaveL  · 技术社区  · 14 年前

    我的django动力站点位于基于Apache的负载平衡器后面。还有一个服务器处理静态文件请求,但这很简单。

    困扰我的是如何处理一个用户,这个用户可以被负载平衡器扔到任何应用服务器上?它们都共享同一个DB集群(它是智能的吗?还是我也应该在这里将其分开?),所以我唯一需要关心的就是会议。

    现在,为了提高性能,会话存储在内存中。我宁愿把它们放在那里,所以我需要做的是确保同一个用户总是访问同一个应用服务器。

    我想到了几个简单的解决办法。

    1) 使其基于IP。比如说,奇数IP号码击中了服务器 A 而且偶数也达到了最高点 B .但是,如果一个用户在代理服务器后面,或者拥有经常变化的IP,该怎么办?

    2) 当一个请求到达负载平衡服务器时,我可以尝试检查它是否有cookie,并查看哪个服务器应该处理它。有可能/有意义吗?

    3) 我知道J2EE解决方案,使用 mod_proxy_ajp ,处理这种情况,尽管我不知道幕后发生了什么。那里的东西可以用来做Django吗?

    或者也许有其他的方法来聚集Django?

    1 回复  |  直到 14 年前
        1
  •  6
  •   Trunet    14 年前

    您可以配置memcached集群,并将django设置为将其用于会话存储: http://docs.djangoproject.com/en/dev/topics/http/sessions/#using-cached-sessions