Как работает апстрим в 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.

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

memcached_next_upstream

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

по умолчанию: время ожидания ошибки

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

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

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

Другие вопросы по тегам