ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Распределение временны х файлов по дискам



5 мая 2010 г. 13:58 пользователь Sergey Shepelev <temotor@xxxxxxxxx> написал:
>>> Один из вариантов такой: поднять кластерную файловую систему. По узлу
>>> на каждом диске. Этих ФС сейчас как грязи, многие работают поверх
>>> другой ФС. Примонтировать её в одну точку. Заодно потом будет
>>> прозрачный переход на несколько машин, когда на этой диски закончатся.
>>
>> Да, наверное так можно сделать, только у меня итак на всех этих дисках
>> MogileFS и файлы загружаются туда асинхронно скриптом после записи их
>> nginx'ом во временное место хранения.
>
> Хорошо, тогда классический вариант для раздачи с разных дисков:
> поднять по одному nginx на каждый диск, аплоады балансить на них.
У меня на двух фронт серверах стоит кроме всего прочего haproxy,
проксирующий загружаемые файлы на backend сервера-хранилища на nginx,
откуда они загружаются в MogileFS. Можно настроить haproxy для
распределения запросов не по серверам, а по их дискам - для каждого
диска в сервере создать отдельный "сервер" в конфиге haproxy:

Часть предполагаемого конфига haproxy:
backend uploadserver
        balance         url_param X-Progress-ID
        server          storage1 ip1:8001 #это винт 1 сервера 1
        server          storage1 ip1:8002 #это винт 2 сервера 1
        server          storage1 ip1:8003
        server          storage1 ip1:8004

        server          storage2 ip2:8001 #это винт 1 сервера 2
        server          storage2 ip2:8002
        server          storage2 ip2:8003

тогда потребуется один nginx на каждом сервере. Хотел сделать как-то
так, но upload_store оказывается переменные не понимает (почему?):

http {
        map $server_port $store_path {
                8001 /mnt/hd1;
                8002 /mnt/hd2;
                8003 /mnt/hd3;
                8004 /mnt/hd4;
        }
        server {
                listen ip1:8001;
                listen ip1:8002;
                listen ip1:8003;
                listen ip1:8004;
                ...
        
                location = /upload {
                        upload_store $store_path;
                        ...
                }
        }
}

Видимо придется делать несколько server на разных портах с разными
директивами upload_store, а include поможет избежать излишнего
дублирования.
Спасибо, то, что нужно.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.