Другими словами, вы хотите лоад балансинг, такой чтобы из списка
серверов в любой момент использовались минимум 2. Первый несломанный и
второй несломанный.
Как отличить "сломанный" и "не справляется с загрузкой"?
Не скажу точно, но, возможно, haproxy это умеет.
Хотя ваша задача очень странная. Если есть 4 сервера - равномерно
загружайте 4 сервера. Юзерам и серверам будет лучше.
2009/10/8 Victor Lavrenko <lavrenko@nigma.ru>:
> Всем привет!
>
> У меня вот есть вопрос по тому, как в upstream работает backup.
>
> Допустим, программисты понаписали софтину, которая на имеющемся трафике на
> одном сервере работать не может, может только на двух. Хочется сделать так,
> чтобы если один из этих серверов сломался, то вместо сломанного начал бы
> работать бэкапный, но если никто не сломался, бэкапные сервера занимаются
> своими делами. Ну т.е. конструкция такая:
>
> upstream backend {
> server frodo:80 max_fails=1 fail_timeout=10s;
> server sam:80 max_fails=1 fail_timeout=10s;
>
> server merry:80 backup max_fails=1 fail_timeout=10s;
> server pippin:80 backup max_fails=1 fail_timeout=10s;
> }
>
> В нормальной ситуации работают только frodo и sam, остальные заняты своими
> делами.
>
> Если frodo сломался, то работают sam и merry. Если sam сломался, работают
> frodo и merry.
>
> Если сломался и frodo, и sam, то работают merry и pippin.
>
> Можно ли такую систему организовать имеющимися средствами?
>
> Еще более сложная ситуация, когда merry и pippin сами по себе нагружены, и
> если сломается frodo, то merry не может держать ту же нагрузку, что и frodo
> -- нужно, чтобы merry и pippin вдвоем помогали sam'у.
>
> Такое возможно сделать?
>
> С уважением,
> Виктор Лавренко
> Nigma.ru
>
> P.S. Очень рекомендую модуль nginx-upstream-fair, спасибо Игорю. Я его
> немного подебажил (Гносек уже залил мой патч), и он теперь без проблем
> работает на 64битной архитектуре.
>