Re: балансинг по жестким дискам

Борис Долгов boris at dolgov.name
Thu Jan 8 03:31:14 MSK 2009


Понятно, спасибо. В принципе, вариант не плохой - но вопрос в том, как
балансировать не случайно, а равномерно между дисками с минимальными
трудозатратами (насколько я понимаю, 255 if'ов - это неоптимально с точки
зрения конфигурации, да и стыдно будет, если кто увидит :), даже если
уместить все это в 7 if'ов, все равно будет, наверно, криво).
Свой модуль писать страшно, как на perle организовать последовательный
балансинг а не псевдорандом - не знаю. Разве что по остатку деления номера
секунды на 7... Так все равно псевдорандом, нагрузка на диски будет
приходиться пиками.



8 января 2009 г. 3:00 пользователь Maxim Dounin <mdounin at mdounin.ru>написал:

> Hello!
>
> On Thu, Jan 08, 2009 at 01:18:52AM +0300, Борис Долгов wrote:
>
> > Добрый день!
> > Хотелось бы как-нибудь хитро заставить nginx балансировать нагрузку между
> > несколькими жесткими дисками (между несколькими document_root)
> > Вижу несколько решений:
> > 1. Поднять еще 7 nginx'ов на разных портах, сделать балансинг по tcp.
> > Наверно, плохо.
> > 2. Поднять еще 7 server'ов в одном nginx'e, сделать баланскинг по tcp.
> > Наверно, плохо.
> > 3. Написать что-то легкое на fastcgi, которое будет отдавать
> > X-Accel-Redirect. Наверно, плохо?
> > 4. Написать что-то на встроенном perl'e. Хорошо ли? Как сделать
> равномерную
> > балансировку при его использовании, не прибегая к внешним средствам.
> > 5. Написать модуль, который будет сам менять document_root. Наверно,  не
> > осилю.
> >
> > Есть ли какие-то другие способы? Что из вышеперечисленного посоветуете?
> > Файлы небольшие, не больше 7 мегабайт.
>
> Я бы попробовал что-нибудь вроде
>
>    root  /path/to/$disk;
>
> и заставил переменную $disk принимать [[псевдо]случайные] значения
> от 0 до 6 соответственно.  С особым цинизмом это можно сделать
> rewrite'ом, как нибудь так:
>
>   set $disk 0;
>   if ($remote_addr ~ /\.1$/) { set $disk 0; }
>   if ($remote_addr ~ /\.2$/) { set $disk 1; }
>   ...
>   if ($remote_addr ~ /\.255$/) { set $disk N; }
>
> (главное - Игорю не показывать :)).  Ну соответственно варианты
> оптимизации - выставлять переменную встроенным перлом, сделать
> модуль выставляющий переменную.
>
> Maxim Dounin
>
>


-- 
С уважением, Борис Долгов.
icq 77556665
e-mail boris at dolgov.name
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090108/8e45d967/attachment.html>


More information about the nginx-ru mailing list