Estendendo a resposta do chrskly, você pode querer configurar 3 sinalizadores / configurações.
- fail_timeout : tempo total por tentativas com falha e também marca o servidor como DOWN pelo mesmo tempo. Se 5 segundos, tentará tentativas de max_fail em 5 segundos e se ainda falhar, marque o servidor como BAIXO por 5 segundos.
- max_fail : número máximo de tentativas
- proxy_connect_timeout : a quantidade de tempo para aguardar uma conexão.
No exemplo a seguir do GRPC, se o servidor principal não puder ser conectado em 7 segundos, alterne para o backup e marque o servidor principal como inativo por 6000s:
upstream grpcservers {
server 192.168.0.XX:9997 fail_timeout=6000s max_fails=1; # After 1 fail in 6000s, Main server is marked unavailable for 6000s.
server 192.168.0.XX:9999 backup;
}
location / {
grpc_pass grpc://grpcservers;
grpc_connect_timeout 7s; # If conn cant be made in 7sec, switch to backup
}