ПРОЕКТЫ 


  АРХИВ 


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: балансинг по жестким дискам


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: балансинг по жестким дискам
  • From: "Alexey Kovyrin" <alexey@xxxxxxxxxxx>
  • Date: Wed, 7 Jan 2009 20:25:45 -0500
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=9/ABH7U5pgJU2zMiToWFy3BSqHZxNV4bO0ySQMX4qxM=; b=FCqTO1i5hO+FBVyci4jkEfPMstZv3buvPQTXalWiRQd+soIVBVeIq6Tpr8iSNOpVBz XnXP/s+SthIHDmdrFMVO3P1WkPQkExpal3amppbBvYINd29VDbjDjNW0Ge5itSba0Btf Zvtp5D0iG1uJyjdwp6eOEChIVjt05mv822RH8=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=voFxWIWLnqVqaNi504QP7T1M/4UCs2c1cmknW+6wynzgWSrVMLNqDA5Ze7w0lJguUO XnwtsFEkT2OraTPgR3KOcRkOG+wTUPUSxFoL5JPKhif5Ceh5CXbVilws066qcRJjffCa bFB+2P8iveIkBlE9RqgracXi+kwxwgZs/qN+Y=
  • In-reply-to: <91c9771b0901071631l24a9f669w918e1d34b820b116@xxxxxxxxxxxxxx>
  • References: <91c9771b0901071418j255bf9d9v9832dbc2fca72956@xxxxxxxxxxxxxx> <20090108000029.GB12039@xxxxxxxxxx> <91c9771b0901071631l24a9f669w918e1d34b820b116@xxxxxxxxxxxxxx>

crc32($ip, $uri, $time) % number_of_disks - будет достаточно равномерно.

2009/1/7 Борис Долгов <boris@xxxxxxxxxxx>:
> Понятно, спасибо. В принципе, вариант не плохой - но вопрос в том, как
> балансировать не случайно, а равномерно между дисками с минимальными
> трудозатратами (насколько я понимаю, 255 if'ов - это неоптимально с точки
> зрения конфигурации, да и стыдно будет, если кто увидит :), даже если
> уместить все это в 7 if'ов, все равно будет, наверно, криво).
> Свой модуль писать страшно, как на perle организовать последовательный
> балансинг а не псевдорандом - не знаю. Разве что по остатку деления номера
> секунды на 7... Так все равно псевдорандом, нагрузка на диски будет
> приходиться пиками.
>
>
>
> 8 января 2009 г. 3:00 пользователь Maxim Dounin <mdounin@xxxxxxxxxx>
> написал:
>>
>> 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@xxxxxxxxxxx
>



-- 
Alexey Kovyrin
http://kovyrin.info/


 




Copyright © Lexa Software, 1996-2009.