¿Posible error en JMeter al utilizar una conexión JDBC a través de SSH?
Necesito realizar una prueba de carga contra un pgbouncer. Todos los clientes realizan un túnel SSH antes de establecer una conexión de base de datos a través del pgbouncer. Es algo como esto:
sshpass -p ‘MI_CONTRASEÑA’ ssh -o StrictHostKeyChecking=no -N -L PUERTO_LOCAL:127.0.0.1:63666 USUARIO_PGBOUNCER@DIRECCIÓN_PGBOUNCER -p PUERTO >/dev/null 2>&1 &
Mi proyecto de Jmeter actualmente tiene tres grupos de hilos:
- Grupo de hilos de configuración: En este grupo realizo una conexión a una base de datos diferente para seleccionar un nombre de usuario y un esquema al azar.
-
Grupo de hilos de consulta: En este grupo realizo la conexión JDBC utilizando el usuario anterior (que se convirtió en una propiedad utilizando
props.put("schema", vars.get("schema_1"));
en BeanShell Assertion) y las consultas. -
Grupo de hilos de cierre: En este grupo cierro el túnel SSH.
Ahora, cada vez que ejecuto la prueba desde la GUI por primera vez, la selección de datos (solicitud JDBC) en el grupo de hilos de consulta me muestra un error:
Cannot create PoolableConnectionFactory (FATAL: “trust” authentication failed)
Después de eso, si ejecuto la prueba nuevamente, todo funciona. Verifiqué el contenido de las variables y propiedades con un muestreador Debug y todo está correcto.
El principal problema surge cuando ejecuto la prueba sin la GUI. Siempre falla debido a ese error.
En realidad, no me gusta el hecho de tener que establecer el túnel SSH ejecutando el comando con un muestreador de Proceso del SO, pero no encuentro una solución mejor. El túnel SSH es parte de la prueba, no lo necesito para la configuración maestro/esclavo de JMeter.
Agradecería mucho una solución o una sugerencia para que esto funcione. Gracias.
davy.ai
Solución para el error FATAL “trust” authentication failed
Para solucionar el error FATAL “trust” authentication failed, puedes realizar lo siguiente:
pgjdbc.auth.password
a la cadena de conexión JDBC en la solicitud JDBC.jdbc:postgresql://localhost:5432/mydb?user=username&password=myPassword¤tSchema=mySchema&pgjdbc.auth.password=password
auth_type
en el archivopgbouncer.ini
a:auth_type = md5
userlist.txt
en el directoriopgbouncer
:user = myuser mypassword
Ejecutando un túnel SSH a través de JMeter
Puedes establecer un túnel SSH a través de JMeter utilizando el complemento SSH Tunnel Sampler.
Aquí están los pasos:
pom.xml
:Agrega un SSH Tunnel Sampler al grupo de hilos SSH.
Configura el SSH Tunnel Sampler con los siguientes parámetros:
Host de destino
– La dirección de PGBouncer.Puerto de destino
– El puerto de PGBouncer.Puerto local
– El puerto local que se reenviará al host remoto.Nombre de usuario
– El nombre de usuario para la conexión SSH.Contraseña
– La contraseña para la conexión SSH.Clave privada
– La ruta al archivo de clave privada.Frase de paso
– La frase de paso para el archivo de clave privada.URL JDBC
–jdbc:postgresql://127.0.0.1:LOCAL_PORT/nombrebasedatos
Clase del controlador JDBC
–org.postgresql.Driver
Nombre de usuario
– El inicio de sesión de usuario de la base de datos.Contraseña
– La contraseña del usuario de la base de datos.Ejecuta la prueba.