Como obter o Nginx para alternar rapidamente para o servidor upstream de backup?

1

Estou usando o Nginx para balancear a carga de um aplicativo de websocket que é executado em várias instâncias do Node.js. Quando existem milhares de conexões ativas, uma única transmissão de mensagem pode fazer o Node girar no lugar por segundos. Durante esse tempo, o Node não estaria lidando com conexões de entrada. Para manter a aparência de responsividade mesmo quando o servidor está sob carga pesada, quero ter um processo sobressalente que só se acostume quando os outros não respondem com rapidez suficiente. Eu percebi que marcar uma instância do Node como "backup" funcionaria:

upstream nodejs_backends {
    least_conn;

    server 127.0.0.1:5001;
    server 127.0.0.1:5002;
    server 127.0.0.1:5003;
    server 127.0.0.1:5004;
    server 127.0.0.1:5005;
    server 127.0.0.1:5006;
    server 127.0.0.1:5007;
    server 127.0.0.1:5008   backup; 
}

A instância de backup está recebendo solicitações muito raramente. Parece que o Nginx está passando pelos servidores upstream, um por um. O servidor de backup só é alcançado quando todos os outros foram tentados. Como o least_conn é usado, eles serão ainda mais enxameados do que o primeiro. O Nginx deve desistir após a tentativa inicial e usar o servidor de backup. Mas não consigo descobrir como fazer isso acontecer na versão do Nginx que estou usando (1.4). Qualquer ajuda ou sugestão seria apreciada.

    
por cleong 29.01.2015 / 15:43

0 respostas