【问题标题】:Web / App Server Configuration (Nginx / uWSGI / Django)Web / 应用服务器配置 (Nginx / uWSGI / Django)
【发布时间】:2019-03-15 23:57:07
【问题描述】:

这可能是一个愚蠢的问题,但对我来说找到答案并不容易。

我想开发一个在 aws ec2 实例上为 python 应用程序提供服务的网站。 所以我认为将 Nginx 和 Django 与 uWSGI 一起使用可能是最好的

我的问题是 考虑到可扩展性,这个系统的最佳架构是什么?我该怎么做?

一开始,我想用一个 Nginx 服务器和多个 Django 应用服务器,这样我就可以管理资源(将请求分发到多个应用服务器,因为它的工作可能相当繁重 - 基于协同过滤的推荐)

现在我只使用一个 ec2 实例(小型服务器)进行开发

使用架构 Nginx -> uWSGI -> Django 项目

那么,拆分服务器以实现负载平衡的最佳方法是什么?以及如何使用 Nginx 做到这一点?

如果这个问题太含糊,请告诉我!

如果您知道与此问题相关的任何污点帖子或书籍,请随时推荐!

谢谢!

【问题讨论】:

  • 请参阅How to Ask 页面以获得澄清此问题的帮助。

标签: django nginx server


【解决方案1】:

如果我正确地解释了你的问题,你想用 NGINX 我们的服务器安装 django 应用程序。 参考这个链接https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04

【讨论】:

    【解决方案2】:

    你应该让亚马逊做负载平衡。使用他们的application load balancers,它比您自己配置的任何东西都更容易设置并且性能更高。

    将 nginx 和 gunicorn 放在每个实例上,让 ALB 在它们之间分配负载。

    【讨论】:

      【解决方案3】:

      我在使用 AWS LB 时遇到问题,在使用 AWS 的负载均衡器时,它没有耗尽连接,因此我使用 nginx 进行负载均衡,它在单个服务器上为多后端 gunicorn 节点提供了良好的服务。

      您可以在上游使用 least_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 传递的名称

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-05
        • 1970-01-01
        • 2015-07-21
        • 2020-01-23
        • 2011-06-26
        • 1970-01-01
        • 2019-02-05
        • 2016-11-10
        相关资源
        最近更新 更多