Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Problemas de conexão

Modo de foco
Problemas de conexão - Amazon DocumentDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Está tendo problemas para se conectar? Aqui estão alguns cenários comuns e como resolvê-los.

Tópicos

Não é possível conectar-se a um endpoint do Amazon DocumentDB

Quando você tentar se conectar ao Amazon DocumentDB, a mensagem de erro a seguir é uma das mais comuns que você pode receber.

connecting to: mongodb://docdb-2018-11-08-21-47-27.cluster-ccuszbx3pn5e.us-east- 1.docdb.amazonaws.com:27017/ 2018-11-14T14:33:46.451-0800 W NETWORK [thread1] Failed to connect to 172.31.91.193:27017 after 5000ms milliseconds, giving up. 2018-11-14T14:33:46.452-0800 E QUERY [thread1] Error: couldn't connect to server docdb-2018-11-08-21-47-27.cluster-ccuszbx3pn5e.us-east-1.docdb.amazonaws.com:27017, connection attempt failed : connect@src/mongo/shell/mongo.js:237:13 @(connect):1:6 exception: connect failed

O que essa mensagem de erro normalmente significa é que seu cliente (o shell do mongo, nesse exemplo) não pode acessar o endpoint do Amazon DocumentDB. Este pode ser o caso por vários motivos:

Conectar de endpoints públicos

Você está tentando se conectar a um cluster do Amazon DocumentDB diretamente do seu laptop ou máquina de desenvolvimento local.

Tentar se conectar a um cluster do Amazon DocumentDB diretamente de um endpoint público, como seu laptop ou máquina de desenvolvimento local, falhará. O Amazon DocumentDB é apenas uma nuvem privada virtual (VPC) e não oferece suporte a endpoints públicos no momento. Assim, você não poderá se conectar diretamente ao seu cluster do Amazon DocumentDB do seu laptop nem do ambiente de desenvolvimento local fora da sua VPC.

Para se conectar a um cluster do Amazon DocumentDB de fora de uma Amazon VPC, você pode usar o túnel SSH. Para obter mais informações, consulte Conectar-se a um cluster do Amazon DocumentDB de fora de uma Amazon VPC. Além disso, se o ambiente de desenvolvimento estiver em outra Amazon VPC, você também poderá usar o VPC Peering e conectar-se ao seu cluster do Amazon DocumentDB de outra na mesma região ou em uma região diferente.

Conexões inter-regionais

Você está tentando se conectar a um cluster do Amazon DocumentDB em outra região.

Se você tentar se conectar a um cluster Amazon DocumentDB a partir de uma EC2 instância da Amazon em uma região diferente da região do cluster — por exemplo, tentando se conectar a um cluster na região Leste dos EUA (Norte da Virgínia) (us-east-1) da região Oeste dos EUA (Oregon) (us-west-2) — a conexão falhará.

Para verificar a região do seu cluster do Amazon DocumentDB, execute o comando a seguir. A região está no endpoint.

aws docdb describe-db-clusters \ --db-cluster-identifier sample-cluster \ --query 'DBClusters[*].Endpoint'

A saída dessa operação é semelhante à seguinte.

[ "sample-cluster.node.us-east-1.docdb.amazonaws.com" ]

Para verificar a região da sua EC2 instância, execute o comando a seguir.

aws ec2 describe-instances \ --query 'Reservations[*].Instances[*].Placement.AvailabilityZone'

A saída dessa operação é semelhante à seguinte.

[ [ "us-east-1a" ] ]

Conectando-se a partir de uma Amazon diferente VPCs

Você está tentando se conectar a um cluster do Amazon DocumentDB a partir de uma VPC diferente da Amazon VPC na qual seu cluster está implantado.

Se o cluster do Amazon DocumentDB e a EC2 instância da Amazon estiverem no mesmo Região da AWS, mas não no mesmo Amazon VPC, você não poderá se conectar diretamente ao seu cluster do Amazon DocumentDB, a menos que o emparelhamento de VPC esteja habilitado entre os dois Amazon. VPCs

