set_hashed_upstream
Устанавливает хэшированную переменную upstream, используемую для согласованного хэширования в NGINX.
Описание
Директива set_hashed_upstream является частью NGINX Set-Misc module и используется для вычисления значения хэша на основе параметров upstream, что позволяет последовательно направлять запросы к upstream servers. Эта директива принимает три аргумента: переменную, которую нужно установить вычисленным хэшем; строку, определяющую алгоритм хеширования; и необязательный аргумент, который может быть привязан к конкретным конфигурациям или поведению upstream. Таким образом директива облегчает балансировку нагрузки и гарантирует, что запросы с одинаковыми параметрами upstream последовательно направляются к одному и тому же upstream server, независимо от числа доступных или добавленных серверов.
При использовании set_hashed_upstream вы можете влиять на то, как запросы распределяются между вашими upstream servers. Это особенно полезно в сценариях, где используются sticky sessions или требуется последовательно поддерживать состояние сессии между запросами от одного клиента. Функция хеширования помогает обеспечить, чтобы клиенты стабильно попадали на один и тот же backend server, что может минимизировать такие проблемы, как потеря сессии или несоответствие состояния, если данные сессии хранятся на конкретном сервере. Это делает директиву полезной в конфигурациях с высокой доступностью или в распределённых приложениях.
Пример конфига
set_hashed_upstream $hashed_upstream "my_request_id";
Убедитесь, что строка алгоритма хеширования указана правильно; в противном случае поведение может быть непредсказуемым.
Избегайте использования этой директивы в контексте 'if' без понимания последствий, так как NGINX может вести себя не так, как ожидается.
Убедитесь, что устанавливаемая переменная не используется также в upstream block, так как это может привести к циклическим зависимостям.