¿Qué debo hacer si no puedo conectarme a una instancia DDS?
Causas posibles
Localice el fallo desde los siguientes aspectos:
- 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.
- (Common) Compruebe si la conexión del cliente es correcta.
- 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?
- Utilice un cliente de MongoDB 4.0 o posterior para conectarse a la instancia de base de datos.
- 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.
- Si se conecta a una instancia de base de datos a través de una red pública, enlaza una EIP a la instancia de base de datos y, a continuación, conéctese a la instancia de base de datos a través de la EIP.
- 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
- 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.
- (Common) Compruebe si la conectividad de red es normal.
Conexión de red privada
- 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.
- Compruebe las reglas del grupo de seguridad.
- 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.
- En el ECS, compruebe si se puede conectar el puerto de instancia de base de datos.
Conexión de red pública
- Compruebe las reglas del grupo de seguridad.
- 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.
- Compruebe las reglas de ACL de la red.
- 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.
- 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 Interconexión de VPC.
- Para obtener más información acerca de cómo configurar el acceso a bloques entre CIDR, consulte Configuración del acceso entre CIDR.
- Asegúrese de que la instancia ECS y DDS están en la misma región y VPC.
- (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.
- (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.
- 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.
- 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
- 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 1 Comprobación del estado de la instancia
- 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:
- 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.
- 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 despliegan 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 una EIP a la instancia de base de datos y, a continuación, conectarse a la instancia de base de datos a través de la EIP.
Para obtener información sobre los precios de EIP, consulte Detalles de facturación de EIP.
- Compruebe el método de conexión.
- 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> --sslAllowInvalidHostnamesFigura 2 Habilitación de SSL
- Conexión no cifrada: deshabilite SSL en la página Connections.
./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p --authenticationDatabase admin
Figura 3 Deshabilitación de SSL
- Se recomienda la conexión SSL. Habilite SSL en la página Connections y cargue el certificado en el ECS.
- 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.
Ejemplo de conexión de red privada de SSL:./mongo mongodb://rwuser:<password>@<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 Instances.
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 u olvida la contraseña, restablezca la contraseña del administrador.
- Certificado
Obtenga el nombre del certificado SSL del directorio donde se ejecuta el comando.
Ejemplo de conexión de red pública de SSL:./mongo mongodb://rwuser:<password>@<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 u olvida la contraseña, restablezca la contraseña del administrador.
- Certificado
Obtenga el nombre del certificado SSL del directorio donde se ejecuta el comando.
- Dirección de conexión
- Compruebe si la conexión de red es normal.
Conexión de red privada
- Compruebe si la instancia ECS y DDS están en la misma región y VPC.
- Si la instancia ECS y DB están 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.
- 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.
- 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 al servicio de atención al cliente para obtener ayuda.
Conexión de red pública
- 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.
- Compruebe las reglas de ACL de la red.
- Vaya a ACL de red.
- Compruebe si la NIC vinculada a la EIP está en la subred asociada con ACL de la red.
- 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.
- Haga ping del ECS a la instancia de base de datos en la misma región.
Si no puede hacer ping a la EIP en el ECS original, seleccione otro ECS en la misma región y vuelva a hacer ping a la EIP. Si el ping es correcto, la red es normal. Si el ping falló, .
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.
- 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 Interconexión de VPC.
- Para obtener más información acerca de cómo configurar el acceso a bloques entre CIDR, consulte Configuración del acceso entre CIDR.
- Compruebe si la instancia ECS y DDS están en la misma región y VPC.
- Compruebe si el número de conexiones a la instancia de base de datos alcanza el límite superior.
- 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?
- Compruebe 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.
- 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?
- 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.
Figura 5 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 más información, consulte Ampliación vertical del espacio de almacenamiento.
- Procesar los archivos de datos caducados de manera oportuna.
- Compruebe 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.
- En la consola de gestión
- 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?
- 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 6 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 route to host" y "connection attempt failed".
- 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 route to host" y "connection attempt failed".
- 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: "couldn't connect to server".
- 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: cannot list multiple servers in URL without 'replicaSet' option.
- 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 while receiving message".
- 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.
- Mensaje de error de conexión: network error while attempting to run command 'isMaster'
- Si el problema persiste, para ponerse en contacto con el servicio de atención al cliente de Huawei Cloud para obtener ayuda.