Para verificar a Amazon VPC de sua instância do Amazon DocumentDB, execute o comando a seguir.

aws docdb describe-db-instances \ --db-instance-identifier sample-instance \ --query 'DBInstances[*].DBSubnetGroup.VpcId'

Para verificar a Amazon VPC da sua EC2 instância da Amazon, execute o comando a seguir.

aws ec2 describe-instances \ --query 'Reservations[*].Instances[*].VpcId'

O grupo de segurança bloqueia as conexões de entrada.

Você está tentando se conectar a um cluster do Amazon DocumentDB e o grupo de segurança do cluster não permite conexões de entrada na porta do cluster (porta padrão: 27017).

Suponha que seu cluster Amazon DocumentDB e sua EC2 instância da Amazon estejam na mesma região e na Amazon VPC e usem o mesmo grupo de segurança da Amazon VPC. Se você não conseguir se conectar ao cluster do Amazon DocumentDB, a causa provável é que o grupo de segurança (ou seja, firewall) do cluster não permite conexões de entrada na porta escolhida para o cluster do Amazon DocumentDB (a porta padrão é 27017 ).

Para verificar a porta do seu cluster do Amazon DocumentDB, execute o comando a seguir.

aws docdb describe-db-clusters \ --db-cluster-identifier sample-cluster \ --query 'DBClusters[*].[DBClusterIdentifier,Port]'

Para obter o seu grupo de segurança do Amazon DocumentDB para o seu cluster, execute o seguinte comando.

aws docdb describe-db-clusters \ --db-cluster-identifier sample-cluster \ --query 'DBClusters[*].[VpcSecurityGroups[*],VpcSecurityGroupId]'

Para verificar as regras de entrada do seu grupo de segurança, consulte os seguintes tópicos na EC2 documentação da Amazon:

Problema de preferência de leitura do driver Java Mongo

As preferências de leitura do cliente não são respeitadas e alguns clientes não podem gravar no Amazon DocumentDB após o failover, a menos que sejam reinicializados.

Esse problema, descoberto pela primeira vez no Java Mongo Driver 3.7.x, ocorre quando um cliente estabelece uma conexão com o Amazon DocumentDB usando MongoClientSettings e, especificamente, ao encadear o método. applyToClusterSettings As configurações do MongoClient cluster podem ser definidas usando alguns métodos diferenteshosts(), comorequiredReplicaSetName(), mode() e.

Quando o cliente especifica apenas um host no método hosts(), o modo é definido como em ClusterConnectionMode.SINGLE vez de ClusterConnectionMode.MULTIPLE Isso faz com que o cliente desconsidere a preferência de leitura e se conecte apenas ao servidor configurado em hosts(). Portanto, mesmo que as configurações do cliente sejam inicializadas como abaixo, todas as leituras ainda irão para a primária em vez da secundária.

final ServerAddress serverAddress0 = new ServerAddress("cluster-endpoint", 27317)); final MongoCredential credential = MongoCredential.createCredential("xxx", "admin", "xxxx".toCharArray()); final MongoClientSettings settings = MongoClientSettings.builder() .credential(credential) .readPreference(ReadPreference.secondaryPreferred()) .retryWrites(false) .applyToSslSettings(builder -> builder .enabled(false)) .applyToClusterSettings(builder -> builder.hosts( Arrays.asList(serverAddress0 )) .requiredReplicaSetName("rs0")) .build(); MongoClient mongoClient = MongoClients.create(settings);

Caso de failover

Usando as configurações de conexão do cliente acima, se houver um failover e uma atualização atrasada do registro DNS para o endpoint do gravador do cluster, o cliente ainda tentará emitir gravações no gravador antigo (agora leitor após o failover). Isso resulta em um erro do lado do servidor (não principal) que não é tratado adequadamente pelo driver Java (isso ainda está sob investigação). Assim, o cliente pode ficar em mau estado até que o servidor da aplicação seja reinicializado, por exemplo.

