Solución de problemas comunes de conexión a RDS desde instancias EC2
Conectar una instancia de Amazon EC2 a una instancia de Amazon Relational Database Service (RDS) es una operación fundamental en muchas arquitecturas de AWS. Sin embargo, las complejidades de la configuración de red a menudo provocan fallos de conexión. Esta guía proporciona un enfoque sistemático para diagnosticar y resolver los problemas de conectividad más comunes entre su capa de cómputo (EC2) y su capa de base de datos administrada (RDS).
Comprendiendo que tanto EC2 como RDS residen dentro del entorno de AWS Virtual Private Cloud (VPC), la mayoría de los problemas de conexión se derivan de reglas de grupos de seguridad incorrectas, enrutamiento de subredes o configuraciones erróneas de parámetros de base de datos. Al verificar metódicamente estos componentes, puede restaurar rápidamente el acceso a la base de datos.
Requisitos previos para una conexión exitosa
Antes de sumergirse en la solución de problemas, asegúrese de que los siguientes elementos fundamentales estén configurados correctamente:
- Alineación de VPC: Tanto la instancia EC2 como la instancia RDS deben residir idealmente dentro de la misma VPC para una configuración más simple, aunque la conectividad entre VPC es posible a través de VPC Peering.
- Zonas de Disponibilidad (AZs): Asegúrese de que su infraestructura de aplicación (EC2) pueda alcanzar la infraestructura de la base de datos (RDS) a través de las AZ si es necesario, aunque el enrutamiento generalmente maneja esto dentro de la VPC.
- Accesibilidad de red: Confirme que la instancia EC2 se esté ejecutando y tenga una conexión de red activa (por ejemplo, que pueda acceder a internet u otros servicios internos).
Paso 1: Verifique las configuraciones del Grupo de Seguridad (El culpable más común)
Los Grupos de Seguridad actúan como firewalls virtuales tanto para su instancia EC2 como para su instancia RDS. Una configuración errónea aquí es la fuente de la gran mayoría de los fallos de conexión.
A. Verificación del Grupo de Seguridad de EC2
Su instancia EC2 necesita Reglas de Salida que permitan que el tráfico salga por el puerto de la base de datos. Por defecto, la mayoría de los grupos de seguridad permiten todo el tráfico saliente (0.0.0.0/0 en todos los protocolos/puertos), pero es prudente verificar esto.
B. Verificación de las Reglas de Entrada del Grupo de Seguridad de RDS
Este es el paso crítico. El Grupo de Seguridad de RDS debe permitir explícitamente el tráfico entrante desde la instancia EC2.
Verificación accionable:
- Navegue a la consola de RDS y seleccione su instancia de base de datos.
- Vaya a la pestaña Conectividad y seguridad y encuentre los Grupos de Seguridad asociados.
- Edite las Reglas de Entrada.
- Asegúrese de que haya una regla que permita el tráfico en el puerto de base de datos específico (por ejemplo, 3306 para MySQL, 5432 para PostgreSQL).
- El Origen de esta regla debe ser el ID del Grupo de Seguridad de su instancia EC2, o el rango IP privado específico de la instancia EC2 si no está utilizando referencias de grupos de seguridad.
Mejor Práctica: Siempre haga referencia al ID del Grupo de Seguridad del recurso de origen (EC2) en lugar de utilizar direcciones IP específicas en el campo de origen. Esto permite que la conexión persista incluso si la IP privada de la instancia EC2 cambia (por ejemplo, durante el escalado o el reinicio).
Ejemplo de Regla de Entrada (PostgreSQL):
| Tipo | Protocolo | Rango de puertos | Origen |
|---|---|---|---|
| PostgreSQL | TCP | 5432 | sg-012345abcdef67890 (ID de su Grupo de Seguridad EC2) |
Paso 2: Confirme la Accesibilidad Pública y el Endpoint de RDS
Si su instancia EC2 no se encuentra en una subred privada o requiere conexión a través de la internet pública (generalmente desaconsejado para producción), debe verificar la Accesibilidad Pública de RDS.
A. Configuración de Accesibilidad Pública
- En la consola de RDS, verifique la pestaña Conectividad y seguridad para la instancia de RDS.
- Si Públicamente accesible está configurado en No, la base de datos solo puede ser alcanzada por recursos dentro de la misma VPC (como una instancia EC2 en una subred privada).
- Si Públicamente accesible está configurado en Sí, asegúrese de que la instancia EC2 tenga una ruta válida a la puerta de enlace a internet o al NAT gateway si está en una subred privada, y que el Grupo de Seguridad permita la entrada desde los rangos IP públicos necesarios (o esté protegido a través de una estricta lista blanca de IP).
B. Verificación del Endpoint
Asegúrese de que la aplicación en la instancia EC2 esté utilizando el Endpoint de RDS correcto (nombre DNS) y el Puerto correcto. Las inconsistencias aquí conducen a tiempos de espera o rechazos de conexión.
Use la utilidad telnet o nc (netcat) desde su instancia EC2 para probar la accesibilidad TCP básica al endpoint y puerto de RDS:
# Para MySQL en el puerto 3306
telnet your-rds-endpoint.rds.amazonaws.com 3306
# Para PostgreSQL en el puerto 5432
nc -zv your-rds-endpoint.rds.amazonaws.com 5432
Una conexión exitosa resulta en una pantalla en blanco o un mensaje de conexión inmediata. Un fallo (tiempo de espera o rechazo) indica un bloqueo de red, generalmente Grupos de Seguridad o Enrutamiento de Subredes.
Paso 3: Analizar la configuración de Subred y Enrutamiento
Si los grupos de seguridad parecen correctos, el problema podría residir en cómo se comunican las subredes.
A. Network ACLs (NACLs)
Las Network ACLs son firewalls sin estado que operan a nivel de subred. Si ha implementado NACLs personalizadas, podrían estar bloqueando el tráfico de retorno necesario para que se complete una conexión.
- Verifique las NACLs tanto para la subred de EC2 como para la subred de RDS.
- Asegúrese de que tanto las reglas de Entrada como las de Salida permitan el tráfico en el puerto de la base de datos y el rango de puertos efímeros (1024-65535) para el tráfico de retorno.
B. VPC Endpoints (Si corresponde)
Si su instancia EC2 está en una subred privada y accede a endpoints de RDS a través de un VPC Gateway Endpoint para S3 o Interface Endpoints para otros servicios, asegúrese de que la política del endpoint permita la comunicación para el servicio RDS si corresponde, aunque RDS generalmente se basa en el enrutamiento VPC estándar.
Paso 4: Verificaciones de la configuración de la instancia de base de datos
Si se confirma la conectividad de red (el Paso 2 tiene éxito), el problema radica dentro del propio motor de la base de datos.
A. Credenciales y Autorización de la Base de Datos
Verifique el nombre de usuario, la contraseña y el nombre de la base de datos que está utilizando la aplicación que se conecta desde la instancia EC2. Los servicios RDS como MySQL y PostgreSQL imponen una autenticación de usuario estricta.
B. Grupos de Parámetros y Estado de la Base de Datos
- Estado de la Base de Datos: Asegúrese de que el estado de la instancia RDS sea Available (Disponible). Si está modificándose, realizando una copia de seguridad o reiniciándose, las conexiones fallarán.
- Grupos de Parámetros: Verifique cualquier Grupo de Parámetros personalizado aplicado a la instancia RDS. Ciertas configuraciones (como
skip-networkingen algunas configuraciones de MySQL, aunque menos común en RDS administrado) pueden impedir las conexiones.
C. Autenticación de Base de Datos IAM (Si se utiliza)
Si está utilizando IAM para la autenticación de la base de datos en lugar de contraseñas, asegúrese de que el rol de IAM adjunto a la instancia EC2 (o el perfil de usuario que ejecuta la aplicación) tenga los permisos correctos (rds-db:connect) y que la cadena de conexión incluya correctamente los tokens de autenticación necesarios.
Resumen del Flujo de Solución de Problemas
Utilice esta lista de verificación priorizada para resolver problemas rápidamente:
- Verificación Ping/Telnet: ¿Puede EC2 alcanzar el puerto RDS usando
telnetonc? (Prueba la ruta de red básica/Grupos de Seguridad). - Grupo de Seguridad de RDS: ¿La regla de Entrada permite el tráfico desde el Grupo de Seguridad de EC2 hacia el puerto RDS?
- NACLs: ¿Están abiertas las reglas de Entrada y Salida para los puertos necesarios (Puerto de Base de Datos + Puertos Efímeros)?
- Endpoint/Credenciales: ¿Es correcta la cadena de conexión y son válidas las credenciales?
- Estado de la BD: ¿Está la instancia RDS Available (Disponible)?
Al verificar metódicamente estas capas, desde el perímetro de seguridad hacia adentro hasta la capa de autenticación de la base de datos, puede aislar y corregir eficientemente la mayoría de los obstáculos comunes de conectividad de EC2 a RDS.