Назад | Перейти на главную страницу

Как работает апстрим в nginx (memcached_pass)?

Переходит ли nginx к следующему хосту в восходящем блоке, если предыдущий хост недоступен или не существует?

upstream cache_cluster {
   127.0.0.1:9000;     //something on this port
   127.0.0.1:11211;   //memcached instance on this port
}

location  {
 //..some code here
 memcached_pass cache_cluster;
 error_page 404 502 504 =  @something;
}

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

Из Nginx-документация:

memcached_next_upstream

синтаксис: memcached_next_upstream [ошибка | тайм-аут | invalid_response | not_found | выкл]

дефолт: время ожидания ошибки

контекст: http, сервер, расположение

Какие условия сбоя должны привести к переадресации запроса на другой вышестоящий сервер? Применяется только тогда, когда значение в memcached_pass является восходящим потоком с двумя или более серверами.

Как указано в документации, поведение по умолчанию - ошибка / тайм-аут, которого в большинстве случаев должно быть достаточно.