Как работает апстрим в 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;
}
1 ответ
Апстрим предоставляет только список серверов и некоторый вес. Чтобы сообщить Nginx, что делать в случае сбоя одного из серверов, вам нужно управлять этим с помощью memcached_next_upstream.
memcached_next_upstream
синтаксис: memcached_next_upstream [ошибка | тайм-аут | invalid_response | not_found | выключено]
по умолчанию: время ожидания ошибки
контекст: http, сервер, местоположение
Какие условия сбоя должны привести к тому, что запрос будет перенаправлен на другой вышестоящий сервер? Применяется только в том случае, если значение в memcached_pass является восходящим с двумя или более серверами.
Как указано в документации, по умолчанию используется ошибка / тайм-аут, что должно быть достаточно в большинстве случаев.