add_upstream
Директива `add_upstream` позволяет конфигурировать upstream'ы, добавляя заранее определённые upstream-серверы и поддерживая необязательные параметры для их настройки.
Описание
Директива add_upstream является частью NGINX Combined Upstreams module и используется внутри блока upstream для включения дополнительных upstream-серверов, определённых в их существующих конфигурациях. Её основная функция — расширять пул серверов текущего upstream путём ссылки на другие конфигурации upstream; первый параметр обязателен и задаёт upstream, который нужно добавить. Это позволяет повторно использовать определения upstream, сохраняя их атрибуты, такие как веса и счётчики отказов.
Помимо требуемого имени upstream, директива принимает необязательные аргументы. Параметр backup может быть добавлен, чтобы обозначить все добавляемые upstream-серверы как резервные, гарантируя, что они будут использоваться только когда обычные серверы недоступны. Параметр weight=N позволяет изменить начальные веса серверов из ссылаемой конфигурации upstream, применяя мультипликативный коэффициент, что даёт возможность тонкой настройки балансировки нагрузки между несколькими upstream. Эта возможность особенно полезна при масштабировании сервисов, поскольку позволяет использовать заранее определённые конфигурации upstream без полного дублирования настроек в нескольких директивах upstream.
В целом директива add_upstream повышает модульность и управляемость конфигураций NGINX, давая администраторам возможность строить сложные архитектуры upstream без избыточности в коде конфигурации.
Пример конфига
upstream combined {
add_upstream upstream1; # Add upstream 1
add_upstream upstream2 weight=2; # Add upstream 2 with weight factor
server some_another_server; # Additional server if needed
add_upstream upstream3 backup; # Add upstream 3 as a backup
}Убедитесь, что упомянутый upstream определён до его использования в add_upstream.
Использование weight и backup вместе может привести к путанице, если они не должным образом задокументированы в конфигурации.
Чрезмерно сложные определения upstream могут ухудшить производительность и усложнить отладку. По возможности упростите их.