Estoy ejecutando una aplicación de arranque de primavera con Docker Swarm y uso postgres para la base de datos. Cuando ejecuto ambos como servicio acoplable, la conexión de la base de datos falla de manera consistente y aleatoria (como se puede ver en la marca de tiempo) como dice el registro:
2017-10-26T 17:14:15 .200415747Z app-db.1.1ayo6h8ro1og@scw-c2964a | REGISTRO: no se pudieron recibir datos del cliente: se restableció la conexión por igual
2017-10-26T 17:43:36 .481718562Z app-db.1.1ayo6h8ro1og@scw-c2964a | REGISTRO: no se pudieron recibir datos del cliente: se restableció la conexión por igual
2017-10-26T 17:43:56 .954152654Z app-db.1.1ayo6h8ro1og@scw-c2964a | REGISTRO: no se pudieron recibir datos del cliente: se restableció la conexión por igual
2017-10-26T 17:44:17 .434171472Z app-db.1.1ayo6h8ro1og@scw-c2964a | REGISTRO: no se pudieron recibir datos del cliente: se restableció la conexión por igual
2017-10-26T 17:49:04 .154174253Z app-db.1.1ayo6h8ro1og@scw-c2964a | REGISTRO: no se pudieron recibir datos del cliente: se restableció la conexión por igual
No pude entender o descubrir la razón de esto. Agradecería cualquier idea.
editar:
nos dimos cuenta de que, al probar la aplicación, también arroja un error como este:
SQLTransientConnectionException: HikariPool-1 - La conexión no está disponible, la solicitud expiró después de 937517 ms
Gracias.
fuente
tcp_keepalive_time
del host (fuente: success.docker.com/article/ipvs-connection-timeout-issue ), por lo que este enfoque ya no funcionará con contenedores más nuevos. Sin embargo, a partir de Docker 19.03 hay unasysctl
opción que se puede suministrar a los servicios (por ejemplo, en un archivo de composición). Esto se puede utilizar para establecer los indicadores anteriores directamente en los contenedores sin interferir con el host. docs.docker.com/compose/compose-file/#sysctlsHay otra forma de evitar el cierre de la conexión inactiva. El problema está relacionado con el descubrimiento predeterminado del servicio de enjambre que cierra la conexión inactiva después de 15 minutos.
Explícitamente especificado, el
dnsrr
modo de punto final resuelve el problema, por ejemplo:fuente