Подтвердить что ты не робот

Различают nginx, гапрокси, лак и uWSGI/Gunicorn

Я действительно новичок в ресурсах sys admin и только предоставил VPS с nginx (обслуживающий статические файлы) и gunicorn в качестве веб-сервера.

В последнее время я читал о других вещах. Я узнал о других инструментах:

nginx: высокопроизводительный HTTP-сервер и обратный прокси, а также прокси-сервер IMAP/POP3

haproxy: высокопроизводительный балансировщик нагрузки

varnish: кэширование обратного прокси HTTP

gunicorn: http-сервер python WSGI

uwsgi: еще один WSGI-сервер python

Я читал обо всех вышеупомянутых 5 инструментах, и я смутил себя тем, какой из них используется для какой цели? Мог ли кто-нибудь объяснить мне, что у меня есть термин, который использует каждый из инструментов, когда они используются вместе, и к какой конкретной проблеме они относятся?

4b9b3361

Ответ 1

Предположим, вы планируете разместить несколько сайтов на своем новом VPS. Посмотрите на инструменты, которые могут понадобиться для каждого сайта.

Серверы HTTP

Веб-сайт "Альфа" просто состоит из некоторого чистого HTML, CSS и Javascript. Содержимое является статическим.

Когда кто-то посещает веб-сайт Alpha, их браузер выдаст HTTP-запрос. Вы настроили (через DNS и конфигурацию сервера имен), которые запрашивают перенаправление на IP-адрес вашего VPS. Теперь вам нужен ваш VPS, чтобы иметь возможность принять этот HTTP-запрос, решить, что с ним делать, и выдать ответ, который может понять браузер посетителя. Вам нужен HTTP-сервер, например Apache httpd или NGINX, и позвольте сказать, что вы проводите некоторые исследования и в конечном итоге принимаете решение о NGINX.

Серверы приложений

Веб-сайт "Бета" является динамическим, написанным с использованием веб-платформы Django.

WSGI - это протокол, который описывает интерфейс между приложением Python (приложение django) и сервером приложений. Итак, теперь вам нужен сервер приложений WSGI, который сможет понимать веб-запросы, делать соответствующие "вызовы" для приложения различными объектами и возвращать результаты. Здесь у вас много вариантов, включая gunicorn и uWSGI. Скажем, вы проводите некоторое исследование и в конечном итоге решаете вопрос о uWSGI.

uWSGI может принимать и обрабатывать HTTPS-запросы для статического контента, поэтому, если бы вы хотели, чтобы сайт Alpha полностью обслуживался NGINX, а бета-версия сайта полностью поддерживалась uWSGI. И это было бы так.

Обратные прокси-серверы

Но uWSGI имеет низкую производительность при работе со статическим контентом, поэтому вы предпочитаете использовать NGINX для статического контента, такого как изображения, даже на бета-версии сайта. Но тогда что-то должно было бы различать запросы и отправлять их в нужное место. Возможно ли это?

Оказывается, NGINX - это не только HTTP-сервер, но и обратный прокси-сервер: он способен перенаправлять входящие запросы в другое место, например, ваш сервер приложений uWSGI или многие другие места, собирая ответ (-ы) и отправляя их обратно первоначальному запросчику. Потрясающие! Таким образом, вы настраиваете все входящие запросы для перехода в NGINX, который будет обслуживать статический контент или, при необходимости, перенаправлять его на сервер приложений.

Балансировка нагрузки с несколькими веб-серверами

Вы также размещаете сайт Gamma, который является популярным на международном уровне блоком и получает тонну трафика.

Для Gamma вы решили настроить несколько веб-серверов. Все входящие запросы отправляются на ваш исходный VPS с помощью NGINX, и вы настраиваете NGINX для перенаправления запроса на один из нескольких других веб-серверов на основе циклического режима и возвращаете ответ исходному реквестеру.

HAProxy - это веб-сервер, который специализируется на балансировке нагрузки для сайтов с высоким трафиком. В этом случае вы могли использовать NGINX для обработки трафика для сайта Gamma. В других сценариях можно настроить кластер высокой доступности: например, отправить все запросы на сервер, например HAProxy, который интеллектуально перенаправляет трафик на кластер серверов nginx, аналогичный вашему исходному VPS.

Сервер кэширования

Сайт Gamma превысил пропускную способность вашего VPS из-за огромного объема трафика. Скажем, вместо этого вы разместили сайт Delta, и причина, по которой ваш веб-сервер не может обрабатывать Delta, объясняется популярной функцией, которая очень насыщена содержанием.

Кэш-сервер может понять, какой медиа-контент часто запрашивается и хранить этот контент по-разному, чтобы его можно было быстрее обслуживать. Это достигается за счет сокращения операций ввода-вывода на диске; популярный контент может быть сохранен в памяти или виртуальной памяти. Вы можете решить объединить свой существующий стек NGINX с технологией, например Лак или Memchached, чтобы более эффективно использовать этот тип оптимизации и веб-сайт сервера Gamma.

Ответ 2

Я поставлю очень краткое (очень неформальное) описание для каждого из них, в том порядке, в котором они будут удалены, когда вы сделаете запрос из своего веб-браузера:

  • HAProxy балансирует вашу нагрузку на трафик, поэтому, если ваша веб-страница получает 5000 обращений в секунду, вы не можете справиться с этим только с одним веб-сервер, поэтому HAProxy будет балансировать образы между веб-серверами, которые вы позади.

  • Лак - это сервер кэш-памяти, он находится на переднем плане ваших веб-серверов и позади HAProxy, поэтому, если ресурс уже кэширован Varnish, он будет обслуживать сам запрос передачи запроса веб-серверам позади.

  • ngingx, gunicorn, uwsgi - это веб-серверы, которые будут за лаком и получат запросы, которые лак позволит проходить через. Эти веб-серверы используют оптимизированные проекты для обработки высоких нагрузки (запросы в секунду).

Ответ 3

Первый боевик и uwsgi - оба приложения. Другими словами, они отвечают за то, что ваш код python работает стабильно и качественно. Обычно в качестве backend для обычного веб-сервера.

Веб-сервер будет nginx, он выделяется при обслуживании статических ресурсов и передает запросы на динамический контент в приложения-серверы.

Если приведенное выше не дает достаточной производительности, вы добавляете лак между nginx и клиентом, он должен ускорять повторные запросы на одно и то же.

haproxy - это балансировщик нагрузки, если у вас несколько серверов для одного и того же контента, это программное обеспечение будет пытаться распределять запросы между ними оптимально.

так в основном:

  • ваш код python живет в сервере приложений (uwsgi или gunicorn)
  • ваши статические веб-сайты живут в nginx
  • haproxy и лак - это программное обеспечение, которое позволяет вам лучше обрабатывать очень большие количества запросов.