2016-12-05 4 views
0

Прежде всего, я объясню вам свою ситуацию. Я создаю сервер для хранения и извлечения данных для моего телефонного приложения. Я новичок в NGINX. То, что я знаю, указывает на использование балансировки нагрузки/обратного прокси-сервера, чтобы повысить производительность и надежность за счет распределения рабочей нагрузки на нескольких серверах. Но я не понимаю, когда он работает с файлом изображения/видео. Скажем ниже, мой файл конфигурации NGINXКак обратный прокси-сервер прокси-сервера NGINX загружает или загружает

upstream backend { 
    server backend1.example.com; 
    server backend2.example.com; 
    server backend3.example.com; 
}  
server { 
    listen 80; 

    server_name example.com; 

    location/{ 
     proxy_pass http://backend; 
    } 
} 

У меня здесь несколько вопросов.

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

Во-вторых, если я просто сохраню его на отдельном сервере, который хранит только изображение, а я запрашиваю и загружаю изображение или видеофайл. Я прокси-сервер к указанному серверу. Тогда какая точка балансировки нагрузки с файлом изображения/видео с момента обратного прокси - повысить производительность и надежность за счет распределения рабочей нагрузки на нескольких серверах?

В-третьих, amazon s3 действительно лучше хранить файл? Это дешевле?

Я ищу решение, которое может быть выполнено на моем собственном сервере рядом с использованием третьих сторон.

Thx для любой помощи !!

+1

Если на ваших серверах нет общего общего хранилища, вам необходимо всегда отправлять заказы и получать их на «один конкретный сервер», возможно, исходя из местоположения. НТН. – rogerdpack

+0

@rogerdpack thx для ответа. Как я могу создать общее разделяемое хранилище? Любое предложение ссылки? Кроме того, вы предложили использовать amazon s3 для обработки этих файлов? – user3651999

ответ

2

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

Первые два варианта логически одинаковы и обеспечивают перепад, что повышает надежность.

Третий вариант, как вы заметили, не повышает надежность (может быть, каким-то образом, если один сервер не работает второй, он все равно может обслуживать некоторые файлы). Однако это может повысить производительность, если у вас много одновременных запросов для разных файлов и равномерно распределить их между серверами. Это достигается не благодаря балансировке нагрузки nginx, а путем перенаправления на разные серверы на основе запроса (например, имя файла или ключ).

Для решения общей памяти вы можете использовать, например, NFS. Есть много ресурсов, которые углубляются в деталях, например https://unix.stackexchange.com/questions/114699/nfs-automatic-fail-over-or-load-balanced-or-clustering

Для дублированного решения для загрузки вы можете отправить файл дважды с клиента или сделать его на стороне сервера с помощью некоторого кода. Решение на стороне сервера имеет преимущество однофайлового трафика от клиента и отправки на второй сервер только в быстрой сети. В простом случае это может быть достигнуто, например, путем приема файла в сервлете, хранения входящих данных на диск и одновременной загрузки на другой сервлет на втором сервере через http или другой протокол.

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

Здесь идет S3, готовое к использованию распределенное/общее хранилище, с простым API, интеграцией, клиентами и разумной ценой. Для простого решения обычно это не дешевле с точки зрения $ за хранение, но гораздо дешевле с точки зрения R & D. Он также имеет возможность обслуживать мухи и контент через http (сбалансированный, надежный и распределенный), так что вы можете скачать файл на клиенте непосредственно с хостов S3 или делать постоянные или временные переадресации с ваших HTTP-серверов.

 Смежные вопросы

  • Нет связанных вопросов^_^