Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Document Database Service/ Guía del usuario/ Preguntas Frecuentes/ Conexión de bases de datos/ ¿Qué debo hacer si no puedo conectarme a una instancia DDS?
Actualización más reciente 2022-11-07 GMT+08:00

¿Qué debo hacer si no puedo conectarme a una instancia DDS?

Causas posibles

Localice el fallo desde los siguientes aspectos:

  1. Compruebe si la instancia de base de datos está disponible.

    Por ejemplo, si el sistema está defectuoso, una instancia de base de datos es anormal o una instancia de base de datos o una tabla está bloqueada.

  2. (Common) Compruebe si la conexión del cliente es correcta.
    1. Descargue el paquete de instalación de la base de datos desde el sitio web oficial. Para obtener más información, consulte ¿Cómo puedo instalar un cliente MongoDB?
    2. Utilice un cliente de MongoDB 4.0 o posterior para conectarse a la instancia de base de datos.
    3. Si se conecta a una instancia de base de datos a través de una red privada, asegúrese de que la instancia de base de datos y ECS están en la misma región y VPC.
    4. Si se conecta a una instancia de base de datos a través de una red pública, enlaza un EIP a la instancia de base de datos y, a continuación, conéctese a la instancia de base de datos a través del EIP.
  3. Compruebe el método de conexión.

    Ejecute los siguientes comandos para habilitar y deshabilitar SSL en la consola: Ejemplo:

    • Habilitar SSL: ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p--authenticationDatabaseadmin--ssl --sslCAFile<FILE_PATH> --sslAllowInvalidHostnames
    • Desactivar SSL: ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p --authenticationDatabase admin
  4. Compruebe si los parámetros del comando de conexión son correctos.

    Compruebe si los siguientes parámetros están configurados correctamente: dirección de conexión, número de puerto, nombre de usuario, contraseña y método de conexión.

  5. (Common) Compruebe si la conectividad de red es normal.
    Conexión de red privada
    1. Asegúrese de que la instancia ECS y DDS están en la misma región y VPC.

      Si la instancia ECS y DB están en VPC diferentes, configure una conexión de pares de VPC para permitir la comunicación de red entre las dos VPC.

    2. Compruebe las reglas del grupo de seguridad.
      1. Para tener acceso a una instancia de clúster en un grupo de seguridad diferente del ECS, agregue una regla de entrada para el grupo de seguridad.
    3. En el ECS, compruebe si se puede conectar el puerto de instancia de base de datos.

    Conexión de red pública

    1. Compruebe las reglas del grupo de seguridad.
      1. Para tener acceso a una instancia de clúster en un grupo de seguridad diferente del ECS, agregue una regla de entrada para el grupo de seguridad.
    2. Compruebe las reglas de ACL (lista de control de acceso) de la red.
    3. Haga ping del ECS a la instancia de base de datos en la misma región.

    Acceso a bloques entre CIDR (configuración de la asignación de direcciones IP)

    Si un cliente y una instancia de conjunto de réplicas se implementan en diferentes bloques de CIDR y el cliente no está en 192.168.0.0/16, 172.16.0.0/24 o 10.0.0.0/8, configure el acceso Cross-CIDR para que la instancia se comunique con el cliente.

    1. Asegúrese de que el ECS de origen pueda comunicarse con el nodo de instancia. Si la red es anormal, configure la configuración de red haciendo referencia a Conexión de pares de VPC.
    2. Para obtener más información acerca de cómo configurar el acceso a bloques entre CIDR, consulte Configuración del acceso entre CIDR.
  6. (Common) Compruebe si el número de conexiones a la instancia de base de datos alcanza el límite superior.

    Si hay un número excesivo de conexiones de base de datos, es posible que las aplicaciones no estén conectadas.

  7. (Common) Compruebe si el disco está lleno.

    Si el uso del disco de instancia es demasiado alto, el estado de la instancia es anormal y no se puede conectar la instancia.

  8. Compruebe si el uso de la CPU es demasiado alto.

    El uso de CPU es alto o cercano al 100%. Como resultado, el procesamiento de lectura/escritura de datos es lento, no se pueden obtener conexiones y se notifican errores que afectan a la ejecución del servicio.

  9. Ver los mensajes de error de conexión comunes

    Encuentre las soluciones correspondientes basadas en mensajes de error de conexión.

