Estoy usando Google Compute Engine. Configuré el administrador de implementación y configuré un firewall que permite que la red LB se conecte a los servidores web, los propios servidores web los agregan a un administrador de grupo de instancias y configura un escalador automático que apunta al administrador de grupo de instancias, se configura la verificación de estado HTTP. que se ejecutará en instancias del servidor web, agrega las comprobaciones de estado HTTP a un servicio backend y agrega el Administrador de grupo de instancias al servicio backend, configura un mapa de URL que tiene el servicio backend como servicio predeterminado, el mapeador de URL a su vez es agregado al proxy HTTP al que apunta una regla de reenvío que tiene una IP global.
Esta configuración es muy similar a la configuración descrita aquí.https://cloud.google.com/solutions/scalable-and-resilient-apps
Ahora veamos el problema que parece que puedo resolver para esta configuración. Tengo un servidor Nginx ejecutándose en los servidores web y responde a las solicitudes y puedo crear conexiones de origen de eventos, pero después de exactamente 1 minuto la conexión se cierra con el error INCOMPLETE_CHUNKED_ENCODING. Esto no sucede si me conecto directamente a uno de los servidores web. Cambié la configuración de sysconf para tcp keepalive a:
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_probes=5
esto despues de leerhttps://cloud.google.com/compute/docs/troubleshooting#networktraffic
He probado innumerables cosas en la configuración de nginx y no puedo encontrar una solución.
¿Alguien tiene alguna idea o problemas similares?
Respuesta1
Alex tenía razón al compartir el enlace de esa publicación porque conduce al problema principal, pero necesita un poco de explicación.
Deberá cambiar el valor 'keepalive_timeout' (el valor predeterminado es 65) en su archivo de configuración de Nginx ( /etc/nginx/nginx.conf) para aumentar el tiempo de espera de la conexión HTTP, de modo que su tiempo de espera sea mayor que el tiempo de espera de 600 segundos en el balanceador de carga. . Esto hace que el balanceador de carga sea el lado que cierra las conexiones inactivas, en lugar de nginx.
Ajuste nginx keepalives para que funcione con el balanceador de carga HTTP(S) de Google Cloud Platform.
Establezca "keepalive_timeout 650;" en nginx/etc/nginx/nginx.conf
keepalive_timeout 650;
keepalive_requests 10000;
Información más detallada sobrepersistencia http.
Respuesta2
nginx
Probablemente requierasalgunos ajustes.