我的django驱动的站点位于基于Apache的负载均衡器后面.还有一个处理静态文件请求的服务器,但这很简单.
困扰我的是如何处理负载均衡器可以抛给任何应用程序服务器的用户?它们都共享相同的数据库集群(它是智能的吗?或者我也应该在这里分开它?),所以我唯一需要关心的是会话.
现在,会话存储在内存中,以提高性能.我宁愿把它们留在那里,所以我需要做的是确保同一个用户总是会遇到同一个app-server.
我想到了一些简单的解决方案.
1)使其基于IP.可以说,奇怪的IP号码命中服务器A
甚至数字命中了B
.但是,如果用户位于代理后面或者IP经常更改会怎样?
2)当请求到达负载平衡服务器时,我可以尝试检查它是否有cookie并查看哪个服务器应该处理它.是否可能/确实有意义?
3)我知道J2EE解决方案,使用mod_proxy_ajp
,处理这种情况,虽然我不知道幕后发生了什么.Django可以使用那里的东西吗?
或者也许还有其他一些方法来集群化Django呢?
您可以配置一个memcached集群并设置您的django以将其用于会话存储:http: //docs.djangoproject.com/en/dev/topics/http/sessions/#using-cached-sessions