Как работает апстрим в 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 является восходящим с двумя или более серверами.
Как указано в документации, по умолчанию используется ошибка / тайм-аут, что должно быть достаточно в большинстве случаев.