virginia ec2 east conectar aws mysql amazon-web-services amazon-ec2 amazon-rds

ec2 - mysql aws



No se puede conectar a la instancia de RDS desde la instancia de EC2 (7)

Aparentemente, multi-AZ arruina todo. Como la configuración multi-AZ predeterminada colocó mi base de datos en la región us-east-1d, y mi instancia EC2 estaba en la región us-east-1a, el DNS no se enrutaba correctamente. Recreé la instancia de RDS como no multi-AZ, y la hice en vivo en us-east-1a, y todo está feliz.

Si hay super genios en lo que respecta al enrutamiento DNS en AWS con capacidades RDS, ELB y multi-AZ, sería increíble saber cómo hacerlo, ya que esto no está documentado en ninguna parte de la documentación de Amazon Web Service. .

Desde la instancia EC2 i-78a8df00, intento conectarme a la instancia de RDS mysql. ************. Us-east-1.rds.amazonaws.com. Ambos están en la región este de Estados Unidos. Agregué el grupo de seguridad de la instancia EC2 (sg - ********) al grupo de seguridad RDS, pero eso no ayudó. Parece ser un problema de cortafuegos / DNS ya que está agotando el tiempo de ejecución de este comando:

ubuntu@ip-10-195-189-237:~$ mysql -h mysql.************.us-east-1.rds.amazonaws.com

ERROR 2003 (HY000): No se puede conectar al servidor MySQL en ''mysql. ************. Us-east-1.rds.amazonaws.com'' (110)

Puedo conectarme a la instancia de RDS desde mi máquina local utilizando la misma línea que la anterior. Probé varias soluciones de foro, pero esas no ayudan.


De acuerdo con el documento de Amazon , deberíamos usar:

PROMPT> mysql -h <endpoint> -P 3306 -u <mymasteruser> -p

donde punto final y mymasteruser (nombre de usuario) son de su instancia de RDS.

Resolví ese problema usando la dirección IP pública directamente (del punto final) en lugar del punto final (****. Us-east-1.rds.amazonaws.com). Puede obtener la dirección pública del IP usando el comando "ping" ( ping ****. us-east-1.rds.amazonaws.com)


Información adicional para las personas que podrían tener problemas similares al intentar conectarse a RDS o RedShift:

1) Verificar grupos de seguridad

Verifique que el grupo de seguridad para la instancia RDS permita el acceso desde el grupo de seguridad al que pertenece su servidor fuente (o su IP agregada directamente si es externa a AWS). El grupo de seguridad al que debe prestar atención es el especificado en los atributos de instancia RDS de la interfaz de usuario de la consola RDS (denominada "grupo de seguridad").

NOTA : los grupos de seguridad de la base de datos pueden ser diferentes de los grupos de seguridad AWS EC2. Si su instancia de RDS está en EC2 clásico / público, debe verificar en la sección "grupo de seguridad de la base de datos" de la IU de RDS. Para los usuarios de VPC, el grupo de seguridad será un grupo de seguridad de VPC normal (el nombre sg-xxx se incluirá en los atributos de la instancia de RDS).

2) Confirme que el DNS no es un problema.

Amazon usa DNS dividido, por lo que una búsqueda DNS externa a AWS devolverá la IP pública mientras que una búsqueda interna de AWS devolverá una IP privada. Si sospecha que se trata de un problema de DNS, ¿ha confirmado que se han devuelto diferentes direcciones IP de diferentes zonas de disponibilidad? Si diferentes AZ obtienen direcciones IP diferentes, deberá ponerse en contacto con el soporte de AWS.

3) Confirme la conectividad de red estableciendo una conexión de socket.

Es probable que las herramientas como tracepath y traceroute no ayuden, ya que actualmente RDS descarta el tráfico ICMP.

Pruebe la conectividad del puerto tratando de establecer una conexión de socket a la instancia RDS en el puerto 3306 (mysql, o 5432 para postgres). Comience por encontrar la IP de la instancia de RDS y use telnet o nc:

telnet x.x.x.x 3306 nc -vz x.x.x.x 3306

a) Si su intento de conexión no tiene éxito y falla de inmediato, es probable que el puerto esté bloqueado o que el host remoto no esté ejecutando un servicio en ese puerto. Es posible que deba contratar el soporte de AWS para solucionar los problemas. Si se conecta desde fuera de AWS, intente conectarse desde otra instancia dentro de AWS primero (ya que su firewall podría estar bloqueando esas conexiones).

