7

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

困扰我的是如何处理负载均衡器可以将其扔到任何应用程序服务器的用户?他们都共享同一个数据库集群(它聪明吗?或者我也应该在这里分开它?),所以我唯一需要关心的是会话。

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

我想到了一些简单的解决方案。

1)使其基于IP。可以说,奇数 IP 命中服务器A,偶数命中B. 但是,如果用户使用代理或 IP 经常更改怎么办?

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

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

或者也许还有其他方法可以为此对 Django 进行集群化?

4

1 回答 1

6

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

于 2010-09-20T07:53:46.870 回答