Конфигурация сервера веб / приложений (Nginx / uWSGI / Django) - PullRequest
0 голосов
/ 11 октября 2018

Это, вероятно, глупый вопрос, но для меня нелегко найти ответ.

Я хочу разработать веб-сайт, который обслуживает приложение python на экземпляре aws ec2.Поэтому я думаю, что, вероятно, лучше всего использовать Nginx и Django с uWSGI

. Мой вопрос: Какая архитектура для этой системы является лучшей, учитывая масштабируемость?и как я могу это сделать?

Сначала я подумал об использовании одного сервера Nginx и нескольких серверов приложений Django, чтобы я мог управлять ресурсами (распределять запросы по нескольким серверам приложений, поскольку его работа может быть довольно тяжелой).- рекомендация, основанная на совместной фильтрации)

Сейчас я занимаюсь разработкой, используя только один экземпляр ec2 (крошечный сервер)

Используя архитектуру Nginx -> uWSGI -> Django project

ИтакКакой лучший способ разделить серверы для балансировки нагрузки?и как я могу это сделать с помощью Nginx?

Пожалуйста, дайте мне знать, если этот вопрос слишком двусмысленный!

Если вам известны какие-либо блот-посты или книги, связанные с этим вопросом, пожалуйста, не стесняйтесь рекомендовать!

Спасибо!

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Вы должны позволить Amazon выполнить балансировку нагрузки.Используйте их балансировщики нагрузки приложения , которые намного проще в настройке и намного более производительны, чем все, что вы можете настроить самостоятельно.

Держите nginx и gunicorn вместе на каждом из ваших экземпляров и позволяйте ALB распределятьнагрузка между ними.

0 голосов
/ 11 октября 2018

У меня была проблема с AWS LB, хотя при использовании балансировщика нагрузки от AWS соединение не истощалось, поэтому я использовал nginx для балансировки нагрузки, и он хорошо работал на одном сервере для узлов с несколькими бэкэнд-ганкорнами.

вы можете использовать параметр less_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

0 голосов
/ 11 октября 2018

Если я правильно интерпретировал ваш вопрос, вы хотите установить приложение django с нашего сервера NGINX.Ссылка на эту ссылку https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...