Este tema describe las causas más comunes por las que una instancia de Elastic Compute Service (ECS) no logra conectarse a una instancia de ApsaraDB RDS for MySQL. También explica cómo solucionar cada caso.
Referencia rápida
Identifique su situación para encontrar la solución:
|
Situación |
Causa probable |
Ir a |
|
La instancia de ECS está en una VPC y la de RDS en la red clásica |
Tipos de red distintos |
|
|
La instancia de ECS está en la red clásica y la de RDS en una VPC |
Tipos de red distintos |
|
|
Ambas instancias están en VPC, pero en redes distintas |
Aislamiento de VPC |
|
|
Las instancias de ECS y RDS están en regiones o cuentas de Alibaba Cloud distintas |
Enrutamiento entre regiones o entre cuentas |
|
|
El tipo de red y la VPC coinciden, pero la conexión falla |
Configuración incorrecta de la lista blanca |
Configuración incorrecta de la lista blanca de direcciones IP |
|
Se agota el tiempo de espera de la conexión o no se resuelve el nombre de host |
Problema de DNS |
|
|
La instancia de RDS se quedó a la mitad del cambio |
Problema de estado de la instancia |
Tipos de red distintos
Las instancias de ApsaraDB RDS for MySQL y las instancias de ECS deben tener el mismo tipo de red para comunicarse por una red interna.
La instancia de ECS está en una VPC y la de RDS en la red clásica
-
Método 1 (recomendado): Migre la instancia de RDS a la nube privada virtual (VPC) donde reside la instancia de ECS. Consulte Change the network type of an ApsaraDB RDS instance.
NotaSi ambas instancias están en VPC, deben residir en la misma VPC para comunicarse por una red interna.
Método 2: Adquiera una nueva instancia de ECS en la red clásica. Las instancias de ECS no se pueden migrar de una VPC de vuelta a la red clásica. Una VPC es más segura que la red clásica.
Método 3: Conéctese mediante el public endpoint de la instancia de RDS. Este método no garantiza un rendimiento, seguridad ni estabilidad óptimos.
La instancia de ECS está en la red clásica y la de RDS en una VPC
-
Método 1 (recomendado): Migre la instancia de ECS a la VPC donde reside la instancia de RDS.
NotaSi ambas instancias están en VPC, deben residir en la misma VPC para comunicarse por una red interna.
-
Método 1: Migre la instancia de ECS a la VPC a la que pertenece la instancia de RDS. Este es el método recomendado.
NotaSi la instancia de ECS y la de RDS residen en VPC, deben estar en la misma VPC para comunicarse entre sí por una red interna.
Método 2: Migre la instancia de RDS a la red clásica. Una VPC es más segura que la red clásica.
Método 3: Utilice ClassicLinkOverview of ClassicLink para establecer una conexión de red interna entre la instancia de ECS y la de RDS.
Método 4: Conéctese mediante el public endpoint de la instancia de RDS. Este método no garantiza un rendimiento, seguridad ni estabilidad óptimos.
VPC distintas
Las VPC están aisladas lógicamente entre sí. Aunque la instancia de ECS y la de RDS estén en VPC, deben residir en la misma VPC para comunicarse por una red interna.
Método 1 (recomendado): Mueva ambas instancias a la misma VPC. Cambie the VPC of the RDS instance o the VPC of the ECS instance.
Método 2: Cree una instancia de Cloud Enterprise Network (CEN) para establecer una conexión privada entre las dos VPC. Consulte Use CEN to enable intra-region network communication.
Método 3: Conéctese por Internet mediante el endpoint público de la instancia de RDS. Este método no garantiza un rendimiento, seguridad ni estabilidad óptimos.
Regiones distintas
Cuando la instancia de ECS y la de RDS están en regiones distintas o pertenecen a cuentas de Alibaba Cloud diferentes, el enrutamiento por red interna no está disponible de forma predeterminada. A continuación se presentan las opciones disponibles.
Conexión basada en Internet
Solicite y utilice el public endpoint de la instancia de RDS. El tráfico de Internet entrante y saliente generado en la instancia de RDS no tiene costo.
Conexión basada en red interna
Utilice conexiones de emparejamiento de VPC o una instancia de CEN para unir las VPC entre regiones o cuentas:
|
Opción |
Costo |
Complejidad de configuración |
Más indicado para |
|
Bajo |
Más compleja |
Escenarios sencillos con pocas VPC |
|
|
Alto |
Más sencilla |
Escenarios complejos con muchas VPC |
Conexión a una instancia de RDS desde un centro de datos local
Para conectarse a una instancia de RDS desde un centro de datos local (IDC) por una red interna, primero vincule su red local a una VPC en Alibaba Cloud mediante uno de los siguientes métodos:
Gateway de VPN: Cree un gateway de VPN y establezca una conexión sitio a sitio IPsec-VPN para vincular su red local a la VPC.
Smart Access Gateway (SAG): Despliegue un dispositivo SAG en su centro de datos local para vincular su red local a la VPC.
Express Connect (línea dedicada): Utilice una conexión física dedicada para vincular su centro de datos local a la VPC en Alibaba Cloud.
Una vez que la red local esté vinculada a la VPC, utilice el endpoint interno de la instancia de RDS para establecer la conexión. Si necesita conectarse entre regiones, use Cloud Enterprise Network (CEN) para habilitar la interconexión de VPC entre regiones. Un router de tránsito de CEN admite adjuntar una conexión IPsec de gateway de VPN y una instancia de red SAG.
Configuración incorrecta de la lista blanca de direcciones IP
A continuación se describen los problemas más comunes con la lista blanca.
La lista blanca predeterminada no permite conexiones
La lista blanca predeterminada solo contiene 127.0.0.1, lo cual bloquea todo acceso externo. Agregue las direcciones IP que necesitan acceder a la instancia de RDS. Consulte Configure an IP address whitelist for an ApsaraDB RDS for MySQL instance.
La lista blanca contiene 0.0.0.0/0
Agregar 0.0.0.0/0 a la lista blanca permite el acceso desde cualquier dirección IP. Proceda con precaución.
El modo de lista blanca mejorada está habilitado
Si enhanced whitelist mode está habilitado, el tipo de lista blanca debe coincidir con la ruta de conexión:
|
Ruta de conexión |
IP que se debe agregar |
Tipo de lista blanca |
|
RDS en una VPC, conectado mediante el endpoint interno |
Dirección IP privada de la instancia de ECS |
Tipo VPC |
|
RDS en la red clásica, conectado mediante el endpoint interno |
Dirección IP privada de la instancia de ECS |
Tipo de red clásica |
|
RDS en la red clásica, conectado por Internet |
Dirección IP pública de la instancia de ECS |
Tipo de red clásica |
La dirección IP pública incluida en la lista blanca no funciona
Existen dos causas comunes:
La dirección IP pública es dinámica y cambió después de que usted la agregó.
La herramienta o el sitio web utilizado para consultar la dirección IP pública devolvió un resultado inexacto.
Para obtener ayuda sobre cómo conseguir la dirección IP pública correcta, consulte:
Errores de resolución de nombres de dominio
Si los servidores del sistema de nombres de dominio (DNS) presentan fallas o si cambió la configuración de la tarjeta de interfaz de red (NIC), es posible que el nombre de host de RDS no se resuelva o que apunte a una dirección IP incorrecta.
Prueba de conectividad
Ejecute los siguientes comandos desde la instancia de ECS. Reemplace <Domain name> con el endpoint interno o público de RDS y <Port number> con el puerto de la base de datos:
ping <Domain name>
telnet <Domain name> <Port number>
macOS no incluye Telnet de forma predeterminada. Para probar la conectividad del puerto en macOS, ejecute nc -vz <Domain name> <Port number>.
Si la prueba de conectividad falla, es probable que el problema esté en la resolución de DNS o en la configuración de red. Continúe con la corrección de la configuración de DNS de la NIC que se muestra a continuación.
Corrección de la configuración de DNS de la NIC
-
Abra el archivo de configuración de la NIC en modo de edición:
NotaEjecute
ifconfigpara averiguar el nombre del archivo de configuración de la NIC. El valor predeterminado esifcfg-eth0.vi /etc/sysconfig/network-scripts/<NIC configuration file name> -
Agregue la siguiente configuración de DNS al final del archivo. Si
DNS1yDNS2ya existen, actualice sus valores:DNS1=100.100.XX.XX DNS2=100.100.XX.XX -
Reinicie el servicio de red:
sudo systemctl restart network -
Compruebe que el cambio surtió efecto:
cat /etc/resolv.conf
No se puede resolver el endpoint después de reiniciar o restaurar la instancia, o tras un cambio de DNS
Después de reiniciar o restaurar una instancia de RDS, o cuando cambia su configuración de DNS, el cliente podría reportar que no se resuelve el endpoint público o mostrar otros comportamientos anormales de resolución de DNS. Es posible que las pruebas de ping o telnet hacia la dirección IP sigan funcionando correctamente.
La propagación de DNS puede tardar desde varios minutos hasta decenas de minutos. Durante este periodo, una caché de DNS local obsoleta o un retraso en la propagación global de DNS impide que el cliente resuelva la dirección más reciente.
Espere a que termine la propagación de DNS y vuelva a intentar la conexión mediante el endpoint público.
Para aislar el problema de DNS, utilice temporalmente la dirección IP en un cliente como Navicat. Si la dirección IP funciona pero el endpoint público no, continúe con la solución de problemas de resolución y caché de DNS.
Actualice la configuración o la caché de DNS en el cliente o en el servidor. Siga los pasos de la sección "Corrección de la configuración de DNS de la NIC", vuelva a resolver el endpoint público y pruebe la conexión nuevamente.
Instancia de RDS en estado Creating Network Connection
Vaya a la página Tasks en la consola de ApsaraDB RDS, busque la tarea en estado Creating Network Connection y haga clic en Retry o en Modify switching time. Consulte Use Task Center.
Preguntas frecuentes
¿Por qué las pruebas de ping y telnet funcionan correctamente, pero la aplicación no se conecta?
Una prueba de ping exitosa indica que el host responde a las solicitudes ICMP, mientras que una prueba de telnet exitosa confirma que el puerto de la base de datos es accesible. Si la aplicación aún no logra conectarse, realice las siguientes comprobaciones:
Descarte comportamientos anormales o problemas de configuración en herramientas gráficas como Navicat. Utilice la interfaz de línea de comandos de MySQL para una prueba de conexión de bajo nivel:
mysql -h <endpoint> -P <port> -u <username> -p.Si el comando se ejecuta correctamente, significa que la conexión de red y los permisos de la cuenta probada funcionan bien. Compruebe la versión del controlador de la base de datos, el formato de la cadena de conexión, el endpoint, el puerto, el nombre de la base de datos, el nombre de usuario y la contraseña en el código de la aplicación Java u otra aplicación.
No utilice cuentas del sistema cuyos nombres comiencen con
dmspara probar conexiones de negocio. Cree una cuenta con privilegios o una cuenta estándar de negocio en la consola, pruebe la conexión con ella y compruebe que tenga acceso a la base de datos de destino.
Si el comando también falla, continúe con la solución de problemas de red, lista blanca, puerto y cuenta descrita en este documento.