Resolver problemas de conexión

Drivers que no conectan, no autentican o no confían en el certificado.

Estos son los problemas de conexión que más se ven. De cada uno tienes la causa, cómo confirmarla en tu máquina, cómo resolverlo y qué hacer para que no vuelva a pasar.

La conexión se cierra antes de autenticar

Es el fallo más habitual. Tu aplicación abre la conexión con el nodo, el nodo la corta en cuanto recibe los primeros bytes en claro y el driver informa de que el servidor cerró la conexión antes de llegar a pedir el usuario o la contraseña.

Causa

El puerto de clientes de TeselaDB solo acepta conexiones con TLS, y la cadena de conexión de tu aplicación no lleva tls=true.

Cómo confirmarlo

Mira la cadena. Si entre las opciones que van detrás del signo de interrogación no aparece tls=true, es este problema.

Solución

Añade tls=true a las opciones de la cadena, junto con tlsCAFile si tu driver lo admite, y vuelve a arrancar la aplicación.

Cómo evitarlo

Parte siempre de la cadena de Cadena de conexión y opciones, que ya lleva las opciones de TLS que pide el nodo.

El driver no confía en el certificado del nodo

Aquí TLS sí está activo. La conexión llega al nodo y se corta durante el saludo de TLS, antes de que el driver envíe ninguna orden, porque el driver no reconoce la autoridad que firmó el certificado que le presenta el nodo.

Causa

El nodo presenta un certificado firmado por la CA de tu clúster, y el driver no tiene esa CA entre las autoridades en las que confía.

Cómo confirmarlo

El error del driver habla de la verificación del certificado: una cadena de confianza incompleta o una autoridad que no reconoce.

Solución

Da al driver el fichero pki/ca.pem del clúster con la opción tlsCAFile. En Java y en .NET, el driver no lee esa opción, así que mete la CA en el almacén de confianza de la máquina virtual o del sistema.

Cómo evitarlo

Copia pki/ca.pem a cada máquina de aplicación en cuanto crees el clúster, igual que copias la cadena de conexión.

La autenticación falla

La red y TLS funcionan. El saludo de TLS termina bien, pero el nodo rechaza las credenciales que envía el driver y la aplicación no llega a leer ni a escribir ningún documento.

Causa

El usuario, la contraseña o la base de autenticación de la cadena no coinciden con un usuario que exista en el clúster.

Cómo confirmarlo

El driver devuelve el error AuthenticationFailed, con el código 18, al abrir la conexión o en la primera operación.

Solución

Revisa el nombre del usuario, su contraseña y la opción authSource, que tiene que ser la base en la que creaste ese usuario.

Cómo evitarlo

Guarda las credenciales de cada aplicación en tu gestor de secretos y haz que la aplicación las lea de ahí al arrancar.

Ver también