Localización de fallas

Figura 1 Localización de fallos de conexión de instancia
  1. Compruebe si la instancia de base de datos está disponible.

    Método de comprobación: compruebe si el estado de la instancia de base de datos está Available en la consola.

    Causa posible: el sistema DDS está defectuoso, el estado de la instancia es anormal o la instancia o la tabla está bloqueada.

    Solución

    • Si el estado de la instancia DDS es anormal, póngase en contacto con el personal de O&M.
    • Si el sistema está defectuoso o la instancia o la tabla está bloqueada, reinicie la instancia. Para obtener más información, consulte Reiniciar una instancia.
    Figura 2 Comprobación del estado de la instancia
  2. Compruebe si la conexión del cliente es correcta.

    Se recomienda utilizar un cliente MongoDB de la versión 4.0 o posterior para conectarse a la instancia. Para obtener más información sobre cómo instalar un cliente MongoDB, consulte ¿Cómo puedo instalar un cliente MongoDB?

    A continuación se utiliza la conexión a un clúster como ejemplo:

    1. Para obtener más información sobre cómo conectarse a una instancia de base de datos a través de una red privada, consulte Conexión a una instancia de base de datos a través de redes privadas.
    2. Para obtener más información sobre cómo conectarse a una instancia de base de datos a través de una red pública, consulte Conexión a una instancia de base de datos a través de redes públicas.
    Tabla 1 Métodos de conexión

    Método

    Escenario

    Red privada

    DDS proporciona una dirección IP privada de forma predeterminada.

    Si las aplicaciones se implementan en un ECS que se encuentra en la misma región y VPC que la instancia de base de datos, se recomienda que se conecte a la instancia de ECS y de base de datos a través de una dirección IP privada.

    Red pública

    Si no puede acceder a la instancia de base de datos a través de una dirección IP privada, se recomienda vincular un EIP a la instancia de base de datos y, a continuación, conectarse a la instancia de base de datos a través del EIP.

    Para obtener información sobre los precios de EIP, consulta Detalles de facturación de EIP.

  3. Compruebe el método de conexión.
    1. Se recomienda la conexión SSL. Habilite SSL en la página Connections y cargue el certificado en el ECS.
      ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p--authenticationDatabaseadmin--ssl --sslCAFile<FILE_PATH> --sslAllowInvalidHostnames
      Figura 3 Habilitación de SSL
    2. Conexión no cifrada: deshabilite SSL en la página Connections.

      ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p --authenticationDatabase admin

  4. Compruebe si los parámetros del comando de conexión son correctos.

    Asegúrese de que la dirección de conexión, el puerto, el nombre de usuario y la contraseña sean correctos e intente conectarse a la instancia de base de datos de nuevo en modo SSL.

    SSL private network connection example:./mongo mongodb://rwuser:****@<DB_HOST>:<DB_PORT>,<DB_HOST>:<DB_PORT>/test?authSource=admin --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidHostnames

    • Dirección de conexión

      La información de conexión se puede obtener en la columna Address de la página Instance Management.

      Figura 4 Dirección de conexión
    • Puerto de base de datos

      En la pestaña Private Connection de la página Connections, obtenga el puerto de base de datos en el campo Database Port.

    • Nombre de usuario y contraseña

      Si la contraseña del administrador root es incorrecta o olvida la contraseña, restablezca la contraseña del administrador.

    • Certificado

      Obtenga el nombre del certificado SSL del directorio donde se ejecuta el comando.

    SSL public network connection example:./mongo mongodb://rwuser:****@<DB_HOST>:<DB_PORT>/test?authSource=admin --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidHostnames

    • Dirección de conexión

      Haga clic en el nombre de la instancia. En la pestaña Public Connection de la página Connections, obtenga la dirección de conexión pública en el campo Public Network Connection Address.

    • Puerto de base de datos

      En la pestaña Public Connection de la página Connections, obtenga el puerto de base de datos en el campo Database Port.

    • Nombre de usuario y contraseña

      Si la contraseña del administrador root es incorrecta o olvida la contraseña, restablezca la contraseña del administrador.

    • Certificado

      Obtenga el nombre del certificado SSL del directorio donde se ejecuta el comando.

  5. Compruebe si la conexión de red es normal.
    Conexión de red privada
    1. Compruebe si la instancia ECS y DDS están en la misma región y VPC.
      • Si la instancia ECS y DB se encuentran en diferentes regiones, no pueden comunicarse entre sí. Seleccione una región cercana a su área de servicio para reducir la latencia de la red y disfrutar de un acceso más rápido.
      • Si la instancia ECS y DB están en VPC diferentes, configure una conexión de pares de VPC para permitir la comunicación de red entre las dos VPC.
    2. Compruebe las reglas del grupo de seguridad.

      Para acceder a instancias de base de datos en un grupo de seguridad diferente del ECS, agregue una regla de entrada para el grupo de seguridad.

    3. En el ECS, compruebe si se puede conectar el puerto de instancia de base de datos.
      telnet <DB instance address> {8635}
      • Si la conexión es normal, la red es normal.
      • Si la conexión falla, envíe un ticket de servicio al servicio de atención al cliente para obtener ayuda.

    Conexión de red pública

    1. Compruebe las reglas del grupo de seguridad.

      Para acceder a instancias de base de datos en un grupo de seguridad diferente del ECS, agregue una regla de entrada para el grupo de seguridad.

    2. Compruebe las reglas de ACL (lista de control de acceso) de la red.
      1. Vaya a Red ACLs.
      2. Compruebe si la NIC vinculada al EIP está en la subred asociada con ACL de la red.
      3. Compruebe si la ACL de red está habilitada.

        En caso afirmativo, agregue una regla ICMP para permitir el tráfico.

      La regla ACL de red predeterminada deniega todos los paquetes entrantes y salientes. Después de deshabilitar la ACL de red, la regla predeterminada todavía tiene efecto.

    3. Haga ping del ECS a la instancia de base de datos en la misma región.

      Si no puede hacer ping al EIP en el ECS original, seleccione otro ECS en la misma región y vuelva a hacer ping al EIP. Si el ping es correcto, la red es normal. Si el ping falló, cree un ticket de servicio.

    Acceso a bloques entre CIDR (configuración de la asignación de direcciones IP)

    Si un cliente y una instancia de conjunto de réplicas se implementan en diferentes bloques de CIDR y el cliente no está en 192.168.0.0/16, 172.16.0.0/24 o 10.0.0.0/8, configure el acceso Cross-CIDR para que la instancia se comunique con el cliente.

    1. Asegúrese de que el ECS de origen pueda comunicarse con el nodo de instancia. Si la red es anormal, configure la configuración de red haciendo referencia a Conexión de pares de VPC.
    2. Para obtener más información acerca de cómo configurar el acceso a bloques entre CIDR, consulte Configuración del acceso entre CIDR.
  6. Compruebe si el número de conexiones a la instancia de base de datos alcanza el límite superior.
    1. Compruebe si el número de conexiones a la instancia de base de datos ha alcanzado el límite superior. Para obtener más información, consulte ¿Cómo consulto y limito el número de conexiones?

      Si el número de conexiones de instancia alcanza el límite superior, consulte ¿Qué puedo hacer si el número de conexiones de una instancia alcanza su máximo?

    2. Comprueba si las métricas son anormales y si se generan alarmas en la consola de Cloud Eye. Cloud Eye supervisa las métricas de la base de datos, como el uso de la CPU, el uso de la memoria, el uso del espacio de almacenamiento y las conexiones a la base de datos, y le permite establecer políticas de alarmas para identificar los riesgos por adelantado si se generan alarmas.
  7. Compruebe si el disco está lleno.

    Método de verificación: Vea el uso del espacio de almacenamiento en la consola de gestión o en Cloud Eye.

    • En la consola de gestión

      Busque la instancia de destino y haga clic en su nombre para ir a la página Basic Information. En el área Storage Space, vea el uso del espacio de almacenamiento.

    • En Cloud Eye

      Busque la instancia de destino y haga clic en View Metric en la columna Operation. En la página mostrada, vea el uso del espacio de almacenamiento.

    Causa posible: cuando el estado de la instancia es Storage full, la instancia debe conservar al menos el 15% de su capacidad para funcionar correctamente.

    Solución:

    • A medida que crecen los datos de servicio, es posible que el espacio de almacenamiento original sea insuficiente. Se recomienda ampliar el espacio de almacenamiento. Para obtener más información, consulte Ampliación del espacio de almacenamiento.
    • Procesar los archivos de datos caducados de manera oportuna.
    • Comprueba si las métricas son anormales y si se generan alarmas en la consola de Cloud Eye. Cloud Eye supervisa las métricas de la base de datos, como el uso de la CPU, el uso de la memoria, el uso del espacio de almacenamiento y las conexiones a la base de datos, y le permite establecer políticas de alarmas para identificar los riesgos por adelantado si se generan alarmas.
  8. Compruebe si el uso de la CPU es demasiado alto.

    El uso de CPU es alto o cercano al 100%. Como resultado, el procesamiento de lectura/escritura de datos es lento, no se pueden obtener conexiones y se notifican errores que afectan a la ejecución del servicio.

    Solución: Para obtener más información, consulte ¿Qué debo hacer si el uso de la CPU es inusualmente alto?

  9. Ver mensajes de error de conexión comunes.
    • Mensaje de error de conexión: network error while attempting to run command 'isMaster'

      Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia de base de datos DDS:

      ./mongo --host 192.168.168.182 --port 8635 -u rwuser -p xxxxxxxxxx --authenticationDatabase admin

      Figura 5 Error de conexión

      Para obtener más información sobre cómo corregir el error, consulte Mensaje de error de conexión: error de red al intentar ejecutar el comando 'isMaster'.

    • Mensajes de error de conexión: No route to host y connection attempt failed

      Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia de base de datos DDS:

      mongo --host 192.168.1.6 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames

      Mensaje de error:

      MongoDB shell version v3.4.17
      connecting to: mongodb://192.168.1.6:8635/
      2019-09-19T09:38:36.954+0800 W NETWORK  [thread1] Failed to connect to 192.168.1.6:8635, in(checking socket for error after poll), reason: No route to host
      2019-09-19T09:38:36.954+0800 E QUERY    [thread1] Error: couldn't connect to server 192.168.1.6:8635, connection attempt failed :
      connect@src/mongo/shell/mongo.js:240:13
      @(connect):1:6
      exception: connect failed

      Para obtener más información sobre cómo corregir el error, consulte Mensajes de error de conexión: "No hay ruta al host" y "fallo en el intento de conexión".

    • Mensajes de error de conexión: No route to host y connection attempt failed

      Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia de base de datos DDS:

      mongo --host 192.168.168.116 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames

      Mensaje de error:

      MongoDB shell version v3.4.17
      connecting to: mongodb://192.168.168.116:8635/
      2019-09-19T09:39:24.306+0800 W NETWORK  [thread1] The server certificate does not match the host name. Hostname: 192.168.168.116 does not match CN: 172.16.2.65
      MongoDB server version: 4.0.3
      WARNING: shell and server versions do not match
      2019-09-19T09:39:24.329+0800 E QUERY    [thread1] Error: Authentication failed. :
      DB.prototype._authOrThrow@src/mongo/shell/db.js:1461:20
      @(auth):6:1
      @(auth):1:2
      exception: login failed

      Para obtener más información sobre cómo corregir el error, consulte Mensajes de error de conexión: "No hay ruta al host" y "fallo en el intento de conexión".

    • Mensaje de error de conexión: couldn't connect to server.

      Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia de base de datos DDS:

      mongo --host 192.168.64.201 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames

      Mensaje de error:

      MongoDB shell version v3.4.17
      connecting to: mongodb://192.168.64.201:8635/
      2019-09-19T09:45:48.168+0800 W NETWORK  [thread1] Failed to connect to 192.168.64.201:8635 after 5000ms milliseconds, giving up.
      2019-09-19T09:45:48.168+0800 E QUERY    [thread1] Error: couldn't connect to server 192.168.64.201:8635, connection attempt failed :
      connect@src/mongo/shell/mongo.js:240:13
      @(connect):1:6
      exception: connect failed

      Para obtener más información sobre cómo corregir el error, consulte Mensaje de error de conexión: "no se pudo conectar al servidor".

    • Mensaje de error de conexión: cannot list multiple servers in URL without 'replicaSet' option

      Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia de conjunto de réplicas DDS:

      ./mongo mongodb://rwuser:xxxxxxxxxxx@192.168.168.116:8635,192.168.200.147:8635/test?authSource=admin&replicaSet=replica

      Mensaje de error:

      FailedToParse: Cannot list multiple servers in URL without 'replicaSet' option try 'mongo --help' for more information.

      Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia de base de datos DDS compatible con MongoDB 3.4:

      mongo "mongodb://rwuser:xxxxxxxxx@192.168.95.167:8635,192.168.92.43:8635/test?authSource=admin"

      Mensaje de error:

      FailedToParse: Cannot list multiple servers in URL without 'replicaSet' option
      try 'mongo --help' for more information.

      Para obtener más información, consulte Mensaje de error de conexión: no se pueden listar varios servidores en la dirección URL sin la opción 'replicaSet'.

    • Mensaje de error de conexión: Timeout while receiving message.

      Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia de base de datos DDS a través del controlador Java:

      Mensaje de error:

      org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

      Para obtener más información sobre cómo corregir el error, consulte Mensaje de error de conexión: "Timeout mientras recibe el mensaje".

    • Mensajes de error de conexión: exception: login failed y U_STRINGPREP_PROHIBITED_ERROR

      Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia de base de datos DDS:

      ./mongo "mongodb://rwuser:xxxxxx@192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica"

      Mensaje de error:

      MongoDB shell version v4.0.3
      connecting to: mongodb://192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica
      2021-11-05T05:52:53.717+0000 I NETWORK  [js] Starting new replica set monitor for replica/192.168.0.45:8635,192.168.0.96:8635
      2021-11-05T05:52:53.718+0000 I NETWORK  [ReplicaSetMonitor-TaskExecutor] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 5 second timeout)
      2021-11-05T05:52:53.718+0000 I NETWORK  [js] Successfully connected to 192.168.0.96:8635 (1 connections now open to 192.168.0.96:8635 with a 5 second timeout)
      Implicit session: session { "id" : UUID("5945d2a5-8275-4e3c-b06f-632f062a2ead") }
      MongoDB server version: 4.0.3
      2021-11-05T05:52:53.722+0000 I NETWORK  [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
      2021-11-05T05:52:53.722+0000 I NETWORK  [js] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 0 second timeout)
      2021-11-05T05:52:53.723+0000 I NETWORK  [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
      2021-11-05T05:52:53.724+0000 I NETWORK  [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
      2021-11-05T05:52:53.725+0000 I NETWORK  [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
      2021-11-05T05:52:53.725+0000 E QUERY    [js] Error: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR :
      DB.prototype._authOrThrow@src/mongo/shell/db.js:1685:20
      @(auth):6:1
      @(auth):1:2
      exception: login failed

      Para obtener más información sobre cómo corregir el error, consulte Mensajes de error de conexión: exception: login failed and U_STRINGPREP_PROHIBITED_ERROR.

  10. Si el problema persiste, para ponerse en contacto con el servicio de atención al cliente de Huawei Cloud para obtener ayuda.