Django集群部署

时间:2009-12-11 13:14:12

标签: django cluster-computing

我在负载均衡器后面有五个节点,我正在尝试确定基于Django的站点的最佳配置。

每个节点都可以访问Postgres,mod_wsgi,Apache,Lighttpd,memcached,pgpool2(用于数据库复制)和glusterfs(用于媒体文件复制),并且正在运行Ubuntu 8.04LTS。

到目前为止,设置是运行Apache / Lighttpd / memcached / pgpool2的四个节点,所有节点都读/写一个运行“master”Postgresql的主节点。四个Web节点中的每一个都运行Postgres,以便通过pgpool从主服务器进行复制。

所以,我的问题是:你如何配置这个设置和/或你会改变什么,以便在可能的情况下没有单点故障?

2 个答案:

答案 0 :(得分:1)

这听起来像是一个很好的设置,虽然很难确切知道你的设置是什么样的。在内存等方面以及您希望处理的流量方面。

您可能需要考虑使用Django的multidb支持并拥有一个只读的postgres实例(使用数据库路由将读取指向特定应用程序的只读)。这可以提供一些非常好的速度改进 - 目前你可能在单个postgres实例上存在潜在的瓶颈,这取决于你的数据库工作量有多大。

正如@ashwoods建议的那样,它可能正在研究gunicorn和nginx。我想目前你只使用Apache运行mod_wsgi?和lighttpd的静态文件?使用nginx,您可以将它与许多wsgi服务器一起使用,它也适用于静态文件。

答案 1 :(得分:0)

设置对我来说非常好。我会考虑使用gunicorn / uwsgi + nginx 。我也会使用pbbouncer进行基准测试,尽管pgpool2提供了更多开箱即用的功能。