У меня есть специальный инструмент, который генерирует часть конфигурации nginx в следующей форме, например:
upstream backend {
ip_hash;
server server1:8080;
server server2:8080;
server localhost:8080 backup;
}
Время от времени некоторые серверы выходят из строя, некоторые повышаются, и следующее обновление может привести к следующему:
upstream backend {
ip_hash;
server server1:8080;
server server3:8080;
server server2:8080 down;
server localhost:8080 backup;
}
Как видите, появился server3, а server2 помечен. Мой вопрос следующий: заботится ли nginx о порядке серверов, представленных в конфигурации? Нужно ли мне сортировать вывод моего настраиваемого инструмента?
В этом примере первоначальный порядок был изменен, и я не знаю, правильно ли его обработает nginx.
IIRC, с методом ротации ip_hash, порядок имеет значение. Nginx хеширует IP-адрес клиента, а затем отправляет клиентов одному из элементов списка. Если вы измените порядок, ip_hash направит клиентов на другой вышестоящий узел. По рекомендации Вот, Я бы все время оставил в вашем файле весь список серверов и просто пометил бы его «вниз», если он не в сети.