b) Si su conexión no es exitosa y obtiene un tiempo de espera, es probable que los paquetes sean descartados / ignorados por un firewall o que los paquetes regresen a una ruta de red diferente. Puede confirmar esto ejecutando netstat -an | grep SYN netstat -an | grep SYN (desde una ventana / sesión de CLI diferente mientras se está ejecutando y esperando que el comando telnet / nc expire). Las conexiones en el estado SYN significan que ha enviado una solicitud de conexión, pero que no ha recibido nada atrás (SYN_ACK o rechazo / bloqueo). Por lo general, esto significa que un firewall o grupo de seguridad está ignorando o soltando paquetes.

Compruebe para asegurarse de que no está utilizando iptables o una puerta de enlace NAT entre su host y la instancia de RDS. Si está en una VPC, también asegúrese de permitir el tráfico de salida / salida desde el host de origen.

c) Si su prueba de conexión de socket fue exitosa, pero no puede conectarse con un cliente mysql (CLI, workbench, aplicación, etc.), eche un vistazo a la salida de netstat para ver en qué estado se encuentra la conexión (reemplace xxxx con la dirección IP real de la instancia RDS):

netstat -an | grep xxxx

Si estaba estableciendo una conexión al usar telnet o NC, pero ve el estado ''SYN'' cuando usa un cliente mysql, es posible que se encuentre con un problema de MTU.

RDS, en el momento en que está escrito, puede no admitir paquetes ICMP utilizados para PMTUD ( https://en.wikipedia.org/wiki/Path_MTU_Discovery#Problems_with_PMTUD ). Esto puede ser un problema si intenta acceder a RDS o RedShift que está en una VPC desde una instancia clásica de ec2 a través de ClassicLink. Intente bajar la MTU con lo siguiente, luego vuelva a probar:

sudo ip link show # take note of the current MTU (likely 1500 or 9001) sudo ip link set dev eth0 mtu 1400

Si la MTU inferior funcionó, asegúrese de realizar un seguimiento con el servicio de atención al cliente de AWS para obtener ayuda y mencionar que está viendo un problema de MTU al intentar conectarse a su instancia de RDS. Esto puede suceder si los paquetes TCP se envuelven con encapsulamiento para tunelización, lo que resulta en una MTU más baja utilizable para los paquetes de datos / carga. Bajar la MTU en el servidor de origen permite que los paquetes envueltos sigan ajustados por debajo del límite.

Si no funcionó, configure su MTU como predeterminado y active el soporte de AWS para una mayor resolución de problemas.


Mientras que el problema de Mark parecía tener algo que ver con el enrutamiento multi-AZ y EC2 classic, me encontré con este mismo problema hoy mismo.

Para solucionarlo, modifiqué el Grupo de seguridad que se creó automáticamente con mi instancia RDS agregando las dos direcciones IP privadas de mi instancia EC2.

Este fue un problema bastante obvio, pero soy nuevo en AWS en general, así que espero que esto sea útil para otros como yo.


Parece que en algún momento entre la última publicación y esta publicación, Amazon arregló el problema de enrutamiento DNS, porque todo funciona bien ahora para rds multi-AZ ...


Tuve el mismo problema hoy cuando mi instancia de EC2 de repente perdió el acceso a la instancia de RDS y Wordpress dejó de funcionar. Los grupos de seguridad eran correctos e incluso pude conectarme a MySQL desde la consola en la instancia EC2 pero no desde PHP. Por alguna razón, reiniciar el servidor EC2 me ayudó.


Tuve un problema similar cuando giré una nueva instancia de EC2, pero no cambié la configuración en el grupo de seguridad RDS de la dirección de IP entrante permitida para conectarme al puerto 3306 de mi instancia de RDS.

El bit confuso era una opción en el panel RDS, llamada Grupos de seguridad. No lo necesitas para resolver el problema.

Lo que realmente necesita es ir a la lista de instancias RDS, hacer clic en la instancia que está intentando conectar, luego hacer clic en la pestaña central, ubicar la sección Seguridad y red y hacer clic en el nombre del grupo de seguridad.

Esto debería abrir una nueva pestaña o ventana del navegador con detalles del grupo de seguridad. Ubique varias pestañas en la parte inferior, seleccione la pestaña Entrada y haga clic en el botón Editar .

Cambie el valor a la dirección IP de su instancia EC2 o bloques IPv4 CIDR, por ejemplo

174.33.0.0/16

Para obtener este valor, puede ingresar a su instancia y ejecutar ifconfig o ejecutar EC2 Manager en el navegador y ubicar el valor de IP privadas en los detalles de su instancia.