nginx sessões / ip_hash com Socket.io

4

Devo balancear a carga de duas instâncias de node.js / Socket.io em caixas diferentes com o nginx executando um serviço de notificações simples com um evento retroativo para novos clientes.

Eu não acho que haverá algum problema com o tipo de conexão websocket (que será o principal método de conexão) já que a conexão mantida nega a necessidade de uma sessão (além de uma reconexão que não me preocupa demais).

No entanto, haverá um problema com as abordagens de fallback de polling, pois elas dependem de sessões do cliente e com o balanceamento de carga roundrobin padrão (neste caso) há 50% de chance de a próxima pesquisa aparecer como um novo cliente.

Em vez de sincronizar as sessões nas duas caixas, faz sentido que o balanceador de carga faça algum roteamento semi-inteligente usando o ip_hash ou nginx-sticky-module .

Parece que o ip_hash faz o trabalho, mas vejo problemas potenciais com clientes móveis que trocam endereços IP enquanto estão em 3G ou que mudam entre a rede móvel e o WiFi, mudando assim o endereço IP.

Eu tenho algumas perguntas ligadas a isso; se você puder responder isso seria ótimo ...

  1. O ip_hash tem algum tipo de vida útil ou um endereço IP é atribuído permanentemente a uma instância de back-end?
  2. Alguém pode compartilhar experiências / recomendações sobre o uso do balanceamento de carga do nginx com o Socket.io e / ou clientes móveis?
por bdls 04.01.2012 / 12:43

0 respostas