Conexões de rede ociosas de fechamento do Azure

3

Estou executando um aplicativo proprietário / cliente proprietário em uma única instância do windows server 2k8R2 azure VM.

O cliente é muito dependente de uma conexão com o servidor. No entanto, se eu passar alguns minutos sem nenhuma atividade, algo no fim do Azure forçosamente fecha a conexão (tanto quanto posso dizer nos logs). Não tenho certeza se isso é uma função do próprio azure ou do windows.

Falta de implementar algum tipo de funcionalidade keepalive (que eu não posso porque o software é proprietário), existe alguma maneira que eu possa estender esse tempo limite?

Eu vi várias referências para alterar idletimeout para situações de balanceamento de carga, mas isso é apenas uma instância única.

obrigado antecipadamente!

    
por NoCarrier 23.01.2015 / 00:10

2 respostas

6

Você está atingindo um recurso de design do balanceador de carga de software na frente de suas VMs. Por padrão, ele fechará todas as conexões ociosas após 4 minutos, mas você poderá configurar o tempo limite entre 4 e 30 minutos:

Tempo limite ocioso configurável para carga do Azure Balanceador

No entanto, é uma boa prática tanto na infraestrutura quanto no lado da aplicação ter algum tipo de keepalive. Vai poupar mais do que uma dor de cabeça no futuro.

    
por 23.01.2015 / 23:32
4

Configurações TCP para VMs do Azure

As VMs do Azure se comunicam com a Internet pública usando NAT (Network Address Translation). Os dispositivos NAT atribuem um endereço IP público e uma porta a uma VM do Azure, permitindo que a VM estabeleça um soquete para comunicação com outros dispositivos. Se os pacotes param de fluir através desse soquete após um tempo específico, o dispositivo NAT mata o mapeamento e o soquete fica livre para ser usado por outras VMs.

Esse é um comportamento comum de NAT, que pode causar problemas de comunicação em aplicativos baseados em TCP que esperam que um soquete seja mantido além de um período de tempo limite. Existem duas configurações de tempo limite ocioso a serem consideradas, para sessões em um estado de conexão estabelecido:

entrada por meio do balanceador de carga do Azure. Esse tempo limite é padronizado para 4 minutos e pode ser ajustado em até 30 minutos. saída usando SNAT (Source NAT). Este tempo limite está definido para 4 minutos e não pode ser ajustado. Para garantir que as conexões não sejam perdidas além do limite de tempo limite, certifique-se de que seu aplicativo mantenha a sessão ativa ou que você possa configurar o sistema operacional subjacente para isso. As configurações a serem usadas são diferentes para sistemas Linux e Windows, conforme mostrado abaixo.

Para o Linux, você deve alterar as variáveis do kernel abaixo. net.ipv4.tcp_keepalive_time = 120 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 8

Para o Windows, você deve alterar os valores do registro abaixo. KeepAliveInterval = 30 KeepAliveTime = 120 TcpMaxDataRetransmissions = 8

As configurações acima garantem que um pacote keep alive seja enviado após 2 minutos (120 segundos) de tempo ocioso e, em seguida, enviado a cada 30 segundos. E se 8 desses pacotes falharem, a sessão é descartada.

Fonte: link

    
por 20.05.2017 / 11:12

Tags