redis2_next_upstream

Директива `redis2_next_upstream` определяет, когда NGINX должен попытаться направить запрос к другому upstream server, если текущий upstream server не отвечает должным образом.

Синтаксисredis2_next_upstream error | timeout | invalid_response | not_found | off;
По умолчаниюnone
Контекстhttp, server, location
Аргументы1+

Описание

Директива redis2_next_upstream позволяет пользователям задать условия, при которых NGINX должен рассматривать возможность переключения на другой upstream Redis server. Эта директива имеет решающее значение для обеспечения высокой доступности и отказоустойчивости приложений, использующих Redis, при использовании NGINX в качестве промежуточного звена. Она принимает один или несколько аргументов, каждый из которых указывает конкретное условие, при котором произойдет переключение на резервный сервер. Доступные опции включают error, timeout, invalid_response и not_found. Определяя эти условия, администраторы могут настроить поведение NGINX так, чтобы оно лучше соответствовало требованиям к отказоустойчивости их приложений.

Эту директиву можно настроить в контекстах http, server или location, и поскольку она допускает несколько аргументов, она обеспечивает гибкий подход к обработке ошибок. Например, если запрос к Redis превышает время ожидания или возвращает некорректный ответ, NGINX может автоматически переключиться на другой upstream Redis server, если это указано. Это особенно полезно в средах, где единая точка отказа может привести к прерыванию сервиса, что повышает устойчивость приложений, зависящих от Redis.

При настройке этой директивы следует проявлять осторожность, поскольку чрезмерно агрессивные параметры переключения на резервный сервер могут привести к быстрому переключению между upstream servers при временных сбоях, что может усилить задержки и снизить общую производительность системы. Поэтому рекомендуется выработать продуманную стратегию выбора условий, чтобы сбалансировать надежность и производительность.

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

upstream redis_backend {
    server 127.0.0.1:6379;
    server 192.168.0.1:6379;
}

location /redis {
    redis2_pass redis_backend;
    redis2_next_upstream error timeout invalid_response;
    redis2_query get some_key;
}

Убедитесь, что upstream‑серверы правильно настроены и работают, чтобы избежать ненужных попыток аварийного переключения.

Будьте осторожны при использовании 'not_found', так как это может привести к чрезмерному аварийному переключению на другие серверы даже для корректных ключей, которые отсутствуют.

Избегайте установки слишком большого числа условий для аварийного переключения, так как это может привести к деградации производительности из‑за постоянных повторных попыток.

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