upsync

Директива `upsync` позволяет NGINX динамически синхронизировать конфигурации upstream-серверов из Consul или Etcd, обеспечивая обновления в реальном времени без прерываний обслуживания.

Синтаксисupsync address [upsync_timeout=duration] [upsync_interval=duration] [upsync_type=type] [strong_dependency=on | off];
По умолчаниюnone
Контекстupstream
Аргументы1+

Описание

Директива upsync — мощная функция модуля NGINX, которая синхронизирует конфигурации upstream-серверов из хранилища ключ‑значение, такого как Consul или Etcd. Эта синхронизация выполняется без необходимости перезапуска NGINX, что предотвращает простой и обеспечивает непрерывную доставку сервиса. Когда директива используется в контексте upstream, она требует как минимум один аргумент, указывающий адрес сервера Consul или Etcd и путь к конфигурации upstream. Можно задать дополнительные параметры, такие как upsync_timeout, который определяет временной лимит для операций синхронизации, и upsync_interval, который задаёт частоту проверок синхронизации. Кроме того, параметр upsync_type указывает тип используемого хранилища (например, Consul или Etcd).

После успешной настройки NGINX может автоматически добавлять или удалять бэкенд‑серверы в соответствии с записями в хранилище ключ‑значение, изменяя соответствующие атрибуты, такие как weight и health checks, в реальном времени. Если сервер выходит из строя или становится нездоровым, он может быть бесшовно удалён из upstream без каких-либо действий со стороны администратора. Модуль также предоставляет опцию указания пути для дампа, куда можно сохранить текущее состояние конфигураций upstream для ручной проверки или отката при необходимости.

Пример конфига

http {
    upstream my_upstream {
        upsync 127.0.0.1:8500/v1/kv/upstreams/my_app upsync_timeout=10s upsync_interval=1s upsync_type=consul;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://my_upstream;
        }
    }
}

Убедитесь, что для Consul или Etcd указан правильный IP-адрес и порт, иначе синхронизация завершится неудачей.

Учтите настройку strong_dependency, поскольку она влияет на то, как управляются upstream-серверы в условиях отказов — её неправильное использование может привести к нежелательному удалению серверов.

Поймите последствия установки слишком короткого интервала синхронизации, так как это может создать ненужную нагрузку как на NGINX, так и на key-value store.

← Ко всем директивам