Proxying para o mesmo servidor em várias portas?

1

Estou ocupado configurando um proxy reverso nginx que reside em um servidor, que ficará na frente de um (por enquanto) servidor web apache em um servidor diferente, que estará servindo uma aplicação Django via mod_wsgi.

Enquanto lia a Internet há alguns dias, vi alguns exemplos de configuração do nginx em que o cara tinha o mesmo servidor configurado com várias portas na diretiva upstream.

Então, ao invés de fazer isso (o que eu tenho agora, mais ou menos)

upstream webserver {
    server backend1.com;
}

Ele tinha:

upstream webserver {
    server backend1.com:8000;
    server backend1.com:8001;
    server backend1.com:8002;
}

E, obviamente, com o Apache configurado para ouvir essas três portas. (Eu acho que no exemplo que eu vi, que eu não consigo mais encontrar, era um back-end mestiço rodando Rails, por qualquer coisa que valha a pena.)

De qualquer forma, minha pergunta é, que tipo de vantagens ou desvantagens existem com essa abordagem? Eu sei que de qualquer maneira funciona e eu posso facilmente configurar qualquer uma das opções, mas eu estava apenas imaginando se alguém poderia lançar alguma luz sobre se esta é uma configuração boa / ruim / desnecessária e por quê.

Muito obrigado por qualquer sabedoria oferecida.

    
por Jim D 24.03.2011 / 22:57

1 resposta

1

O motivo dos múltiplos back ends é que o Mongrel é um processo único. Para escalar, você precisaria de vários processos, um ou dois por núcleo, e permitiria que o proxy fornecesse um único ponto de entrada. Além disso, seu proxy provavelmente será multithread e poderá gerenciar a conexão do usuário, mantendo os servidores de processo único ocupados.

Se o seu back end for o Apache, ele gerará vários processos-filhos para lidar com solicitações recebidas, supondo que você não esteja executando o mpm-worker, portanto, não há necessidade de vários processos.

    
por 24.03.2011 / 23:15