Назад | Перейти на главную страницу

Имеет ли значение порядок серверов в конфигурации nginx?

У меня есть специальный инструмент, который генерирует часть конфигурации 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 направит клиентов на другой вышестоящий узел. По рекомендации Вот, Я бы все время оставил в вашем файле весь список серверов и просто пометил бы его «вниз», если он не в сети.