random
Директива 'random' указывает, что метод балансировки нагрузки, используемый в upstream block, будет случайным образом выбирать server. — NGINX HTTP Core
Описание
Директива 'random', используемая в контексте upstream, позволяет NGINX реализовать балансировку нагрузки, случайным образом выбирая, на какой server направить запросы из доступного пула upstream servers. Эта директива улучшает распределение входящих запросов, обеспечивая, что ни один server не будет перегружен последовательными запросами. При активации директива 'random' работает вместе с уже определёнными в конфигурации upstream servers, случайно выбирая один из них для каждого запроса. Этот процесс выбора осуществляется внутренним алгоритмом, который использует генератор случайных чисел для выбора server из пула каждый раз, когда запрос попадает в upstream block. Директива не принимает аргументов и поэтому действует исключительно на основании своего присутствия в определении upstream. Ещё один важный аспект заключается в том, что этот метод не учитывает загрузку или состояние здоровья server, что может сделать его менее предпочтительным в сценариях, где лучше подходит более интеллектуальный метод балансировки нагрузки, например 'least_conn' или 'ip_hash'. Следовательно, хотя использование директивы 'random' может помочь равномерно распределять запросы при лёгких нагрузках, администраторам следует учитывать её ограничения в средах с высокой нагрузкой, где производительность server существенно варьируется.
Пример конфига
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
random;
}Использование 'random' может привести к неравномерной нагрузке на серверы при большом трафике, если у серверов различная производительность.
Обязательно сочетайте 'random' с проверками работоспособности для более отказоустойчивой конфигурации.