реализация алгоритма балансировки

Maxim Dounin mdounin at mdounin.ru
Fri Apr 24 19:30:00 MSD 2009


Hello!

On Fri, Apr 24, 2009 at 06:35:05PM +0400, Михаил Монашёв wrote:

> Здравствуйте, Максим.
> 
> >> Есть апстрим:
> >> 
> >>         upstream  my_backend  {
> >>                 server  10.0.0.1:80   weight=1       
> >> max_fails=20    fail_timeout=3s;
> >>                 server  10.0.0.4:80   weight=5000    
> >> max_fails=1000  fail_timeout=3s;
> >>                 server  10.0.0.6:80   weight=16000   
> >> max_fails=1000  fail_timeout=3s;
> >>                 server  10.0.0.4:80   backup;
> >>                 server  10.0.0.6:80   backup;
> >>         }
> >> 
> >> Правильно ли я понимаю, что в таком конфиге запросы пойдут следующим
> >> образом: 1 запрос на 10.0.0.1:80, потом 5000 запросов на 10.0.0.4:80,
> >> потом 16000 запросов на 10.0.0.6:80?
> 
> MD> Нет.  Веса сейчас работают приблизительно так: nginx ходит по кругу,
> MD> уменьшая каждый раз вес на 1 и пропуска бекенды с нулевым весом.  
> MD> Когда у всех бекендов вес становится нулевым - возвращаются 
> MD> исходные значения весов и всё повторяется.
> 
> MD> Т.е. в отсутствии ошибок от бекендов будет как-то так:
> 
> MD> 1 на .1
> MD> 10000 по очереди между .4 и .6
> MD> 11000 на .6.
> 
> Этот алгоритм получше, но всё таки не идеальный. С одним воркером на
> 10.0.0.6 периодически будет приходить подряд много запросов. Хотя в
> идеале, должно размазываться по времени более равномерно.
> 
> А в 0.6.31 так как ты описал или там какой-то другой алгоритм? Я
> просто выдвинул своё предположение по наблюдениям за работой 0.6.31.

Нет, я гоню.  Начиная с 0.6.6 появилась другая алгоритмика, и с 
тех пор всё не так как написано выше.

Должно распределять запросы, сохраняя соотношение между текущими 
весами.  Т.е. в твоём случае это будет как-то так:

1 запрос на .1
всё остальное - 1 запрос на .4, потом 3 запроса на .6

В 0.6.31 должно быть также.

Maxim Dounin





> 
> --
> 
> С уважением,
> Михаил Монашёв, SoftSearch.ru
> mailto:postmaster at softsearch.ru
> ICQ# 166233339
> http://michael.mindmix.ru/
> Без бэкапа по жизни.
> 
> 





More information about the nginx-ru mailing list