Como ampliar um servidor web com suporte para pesquisas longas

Como ampliar um servidor web com suporte para pesquisas longas

Estou planejando adicionar mais servidores de aplicativos da web para oferecer suporte ao aumento de clientes, implantando HAproxy e Keepalived para balanceamento de carga e alta disponibilidade.

O uso do meu servidor tem a seguinte característica:

  1. Os trabalhos não exigem muita CPU. As mensagens são textos JSON com menos de 100 caracteres.
  2. Os usuários enviarão mensagens ao servidor através do dispositivo cliente Y. Geralmente de 4 a 5 mensagens por dia
  3. Os dispositivos clientes X continuam aguardando mensagens do servidor. Se a mensagem estiver disponível no servidor, o dispositivo cliente X deverá ser capaz de obtê-la em 2 segundos. Caso contrário, esta mensagem estará desatualizada.

Por esta razão,

  1. Dispositivos clientes que X está usandoconexão HTTP de pesquisa longapara ser responsivo. Cada conexão durará 5 segundos e será reconectada.
  2. Os dispositivos cliente X e dispositivos cliente Y estão conectados ao mesmo servidor, então X e Y podem enviar mensagens facilmente

Pergunta

Se houver mais de 60.000 dispositivos Cliente X conectados ao servidor, meu balanceador de carga ou roteador ficará sem porta TCP. Qual é a melhor maneira de expandir para, digamos, 20.000 usuários?

Meu servidor está rodando no servidor Ubuntu, usando Tomcat e Java Servlet.

Responder1

Não acho que seus 60 mil clientes sejam o problema real. É mais provável que você tenha problemas com descritores de arquivo insuficientes, mas isso deve ser fácil de corrigir como parte da configuração do sistema operacional.

Veja por que as conexões não serão seu problema. Cada conexão é caracterizada por seu endereço IP de origem, porta de origem, endereço IP de destino e porta de destino. Dentro da pilha de rede, esse quádruplo é usado para combinar pacotes com descritores de arquivo (cada descritor de arquivo representa uma conexão). Seu servidor tem endereço IP de destino e porta de destino fixos (seu servidor é o destino do cliente), mas o endereço IP de origem e a porta de origem são variáveis. A porta é um número de 16 bits, portanto o número máximo de conexões de um cliente é 64K. O endereço IPv4 é um número de 32 bits que fornece 4.294.967.296 endereços de origem possíveis. Fazendo algumas contas básicas, seu servidor poderia ter 64K * 4.294.967.296 conexões mapeadas para um único IP e porta de origem.

É por isso que é mais provável que você tenha problemas com o número máximo de descritores de arquivos abertos do que com o número de clientes.

Responder2

A abordagem mais simples seria implementar o balanceamento de carga no nível do DNS.

Significa: ter uma entrada DNS round robin que balanceie para 2, 3 ou mais balanceadores de carga físicos.

informação relacionada