Configurações Nginx, HAproxy, Unicorn, Rails e Node

3

Nossa aplicação atualmente é apenas um aplicativo da Web "regular", sem coisas extravagantes, como HTTP ou websockets de streaming. É principalmente um aplicativo Rails , servido por alguns (20 em 2 máquinas) trabalhadores Unicorn , intermediados por um servidor venerável nginx que lida com carga balanceamento.

Isso tem funcionado muito bem no ano passado e o aplicativo agora atende entre 400 e 800 solicitações por segundo em qualquer ponto durante o dia.

Em breve, lançaremos duas novas APIs, ambas servidas por um aplicativo Node : um websocket , bem como um longo HTTP de sondagem . (A coisa extravagante como a API de streaming do Twitter, onde as conexões HTTP nunca terminam). Ambos usam a mesma porta no nó e como o aplicativo do nó é sem estado, certamente podemos implantar alguns deles para lidar com o tráfego.

O aplicativo (nó) agora é implantado em 5 instâncias e agora está escutando 5 portas 'privadas' diferentes no mesmo host. Precisamos colocar algo na frente deles para balancear a carga, mas também algo que é capaz de lidar com sockets (websocket ou HTTP streaming) que se destinam a ficar 'up' por dias.

A questão é então: o que? Eu li em algum lugar que o HAProxy faz um trabalho melhor do que o Nginx nisso. O que você recomendaria?

    
por Julien Genestoux 23.11.2010 / 21:54

2 respostas

1

O Nginx não suporta WebSockets, então você precisará de outro balanceador de carga. Eu tive boas experiências com o HAProxy. Confira este thread do StackOverflow para obter uma configuração de exemplo: link

    
por 23.11.2010 / 23:00
0

Melhor ainda, não coloque nada na frente dele. Balanceamento de carga de DNS + redirecionamentos. Você irá querer afinidade de nó inteligente eventualmente, e você pode obter isso de redirecionamentos. O balanceamento de carga de DNS não é ótimo no curto prazo, mas é viável a longo prazo como uma boa semente para o balanceamento de conexões de entrada.

Ou, Julien, você poderia trabalhar com alguém como eu que esteja resolvendo esse problema para pessoas como você como um serviço. ;)

    
por 24.11.2010 / 03:07