Всем привет!
У меня вот есть вопрос по тому, как в 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битной архитектуре.