这可能是一个愚蠢的问题,但对我来说,要找到答案并不容易。
我想开发一个在aws ec2实例上提供python应用程序的网站。 因此,我认为将Nginx和Django与uWSGI一起使用可能是最好的选择
我的问题是 考虑到可伸缩性,此系统的最佳架构是什么?以及我该怎么做?
起初,我想使用一个Nginx服务器和多个Django应用服务器,以便我可以管理资源(将请求分配到多个应用服务器,因为它的工作可能很繁重-基于协作过滤的推荐)
现在我仅使用一个ec2实例(微型服务器)进行开发
使用体系结构Nginx-> uWSGI-> Django项目
那么,拆分服务器以实现负载平衡的最佳方法是什么?以及如何使用Nginx做到这一点?
请让我知道这个问题是否太含糊!
如果您知道与此问题有关的任何污点文章或书籍,请随时推荐!
谢谢!
答案 0 :(得分:0)
如果我正确解释了您的问题,则您想使用我们服务器上的NGINX安装django应用程序。 请参阅此链接https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04
答案 1 :(得分:0)
您应该让Amazon进行负载平衡。使用其application load balancers可以轻松设置,并且性能要比您自己配置的任何功能都要好。
在每个实例上将nginx和gunicorn保持在一起,并让ALB在它们之间分配负载。
答案 2 :(得分:0)
我在使用AWS LB时遇到问题,而在使用AWS的负载平衡器时,它并没有耗尽连接,因此我使用nginx进行负载平衡,并且它在多后端gunicorn节点的单台服务器上都能很好地工作。
您可以在上游使用minimum_conn参数来解决您的目的,并且它在集群中查找最少的连接也非常快。
upstream <upstream_name> {
least_conn;
server 192.168.1.1:3000 fail_timeout=10s;
server 192.168.1.2:3000 fail_timeout=10s;
}
upstream_name将是您通过proxy_pass传递的名称