Há duas soluções alternativas para isso:

  • Clientes que se conectam ao Amazon DocumentDB por meio de uma cadeia de conexão não terão esse problema, pois ClusterConnectionMode serão configurados como MULTIPLE ao definir a preferência de leitura.

    MongoClientURI mongoClientURI = new MongoClientURI("mongodb://usr:pass:cluster-endpoint:27317/test?ssl=false&replicaSet=rs0&readpreference=secondaryPreferred"); MongoClient mongoClient = MongoClients.create(mongoClientURI.getURI());

    Ou usando o construtor MongoClientSettings com o métodoapplyConnectionString.

    final MongoClientSettings settings = MongoClientSettings.builder() .credential(credential) .applyConnectionString(new ConnectionString("usr:pass:cluster-endpoint:27317/test?ssl=false&replicaSet=rs0&readpreference=secondaryPreferred")) .retryWrites(false) .applyToSslSettings(builder → builder .enabled(false)) .build(); MongoClient mongoClient = MongoClients.create(settings);
  • Definido explicitamente de ClusterConnectionMode para MULTIPLE. Isso só é necessário ao usar applyToClusterSettings e hosts().size() == 1.

    final ServerAddress serverAddress0 = new ServerAddress("cluster-endpoint", 27317)); final MongoCredential credential = MongoCredential.createCredential("xxx","admin", "xxxx".toCharArray()); final MongoClientSettings settings = MongoClientSettings.builder() .credential(credential) .readPreference(ReadPreference.secondaryPreferred()) .retryWrites(false) .applyToSslSettings(builder → builder .enabled(false)) .applyToClusterSettings(builder → builder .hosts(Arrays.asList(serverAddress0)) .requiredReplicaSetName("rs0")) .mode(ClusterConnectionMode.MULTIPLE)) .build(); MongoClient mongoClient = MongoClients.create(settings);

Testar uma conexão com uma instância do Amazon DocumentDB

Você pode testar sua conexão com um cluster usando ferramentas comuns do Linux ou Windows.

Em um terminal Linux ou Unix, teste a conexão inserindo o seguinte (substitua cluster-endpoint pelo endpoint e port pela porta da sua instância):

nc -zv cluster-endpoint port

Veja a seguir um exemplo de operação e o valor de retorno:

nc -zv docdbTest.d4c7nm7stsfc0.us-west-2.docdb.amazonaws.com 27017 Connection to docdbTest.d4c7nm7stsfc0.us-west-2.docdb.amazonaws.com 27017 port [tcp/*] succeeded!

Conectar a um endpoint inválido

Ao conectar-se a um cluster do Amazon DocumentDB e usar um endpoint de cluster inválido, um erro semelhante ao seguinte será exibido.

mongo --ssl \ --host sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 \ --sslCAFile global-bundle.pem \ --username <user-name> \ --password <password>

O resultado se parece com:

MongoDB shell version v3.6 connecting to: mongodb://sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/ 2018-11-14T17:21:18.516-0800 I NETWORK [thread1] getaddrinfo("sample-cluster.node.us-east-1.docdb.amazonaws.com") failed: nodename nor servname provided, or not known 2018-11-14T17:21:18.537-0800 E QUERY [thread1] Error: couldn't initialize connection to host sample-cluster.node.us-east-1.docdb.amazonaws.com, address is invalid : connect@src/mongo/shell/mongo.js:237:13@(connect):1:6 exception: connect failed

Para obter o endpoint válido para um cluster, execute o seguinte comando:

aws docdb describe-db-clusters \ --db-cluster-identifier sample-cluster \ --query 'DBClusters[*].[Endpoint,Port]'

Para obter o endpoint válido para uma instância, execute o seguinte comando:

aws docdb describe-db-instances \ --db-instance-identifier sample-instance \ --query 'DBInstances[*].[Endpoint.Address,Endpoint.Port]'

Para obter mais informações, consulte Noções básicas sobre endpoints do Amazon DocumentDB.

A configuração do driver afeta o número de conexões

Ao usar o driver do cliente para se conectar a um cluster do Amazon DocumentDB, é importante considerar o parâmetro de configuração maxPoolSize. A configuração maxPoolSize determina o número máximo de conexões que o driver do cliente manterá em seu pool de conexões.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.