es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La conexión a AWS RDS con Sqoop expira.

Estoy tratando de utilizar una conexión desde RDS en EMR a través de sqoop con el siguiente comando:

sqoop list-tables \
--connect jdbc:postgresql://sportsdb.cxri########.us-east-2.rds.amazonaws.com:5432/SportsDB \
--username postgres \
--password mypassword

Sin embargo, la conexión siempre expira.

Imagen 1 - La conexión expiró

Imagen 2 - La conexión expiró

Según mi investigación, este error está relacionado con RDS siendo accesible públicamente y si las reglas de entrada tienen una regla que especifica mi IP.

Mi RDS es accesible públicamente, pero el error persiste:

Accesible públicamente

Regla agregada con mi IP

¿Alguien tiene alguna idea de cuál puede ser el problema?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Posibles razones por las que se produce un tiempo de espera de conexión en este escenario podrían ser:

    • Reglas de grupo de seguridad: Aunque se haya agregado la regla de entrada que especifica la dirección IP al grupo de seguridad de la instancia de RDS, asegúrese de agregar la misma regla al grupo de seguridad del clúster EMR. Además, verifique si alguna regla de salida está bloqueando la conexión.
    • Configuración de VPC: Si las instancias de RDS y EMR se encuentran en diferentes VPC, entonces no pueden comunicarse entre sí directamente. En este caso, es necesario utilizar la interconexión de VPC o una VPN para establecer la conexión. Además, asegúrese de que las subredes, las tablas de enrutamiento y las pasarelas NAT estén configuradas correctamente.
    • Estado de la instancia de RDS: Si la instancia de RDS no está en estado “Disponible”, es posible que no acepte conexiones. Verifique el estado de la instancia en la Consola de RDS.
    • Versión del controlador JDBC: En algunos casos, el controlador JDBC utilizado por Sqoop puede estar desactualizado o ser incompatible con la instancia de RDS. Asegúrese de tener la última versión del controlador y de que sea compatible con la versión de PostgreSQL utilizada por la instancia de RDS.
    • Configuraciones de firewall: Verifique si hay algún firewall bloqueando el puerto utilizado para la conexión JDBC. Además, asegúrese de que la base de datos de Postgres esté escuchando en el puerto especificado (5432 en este caso).

    Puede intentar seguir los siguientes pasos para depurar el problema:

    • Utilice telnet para verificar si la instancia de RDS es accesible desde el clúster EMR. telnet <punto de="" conexión="" de="" rds=""> 5432. Si falla, hay un problema de conectividad. Si el comando tiene éxito, intente conectarse utilizando psql psql -h <punto de="" conexión="" de="" rds=""> -U postgres SportsDB.
    • Habilite los registros de flujo de VPC y verifique si hay paquetes rechazados. Esto puede ayudar a identificar cualquier problema relacionado con ACL de red o grupos de seguridad.
    • Intente conectarse a la instancia de RDS desde otra máquina cliente utilizando el mismo controlador JDBC y cadena de conexión. Si esta conexión tiene éxito, entonces el problema puede estar relacionado con el clúster EMR o Sqoop en sí mismo.

Comments are closed.