O que fazer se não conseguir se conectar a uma instância de BD do RDS?
Possíveis causas
Localize a falha a partir dos seguintes aspectos:
- Verifique se a instância de BD está disponível.
Por exemplo, se o sistema estiver com defeito, uma instância de BD estiver anormal ou uma instância de BD ou uma tabela estiver bloqueada.
- (Comum) Verifique se a conexão do cliente está correta.
- Baixe o pacote de instalação do banco de dados do site oficial. Para obter detalhes, consulte Como instalar um cliente de MongoDB?
- Use um cliente de MongoDB 4.0 ou posterior para se conectar à instância de BD.
- Se você se conectar a uma instância de BD em uma rede privada, verifique se a instância de BD e o ECS estão na mesma região e VPC.
- Se você se conectar a uma instância de BD em uma rede pública, vincule um EIP à instância de BD e, em seguida, conecte-se à instância de BD por meio do EIP.
- Verifique o método de conexão.
Execute os seguintes comandos para ativar e desativar o SSL no console: exemplo:
- Ativar SSL: ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p--authenticationDatabaseadmin--ssl --sslCAFile<FILE_PATH> --sslAllowInvalidHostnames
- Desativar SSL: ./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p --authenticationDatabase admin
- Verifique se os parâmetros do comando de conexão estão corretos.
Verifique se os seguintes parâmetros estão configurados corretamente: endereço de conexão, número da porta, nome de usuário, senha e método de conexão.
- (Comum) Verifique se a conectividade de rede está normal.
Conexão de rede privada
- Verifique se a instância do ECS e do DDS estão na mesma região e VPC.
Se o ECS e a instância de banco de dados estiverem em VPCs diferentes, configure uma conexão de emparelhamento de VPC para permitir a comunicação de rede entre as duas VPCs.
- Verifique as regras do grupo de segurança.
- Para acessar uma instância de cluster em um grupo de segurança diferente do ECS, adicione uma regra de entrada para o grupo de segurança.
- No ECS, verifique se a porta da instância de BD pode ser conectada.
Conexão de rede pública
- Verifique as regras do grupo de segurança.
- Para acessar uma instância de cluster em um grupo de segurança diferente do ECS, adicione uma regra de entrada para o grupo de segurança.
- Verifique as regras de ACL da rede.
- Efetue o ping do ECS para a instância de BD na mesma região.
Acesso entre blocos de CIDR (configuração do mapeamento de endereços IP)
Se um cliente e uma instância de conjunto de réplicas forem implementados em blocos CIDR diferentes e o cliente não estiver em 192.168.0.0/16, 172.16.0.0/24 ou 10.0.0.0/8, configure o Acesso entre CIDRs para que a instância se comunique com o cliente.
- Certifique-se de que o ECS de origem possa se comunicar com o nó da instância. Se a rede for anormal, defina as configurações de rede consultando Conexão de emparelhamento da VPC.
- Para obter detalhes sobre como configurar o acesso entre CIDRs, consulte Configuração do acesso entre CIDRs.
- Verifique se a instância do ECS e do DDS estão na mesma região e VPC.
- (Comum) Verifique se o número de conexões com a instância de BD atinge o limite superior.
Se houver um número excessivo de conexões de banco de dados, as aplicações podem não ser conectadas.
- (Comum) Verifique se o disco está cheio.
Se o uso do disco da instância for muito alto, o status da instância será anormal e a instância não poderá ser conectada.
- Verifique se o uso da CPU é muito alto.
O uso da CPU é alto ou próximo de 100%. Como resultado, o processamento de leitura/gravação de dados é lento, as conexões não podem ser obtidas e os erros são relatados, afetando a execução do serviço.
- Exiba as mensagens de erro de conexão comuns
Encontre soluções correspondentes com base em mensagens de erro de conexão.
Localização de falhas
- Verifique se a instância de BD está disponível.
Método de verificação: verifique se o status da instância do BD está Available no console.
Possível causa: o sistema do DDS está com defeito, o status da instância é anormal ou a instância ou tabela está bloqueada.
Solução
- Se o status da instância do DDS for anormal, entre em contato com a equipe de O&M.
- Se o sistema estiver com defeito ou a instância ou tabela estiver bloqueada, reinicie a instância. Para obter detalhes, consulte Reiniciação de uma instância.
Figura 1 Verificar o status da instância
- Verifique se a conexão do cliente está correta.
Recomendamos que você use um cliente de MongoDB da versão 4.0 ou posterior para se conectar à instância. Para obter detalhes sobre como instalar um cliente de MongoDB, consulte Como instalar um cliente de MongoDB?
O seguinte usa a conexão a um cluster como exemplo:
- Para obter detalhes sobre como se conectar a uma instância de BD em uma rede privada, consulte Conexão a uma instância de BD em redes privadas.
- Para obter detalhes sobre como se conectar a uma instância de BD em uma rede pública, consulte Conexão a uma instância de BD em redes públicas.
Tabela 1 Métodos de conexão Método
Cenário
Rede privada
O DDS fornece um endereço IP privado por padrão.
Se suas aplicações forem implementadas em um ECS que esteja na mesma região e VPC que a instância de BD, é recomendável conectar-se ao ECS e à instância de BD por meio de um endereço IP privado.
Rede pública
Se não for possível acessar a instância de BD por meio de um endereço IP privado, é aconselhável vincular um EIP à instância de BD e, em seguida, conectar-se à instância de BD por meio do EIP.
Para obter detalhes de preços do EIP, consulte Detalhes de cobrança do EIP.
- Verifique o método de conexão.
- Conexão SSL é recomendada. Ative o SSL na página Connections e carregue o certificado no ECS.
./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p--authenticationDatabaseadmin--ssl --sslCAFile<FILE_PATH> --sslAllowInvalidHostnamesFigura 2 Ativar SSL
- Conexão não criptografada: desative SSL na página Connections.
./mongo --host<DB_HOST>--port<DB_PORT>-u<DB_USER>-p --authenticationDatabase admin
Figura 3 Desativar SSL
- Conexão SSL é recomendada. Ative o SSL na página Connections e carregue o certificado no ECS.
- Verifique se os parâmetros no comando de conexão estão corretos.
Certifique-se de que o endereço de conexão, a porta, o nome de usuário e a senha estejam corretos e tente se conectar à instância de banco de dados novamente no modo SSL.
Exemplo de conexão de rede privada:./mongo mongodb://rwuser:<password>@<DB_HOST>:<DB_PORT>,<DB_HOST>:<DB_PORT>/test?authSource=admin --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidHostnames
- Endereço da conexão
As informações de conexão podem ser obtidas na coluna Address na página Instances.
Figura 4 Endereço da conexão
- Porta do banco de dados
Na guia Private Connection da página Connections, obtenha a porta do banco de dados no campo Database Port.
- Nome de usuário e senha
Se a senha do administrador raiz estiver incorreta ou se você esquecer a senha, redefina a senha do administrador.
- Certificado
Obtenha o nome do certificado SSL no diretório em que o comando é executado.
Exemplo de conexão de rede pública SSL:./mongo mongodb://rwuser:<password>@<DB_HOST>:<DB_PORT>/test?authSource=admin --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidHostnames
- Endereço da conexão
Clique no nome da instância. Na guia Public Connection da página Connections, obtenha o endereço de conexão pública no campo Public Network Connection Address.
- Porta do banco de dados
Na guia Public Connection da página Connections, obtenha a porta do banco de dados no campo Database Port.
- Nome do usuário e senha
Se a senha do administrador raiz estiver incorreta ou se você esquecer a senha, redefina a senha do administrador.
- Certificado
Obtenha o nome do certificado SSL no diretório em que o comando é executado.
- Endereço da conexão
- Verifique se a conexão de rede está normal.
Conexão de rede privada
- Verifique se a instância do ECS e do DDS estão na mesma região e VPC.
- Se o ECS e a instância de BD estiverem em regiões diferentes, eles não poderão se comunicar entre si. Selecione uma região próxima à sua área de serviço para reduzir a latência da rede e obter acesso mais rápido.
- Se o ECS e a instância de BD estiverem em VPCs diferentes, configure uma conexão de emparelhamento de VPC para permitir a comunicação de rede entre as duas VPCs.
- Verifique as regras do grupo de segurança.
Para acessar instâncias de BD em um grupo de segurança diferente do ECS, adicione uma regra de entrada para o grupo de segurança.
- No ECS, verifique se a porta da instância de BD pode ser conectada.
telnet <DB instance address> {8635}
- Se a conexão for normal, a rede é normal.
- Se a conexão falhar, envie um para o atendimento ao cliente para obter assistência.
Conexão de rede pública
- Verifique as regras do grupo de segurança.
Para acessar instâncias de BD em um grupo de segurança diferente do ECS, adicione uma regra de entrada para o grupo de segurança.
- Verifique as regras de ACL da rede.
- Vá para a Check network ACL rules..
- Verifique se a NIC vinculada ao EIP está na sub-rede associada à ACL de rede.
- Verifique se a ACL de rede está habilitada.
A regra de ACL de rede padrão nega todos os pacotes de entrada e de saída. Depois que a ACL da rede é desabilitada, a regra padrão ainda entra em vigor.
- Efetue o ping do ECS para a instância de BD na mesma região.
Se você não conseguir executar o ping do EIP no ECS original, selecione outro ECS na mesma região e faça o ping do EIP novamente. Se o ping for bem-sucedido, a rede é normal. Se o ping falhou, .
Acesso entre blocos de CIDR (configuração do mapeamento de endereços IP)
Se um cliente e uma instância de conjunto de réplicas forem implementados em blocos CIDR diferentes e o cliente não estiver em 192.168.0.0/16, 172.16.0.0/24 ou 10.0.0.0/8, configure o Acesso entre CIDRs para que a instância se comunique com o cliente.
- Certifique-se de que o ECS de origem possa se comunicar com o nó da instância. Se a rede for anormal, defina as configurações de rede consultando Conexão de emparelhamento da VPC.
- Para obter detalhes sobre como configurar o acesso entre CIDRs, consulte Configuração do acesso entre CIDRs.
- Verifique se a instância do ECS e do DDS estão na mesma região e VPC.
- Verifique se o número de conexões com a instância de banco de dados atinge o limite superior.
- Verifique se o número de conexões com a instância de banco de dados atingiu o limite superior. Para obter detalhes, consulte Como consultar e limitar o número de conexões?
Se o número de conexões de instância atingir o limite superior, consulte O que fazer se o número de conexões de uma instância atingir o máximo?
- Verifique se alguma métrica é anormal e se algum alarme é gerado no console do Cloud Eye. O Cloud Eye monitora as métricas do banco de dados, como o uso da CPU, o uso da memória, o uso do espaço de armazenamento e as conexões do banco de dados, e permite que você defina políticas de alarme para identificar riscos antecipadamente se algum alarme for gerado.
- Verifique se o número de conexões com a instância de banco de dados atingiu o limite superior. Para obter detalhes, consulte Como consultar e limitar o número de conexões?
- Verifique se o disco está cheio.
Método de verificação: veja o uso do espaço de armazenamento no console de gerenciamento ou no Cloud Eye.
- No console de gerenciamento
Localize a instância de destino e clique em seu nome para ir para a página Basic Information. Na área Storage Space, visualize o uso do espaço de armazenamento.
Figura 5 Espaço de armazenamento
- No Cloud Eye
Localize a instância de destino e clique em View Metric na coluna Operation. Na página exibida, visualize o uso do espaço de armazenamento.
Possível causa: quando o status da instância é Storage full, a instância precisa preservar pelo menos 15% de sua capacidade para funcionar corretamente.
Solução:
- À medida que os dados do serviço crescem, o espaço de armazenamento original pode ser insuficiente. Você é aconselhado a ampliar o espaço de armazenamento. Para obter detalhes, consulte Expansão de espaço de armazenamento.
- Processe arquivos de dados expirados em tempo hábil.
- Verifique se alguma métrica é anormal e se algum alarme é gerado no console do Cloud Eye. O Cloud Eye monitora as métricas do banco de dados, como o uso da CPU, o uso da memória, o uso do espaço de armazenamento e as conexões do banco de dados, e permite que você defina políticas de alarme para identificar riscos antecipadamente se algum alarme for gerado.
- No console de gerenciamento
- Verifique se o uso da CPU é muito alto.
O uso da CPU é alto ou próximo de 100%. Como resultado, o processamento de leitura/gravação de dados é lento, as conexões não podem ser obtidas e os erros são relatados, afetando a execução do serviço.
Solução: para obter detalhes, consulte O que fazer se o uso da CPU for anormalmente alto?
- Exiba mensagens de erro de conexão comuns.
- Mensagem de falha de conexão: network error while attempting to run command 'isMaster'
Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:
./mongo --host 192.168.168.182 --port 8635 -u rwuser -p xxxxxxxxxx --authenticationDatabase admin
Figura 6 Falhou na conexão
Para obter detalhes sobre como corrigir a falha, consulte Mensagem de falha de conexão: network error while attempting to run command 'isMaster'.
- Mensagens de falha de conexão: No route to host e connection attempt failed.
Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:
mongo --host 192.168.1.6 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames
Mensagem de erro:
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 obter detalhes sobre como corrigir a falha, consulte Mensagens de falha de conexão: "No route to host" e "connection attempt failed".
- Mensagens de falha de conexão: No route to host e connection attempt failed
Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:
mongo --host 192.168.168.116 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames
Mensagem de erro:
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 obter detalhes sobre como corrigir a falha, consulte Mensagens de falha de conexão: "No route to host" e "connection attempt failed".
- Mensagem de falha de conexão: couldn't connect to server.
Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:
mongo --host 192.168.64.201 --port 8635 -u rwuser -p xxxxxxxxx --authenticationDatabase admin --ssl --sslCAFile /root/ca.crt --sslAllowInvalidHostnames
Mensagem de erro:
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 obter detalhes sobre como corrigir a falha, consulte Mensagem de falha de conexão: "couldn't connect to server".
- Mensagem de falha de conexão: cannot list multiple servers in URL without 'replicaSet' option
Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância do conjunto de réplicas do DDS:
./mongo mongodb://rwuser:xxxxxxxxxxx@192.168.168.116:8635,192.168.200.147:8635/test?authSource=admin&replicaSet=replica
Mensagem de erro:
FailedToParse: Cannot list multiple servers in URL without 'replicaSet' option try 'mongo --help' for more information.
Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS compatível com MongoDB 3.4:
mongo "mongodb://rwuser:xxxxxxxxx@192.168.95.167:8635,192.168.92.43:8635/test?authSource=admin"
Mensagem de erro:
FailedToParse: Cannot list multiple servers in URL without 'replicaSet' option try 'mongo --help' for more information.
Para obter detalhes, consulte Mensagem de falha de conexão: cannot list multiple servers in URL without 'replicaSet' option.
- Mensagem de falha de conexão: Timeout while receiving message.
Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS por meio do driver Java:
Mensagem de erro:
org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
Para obter detalhes sobre como corrigir a falha, consulte Mensagem de falha de conexão: "Timeout while receiving message".
- Mensagens de falha de conexão: exception: login failed e U_STRINGPREP_PROHIBITED_ERROR
Um erro é relatado quando você executa o seguinte comando para se conectar a uma instância de BD do DDS:
./mongo "mongodb://rwuser:xxxxxx@192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica"
Mensagem de erro:
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 obter detalhes sobre como corrigir a falha, consulte Mensagens de falha de conexão: exception: login failed e U_STRINGPREP_PROHIBITED_ERROR.
- Mensagem de falha de conexão: network error while attempting to run command 'isMaster'
- Se o problema persistir, envie um para entrar em contato com o atendimento ao cliente da Huawei Cloud para obter assistência.