Re: проблема с upstream_hash

Konstantin Svist fry.kun на gmail.com
Пт Июн 22 21:04:20 UTC 2012


On 06/22/2012 01:38 PM, Konstantin Svist wrote:
> Баг: если в списке upstream есть хосты с IP адресом 127.0.0.1 то 
> upstream_hash работает неправильно.
>
> Понятно что это 3rd party plugin, но в его коде нету ничего 
> подозрительного - скорее nginx что-то хитро оптимизирует...
>
>
> upstream  cl1  {
>         hash        $arg_key;
>         hash_again  10;
>         server  srv1:6381;
>         server  srv1:6411;
>         server  srv1:6436;
>         server  srv1:6437;
>         server  srv2:6381;
>         server  srv2:6411;
>         server  srv2:6436;
>         server  srv2:6437;
>     }
>
> Запрос на srv1:
>
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 http script var: 
> "3197dc0f345aae7132ab1e3b432ddb00"
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 upstream_hash: hashed 
> "3197dc0f345aae7132ab1e3b432ddb00" to 3
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 upstream_hash: 
> Starting with 3
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 upstream_hash: get 
> upstream request hash peer try 10
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 upstream_hash: chose 
> peer 3 w/ hash 19143 for tries 10
>
> Запрос на любом другом хосте:
>
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 http script var: 
> "3197dc0f345aae7132ab1e3b432ddb00"
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 upstream_hash: hashed 
> "3197dc0f345aae7132ab1e3b432ddb00" to 7
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 upstream_hash: 
> Starting with 7
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 upstream_hash: get 
> upstream request hash peer try 10
> 2012/06/22 12:00:00 [debug] 11111#0: *1234567890 upstream_hash: chose 
> peer 7 w/ hash 19143 for tries 10
>

Хотя вообще srv1 видит себя как "127.0.0.1" и "192.168.0.123", а все 
остальные его видят как только "192.168.0.123"... тогда upstream_hash 
видит не 8 а 12 хостов...
Значит ли это что srv1 может сам себе послать в 2 раза больше запросов 
чем кажется должен по конфигу?




Подробная информация о списке рассылки nginx-ru