Estou usando o Google Compute Engine. Eu configurei o gerenciador de implantação e ele configurou um firewall que permite que o LB da rede se conecte a servidores web, os próprios servidores web os adicionam a um gerenciador de grupo de instâncias e configura um escalonador automático direcionado ao gerenciador de grupo de instâncias, a verificação de integridade HTTP está configurada que será executado em instâncias de servidor da web, adiciona verificações de integridade HTTP a um serviço de back-end e adiciona o Gerenciador de grupo de instâncias ao serviço de back-end, configura um mapa de URL que tem o serviço de back-end como serviço padrão, o mapeador de URL, por sua vez, é adicionado ao proxy HTTP apontado por uma regra de encaminhamento que possui um IP global.
Esta configuração é muito semelhante à configuração descrita aquihttps://cloud.google.com/solutions/scalable-and-resilient-apps
Agora vamos ao problema que posso resolver para esta configuração. Eu tenho um servidor Nginx rodando nos servidores web e ele responde às solicitações e consigo criar conexões de origem de eventos para ele, mas depois de exatamente 1 minuto a conexão é fechada com o erro INCOMPLETE_CHUNKED_ENCODING. Isso não acontece se eu me conectar diretamente a um dos servidores web. Alterei a configuração do sysconf para tcp keepalive para:
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_probes=5
Isso depois de lerhttps://cloud.google.com/compute/docs/troubleshooting#networktraffic
Eu tentei inúmeras coisas na configuração do nginx e não consigo encontrar uma solução.
Alguém tem alguma idéia ou problemas semelhantes?
Responder1
Alex estava certo ao compartilhar o link da postagem porque leva ao problema principal, mas precisa de uma pequena explicação.
Você precisará alterar o valor 'keepalive_timeout' (o padrão é 65) em seu arquivo de configuração Nginx ( /etc/nginx/nginx.conf) para aumentar o tempo limite da conexão HTTP, para que seu tempo limite seja maior que o tempo limite de 600 segundos no Load Balancer . Isso faz com que o balanceador de carga seja o lado que fecha as conexões ociosas, em vez do nginx.
Ajuste os keepalives do nginx para funcionar com o balanceador de carga HTTP(S) do Google Cloud Platform.
Defina “keepalive_timeout 650;” em nginx/etc/nginx/nginx.conf
keepalive_timeout 650;
keepalive_requests 10000;
Informações mais detalhadas sobrepersistência http.
Responder2
Você nginx
provavelmente requeralguma afinação.