Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Menu Docs

Solução de problemas de conexão de endpoints privados

Esta página descreve problemas comuns de conexão de endpoints privados e possíveis soluções.

1

Para visualizar o status de cada endpoint privado:

  1. No Atlas, acesse a página Database & Network Access do seu projeto.

    1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

    2. Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.

    3. Na barra lateral, clique em Database & Network Access sob o título Security.

      A página Acesso ao banco de dados e à rede é exibida.

  2. Na barra lateral, clique em Private Endpoint.

  3. Revise os status.

    Os campos Atlas Endpoint Service Status e Endpoint Status mostram o status de cada endpoint privado.

Consulte os status a seguir para ajudá-lo a determinar o estado de suas conexões de endpoint privado:

Atlas Endpoint Service Status

Status
Descrição

Criando link privado

O Atlas está criando o balanceador de carga de rede e os recursos de VPC .

Falhou

Ocorreu uma falha no sistema.

Disponível

O balanceador de carga de rede do Atlas e o serviço de endpoints da VPC estão criados e prontos para receber solicitações de conexão.

Excluindo

O Atlas está excluindo o serviço de endpoint privado.

Endpoint Status

Status
Descrição

Não configurado

Atlas criou o balanceador de carga de rede e o serviço de endpoints VPC, mas o Amazon Web Services ainda não criou o ponto de extremidade da interface. Clique em Edit e conclua o assistente para criar o ponto de extremidade da interface.

Aceitação pendente

A Amazon Web Services recebeu a solicitação de conexão do seu ponto de extremidade da interface com o serviço de endpoints da Atlas VPC.

Pendente

O Amazon Web Services está estabelecendo a conexão entre o ponto de extremidade da interface e o serviço de endpoint do Atlas VPC.

Falhou/rejeitado

A AWS falhou ao estabelecer uma conexão entre os recursos do Atlas VPC e o ponto de extremidade da interface em seu VPC. Esse status pode aparecer como Failed ou Rejected, dependendo do motivo da falha.

As causas comuns incluem:

  • Região ausente na lista de regiões de ponto de extremidade aceitas

  • ID de ponto de extremidade VPC incorreta

  • Transient Amazon Web Services issues

Se você confirmou que sua configuração está correta e a falha pode ser devido a atrasos temporários da AWS, você pode usar o botão Retry na IU do Atlas para tentar novamente a conexão. Se o problema persistir, clique em Edit para corrigir o ID do ponto de extremidade ou verifique se a região do ponto de extremidade está incluída nas regiões de ponto de extremidade aceitas.

Para saber mais sobre como solucionar problemas de pontos de extremidade com falha, consulte Solucionar problemas de conexão de pontos de extremidade privados.

IMPORTANTE: se o ponto de conexão da interface falhar, você poderá ver a seguinte mensagem:

No dns entries found for endpoint vpce-<guid>,
your endpoint must be provisioned in at least one subnet.
Click "Edit" to fix the problem.

Esta mensagem indica que você não especificou uma sub-rede ao criar a conexão do AWS PrivateLink. Para resolver esse erro:

  1. Clique em Edit.

  2. Clique em Back.

  3. Especifique pelo menos uma sub-rede.

  4. Siga as instruções restantes para criar a conexão do AWS PrivateLink.

Disponível

Os recursos de Atlas VPC estão conectados ao ponto de extremidade da interface em sua VPC . Você pode se conectar a Atlas clusters nessa região usando o AWS PrivateLink.

Excluindo

O Atlas está removendo o ponto de conexão da ponto de extremidade da interface do serviço de endpoint privado.

2
  1. Para cada recurso que precisa se conectar ao Atlas cluster usando o AWS PrivateLink, o grupo de segurança do recurso deve permitir o tráfego de saída para os endereços IP privados do ponto de conexão da interface em todas as portas (1024-65535).

    Consulte Adicionar regras a um grupo de segurança para maiores informações.

  2. O grupo de segurança do ponto de extremidade da interface deve permitir o tráfego de entrada em todas as portas de cada recurso que precisa se conectar aos Atlas clusters usando o AWS PrivateLink.

    Acesse endereços IP da instância ou grupos de segurança para permitir que o tráfego deles alcance o grupo de segurança do ponto de extremidade da interface.

As seções a seguir descrevem problemas comuns de conectividade de pontos de extremidade privados entre regiões e como resolvê-los.

Se você se esqueceu de especificar a região em que o ponto de extremidade do consumidor está localizado durante o envio, o status do ponto de extremidade no Atlas transita para Failed ou Rejected, pois o serviço de ponto de extremidade não pode localizar e aceitar a conexão.

Para resolver esse problema:

1

Adicione a região ausente à lista de regiões de ponto de extremidade aceitas. Para saber mais, consulte Gerenciar regiões de ponto de extremidade aceitas para o AWS PrivateLink.

2

Depois de adicionar a região, retorne ao cartão de serviço do ponto de extremidade e clique no botão Retry ao lado da entrada do ponto de extremidade com falha.

Aviso

Não exclua um ponto de extremidade com falha se ele for o único ponto de extremidade registrado nesse serviço de ponto de extremidade privado. Se você excluir o último ponto de extremidade, todo o serviço de ponto de extremidade será excluído automaticamente e você deverá reiniciar todo o processo de configuração.

Se você enviar um ID de endpoint da AWS VPC incorreto (por exemplo, um erro de digitação ou um ID de um serviço ou VPC diferente), o status do endpoint no Atlas mudará para Failed ou Rejected porque o serviço de endpoint não pode localizar e aceitar a conexão .

Você pode resolver esse problema usando um dos seguintes métodos:

1

No cartão de serviço do ponto de extremidade, localize a entrada do ponto de extremidade com falha.

2
  1. Clique no botão Edit na coluna Actions.

  2. No modal, atualize o campo VPC Endpoint ID com o ID correto.

  3. Clique em Save para atualizar o ID.

    O Atlas tenta aceitar o ponto de extremidade correto.

1

Adicione um novo ponto de extremidade usando o ID de ponto de extremidade correto. Para saber mais, consulte Configurar um ponto de extremidade privado para um cluster dedicado.

2

Depois que o ponto de extremidade correto for aceito com sucesso (o status é exibido como Available), você poderá excluir a entrada do ponto de extremidade com falha.

Aviso

Não exclua um ponto de extremidade com falha se ele for o único ponto de extremidade registrado nesse serviço de ponto de extremidade privado. Se você excluir o último ponto de extremidade, todo o serviço de ponto de extremidade será excluído automaticamente e você deverá reiniciar todo o processo de configuração.

Se o envio de um ponto de extremidade falhar e você já tiver verificado que:

  • A região necessária está incluída nas regiões de ponto de extremidade aceitas para o serviço de pontos de extremidade privados.

  • O ID do ponto de extremidade enviado está correto e corresponde ao ponto de extremidade VPC que você criou na AWS.

A falha pode ser devido a um problema transitório da AWS ou a um erro no processo de aceitação inicial.

Observação

Mesmo depois que o ponto de extremidade estiver no estado Pending Acceptance na AWS, pode haver um pequeno atraso para que todos os recursos de segundo plano sejam atualizados. Os pontos de extremidade entre regiões, em particular, podem levar 30 segundos a mais para se tornarem detectáveis pelo serviço de pontos de extremidade do Atlas em uma região diferente.

Para resolver esse problema:

1

No cartão de serviço do ponto de extremidade, localize a entrada do ponto de extremidade com falha (o status é exibido como Failed ou Rejected).

2

Clique no botão Retry na coluna Actions para tentar estabelecer a conexão novamente.

Aviso

Não exclua um ponto de extremidade com falha se ele for o único ponto de extremidade registrado nesse serviço de ponto de extremidade privado. Se você excluir o último ponto de extremidade, todo o serviço de ponto de extremidade será excluído automaticamente e você deverá reiniciar todo o processo de configuração.

Quando um cliente na sua VPC se conecta a um cluster do Atlas usando uma dessas strings de conexão com reconhecimento de pontos de extremidade privados, o cliente tenta estabelecer uma conexão com o balanceador de carga na VPC do Atlas por meio de um dos pontos de extremidade da interface. O mecanismo de resolução DNS do cliente determina para quais dos pontos de extremidade da interface o nome do host se mapeia. Se um ponto de extremidade da interface não estiver disponível, o próximo será usado. Isso é ocultado do driver ou qualquer outro mecanismo de conexão. O driver sabe apenas o nome do host por meio do registro SRV ou da string de conexão.

Registro SRV para connection strings com reconhecimento de endpoints privados de lista de sementes de DNS

O exemplo a seguir mostra o registro SRV de um cluster de região única habilitado para o AWS PrivateLink, mostrando três portas exclusivas definidas para pl-0-us-east-1.k45tj.mongodb.net:

$ nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.

No exemplo anterior:

  • _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net é o registro SRV ao qual a string de conexão mongodb+srv://cluster0-pl-0.k45tj.mongodb.net faz referência.

  • pl-0-us-east-1.k45tj.mongodb.net é o nome de host para cada nó em um cluster do Atlas em uma região para a qual você configurou o AWS PrivateLink.

  • 1024, 1025 e 1026 são portas exclusivas que o Atlas atribui ao balanceador de carga para cada nó do conjunto de réplicas do Atlas na região para a qual você habilitou o AWS PrivateLink. balanceador de carga resolvendo nós individuais por sua porta exclusiva.

Resolução de DNS para nomes de host em connection strings e registros SRV com suporte a endpoints privados

O nome de host no registro SRV e na string de conexão padrão é um registro de nome canônico DNS (CNAME) que se resolve para o nome DNS regional específico do ponto de extremidade que a AWS gera para o ponto de extremidade da interface. Existe um registro de DNS ALIAS para cada sub-rede na VPC em que você distribuiu o ponto de extremidade da interface. Cada registro ALIAS contém o endereço IP privado do ponto de extremidade da interface dessa sub-rede.

O exemplo a seguir mostra a pesquisa de DNS para o nome de host no registro SRV e na connection string padrão, incluindo o nome DNS regional específico do endpoint para o ponto de conexão da interface e seus registros de DNS ALIAS:

$ nslookup pl-0-us-east-1.k45tj.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
pl-0-us-east-1.k45tj.mongodb.net
canonical name = vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com.
Name: vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com
Address: 10.0.30.194
Name: vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com
Address: 10.0.20.54
$ mongosh "mongodb+srv://aws-replica-set-7-pl-0-lb.22qdu.mongodb-dev.net/" --apiVersion 1 --username sarah
Enter password: *****
Current Mongosh Log ID: 68910f1754be6d9adc74e399
Connecting to: mongodb+srv://<credentials>@aws-replica-set-7-pl-0-lb.22qdu.mongodb-dev.net/?appName=mongosh+2.5.6
MongoNetworkError: Client network socket disconnected before secure TLS connection was established
{"t":{"$date":"2025-08-04T19:48:17.649+00:00"},"s":"I", "c":"NETWORK",
"id":22942, "ctx":"listener","msg":"Connection refused because there are
too many open connections","attr":{"remote":"54.172.143.8:33205",
"isLoadBalanced":false,"uuid":{"uuid":{"$uuid":"e52e9c14-7648-430a-bc2e-95292347b7e0"}},
"connectionId":380,"connectionCount":58}}
  • Você pode visualizar o IP de origem do cliente nos logs mongos para clusters fragmentados que se conectam por meio de Endpoints privados.

  • Você pode visualizar o IP de origem do cliente nos registros do mongod para conjuntos de réplicas que se conectam por meio de endpoints privados.

  • Você pode visualizar o IP de origem do cliente nos logs de auditar para conjuntos de réplicas e clusters fragmentados que se conectam por meio de Endpoints Privados.

  • Essa funcionalidade é compatível com o Amazon Web Services para as seguintes versões:

    • 8.1 e v8.1.0+

    • 8.0 e v8.0.10+

    • 7.0 e v7.0.22+

  • O endereço IP e a porta do cliente de origem são indicados pelo campo sourceClient. Esse valor é 10.50.4.23 no exemplo acima.

    {"t":{"$date":"2025-07-21T12:15:42.123+00:00"},"s":"I","c":"NETWORK",
    "id":22943,"ctx":"listener","msg":"Connection accepted","attr":{"remote":"192.168.100.55:31245",
    "isLoadBalanced":true,"sourceClient":"10.50.4.23:50123","uuid":{"uuid":{"$uuid":"12345678-abcd-4321-abcd-87654321abcd"}},
    "connectionId":345,"connectionCount":19}}

A coleta desses detalhes requer o uso da ferramenta jq, que pode ser baixada do site da jq.

A query a seguir fornece o número de conexões criadas a partir do endereço IP de um cliente específico. Você pode coletar o endereço IP privado VPC de origem exata usando o atributo sourceClient.

grep 'Connection accepted' mongod.log | jq -r '(.attr.sourceClient // .attr.remote)' | awk -F: '{print $1}' | sort | uniq -c | sort -rn
25957 192.168.254.155
25957 192.168.253.161
25957 192.168.248.236
14420 10.70.2.254
14420 10.70.2.116

A query a seguir fornece o número de conexões criadas por cada driver. Isso é útil em cenários em que os clientes podem usar drivers diferentes para aplicativos diferentes.

more mongodb.log| grep 'NETWORK' | jq -r '.attr.doc.driver.name' | grep -v null | sort | uniq -c | sort -rn
56447 mongo-go-driver
21633 mongo-java-driver|sync
75 mongo-java-driver|sync|Airbyte
4 nodejs|Mongoose

Para obter uma análise mais detalhada das contagens de conexões e detalhes do driver, você pode usar o seguinte script do Python, que fornece informações abrangentes sobre o número de conexões criadas e encerradas, juntamente com os nomes do driver e detalhes da versão.

import json
import sys
def process_log_file(json_file_path):
# Dictionary to store the filtered data
filtered_data = {}
with open(json_file_path, "r") as json_file:
# Read the file line by line
for line in json_file:
# Parse each line as a separate JSON object
data = json.loads(line)
if 'msg' in data and data['msg'] == 'client metadata':
# Extract the relevant data from the JSON object
drivername = data['attr']['doc']['driver']['name']
driverversion = data['attr']['doc']['driver']['version']
connectionid = data['ctx']
# Create a unique key for the driver based on name and version
driver_key = (drivername, driverversion)
# Add the connection ID to the driver's set of connections
if driver_key not in filtered_data:
filtered_data[driver_key] = {'connections': set(), 'opencount': 0, 'closedcount': 0}
filtered_data[driver_key]['connections'].add(connectionid)
filtered_data[driver_key]['opencount'] += 1
if 'msg' in data and data['msg'] == 'Connection ended':
connectionid = data['ctx']
# Check if the connection ID exists in any driver's connections
for driver_data in filtered_data.values():
if connectionid in driver_data['connections']:
driver_data['closedcount'] += 1
driver_data['connections'].remove(connectionid)
# Print the filtered data for each driver
for driver_key, driver_data in filtered_data.items():
print('Driver:', driver_key)
print('Connection Opened:', driver_data['opencount'])
print('Connection Closed:', driver_data['closedcount'])
if __name__ == '__main__':
# Check if a JSON file argument is provided
if len(sys.argv) < 2:
print("Please provide the path to a JSON file as an argument.")
sys.exit(1)
# Extract the JSON file path from the command-line arguments
json_file_path = sys.argv[1]
# Process the log file
process_log_file(json_file_path)
Driver: ('mongo-go-driver', 'v1.12.0-cloud')
Connection Opened: 14368
Connection Closed: 14362
Driver: ('mongo-go-driver', 'v1.12.1')
Connection Opened: 42056
Connection Closed: 41958
Driver: ('mongo-java-driver|sync', '4.11.1')
Connection Opened: 18012
Connection Closed: 17987
Driver: ('mongo-java-driver|sync', '4.8.2')
Connection Opened: 3621
Connection Closed: 3610
Driver: ('nodejs|Mongoose', '4.17.1|6.12.0')
Connection Opened: 3
Connection Closed: 1
Driver: ('mongo-go-driver', 'v1.13.0')
Connection Opened: 23
Connection Closed: 20
Driver: ('mongo-java-driver|sync|Airbyte', '4.11.0')
Connection Opened: 75
Connection Closed: 75
Driver: ('nodejs|Mongoose', '4.17.2|6.13.0')
Connection Opened: 1
Connection Closed: 0

Podemos sugerir que os clientes incluam o nome do aplicação na string de conexão para especificar diferentes aplicativos que se conectam ao cluster. Ao usar o appName, podemos identificar qual aplicação está criando muitas conexões com o cluster no futuro. Consulte a seção Configurações diversas de nossa documentação para obter mais detalhes sobre o uso do appName na string de conexão. Além disso, você pode utilizar o comando db.currentOp().appname para visualizar as operações atuais associadas ao nome do aplicação . A query a seguir fornece detalhes do appName com o número de conexões criadas por esse aplicação específico.

more mongodb.log| grep 'NETWORK' | jq -r '.attr.doc.application.name' | grep -v null | sort | uniq -c | sort -rn
10809 niyo-*******-api
8616 MongoDB CPS Module v13.17.2.8878 (git: 70c0b932f47f4f0b3e82a75e223f39ed9635b47f)
7203 niyo-ns*****
5752 MongoDB Automation Agent v13.17.2.8878 (git: 70c0b932f47f4f0b3e82a75e223f39ed9635b47f)
3601 *****-auth-service

Os detalhes fornecidos ajudam a identificar os fatores específicos que contribuem para o grande número de conexões. Ao analisar o IP do cliente de origem, os metadados do cliente , o uso do driver e os nomes do aplicação , você pode identificar quais elementos são responsáveis pelo aumento das conexões e determinar as áreas necessárias a serem investigadas. Essa abordagem direcionada permite que você desconsidere outros fatores menos relevantes e se concentre na resolução dos problemas com as informações destacadas, simplificando o processo de mitigação e melhorando o desempenho do cluster.

Os endpoints privados só estarão disponíveis em clusters multirregional se houver um nó em cada região abrangeda pelo cluster que tenha um endpoint privado configurado. Para saber mais sobre como configurar endpoints privados de multirregional , consulte Endpoints privados regionalizados para clusters fragmentados de várias regiões.

Indexação de connection string para clusters multirregionais

Depois de configurar um endpoint privado para uma nova região e distribuir nós de cluster nessa região, você poderá ver o seguinte erro ao usar seu endpoint privado para se conectar ao cluster:

DNSHostNotFound: Failed to look up service "<MongoDB service name>"

Esse erro ocorre quando o índice da connection string muda automaticamente e o cliente é reiniciado posteriormente, o que causa uma pesquisa de DNS SRV. A string de conexão de endpoint privado para um cluster multirregional usa um índice de 0. Se sua string de conexão usar um índice diferente, o MongoDB atualizará automaticamente a string de conexão para usar o índice 0.

Por exemplo, você pode configurar dois endpoints privados para uma região. Se você remover o primeiro endpoint privado, sua string de conexão usará um índice de 1 e será semelhante à seguinte:

mongodb+srv://cluster1-psc-0.4uyx2d.mongodb.net

Em seguida, suponha que você configure um endpoint privado para uma nova região em seu cluster e, posteriormente, adicione nós de cluster a essa região. Seu cluster agora inclui várias regiões e sua string de conexão é atualizada para usar um índice de 0:

mongodb+srv://cluster1-psc-1.4uyx2d.mongodb.net

Para evitar possíveis problemas de conectividade após a próxima reinicialização do cliente, confirme que você está usando a string de conexão de ponto de extremidade privado indexado a zero para se conectar ao cluster. Você poderá acessar a string de conexão atualizada do endpoint privado a partir da UI ou da API do Atlas após a conclusão das alterações de cluster.

Você pode usar as ferramentas nslookup e telnet para testar a conectividade do seu aplicação com o Endpoint Privado no Atlas.

1

Execute nslookup com o sinalizador -type=SRV para obter os números de porta associados a cada um dos nós em seu cluster.

nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.
2

Em seu ambiente de aplicação , com uma das portas listadas (por exemplo, 1026, 1024 ou 1025 no exemplo de saída acima), execute o seguinte comando telnet para testar a conectividade:

telnet pl-0-<xyz>.mongodb.net 1024
telnet pl-0-<xyz>.mongodb.net 1025
telnet pl-0-<xyz>.mongodb.net 1026

Para visualizar o status de cada endpoint privado:

1
  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.

  3. Na barra lateral, clique em Database & Network Access sob o título Security.

A página Acesso ao banco de dados e à rede é exibida.

2
3

Os campos Atlas Endpoint Service Status e Endpoint Status mostram o status de cada endpoint privado.

Consulte os status a seguir para ajudá-lo a determinar o estado de suas conexões de endpoint privado:

Atlas Endpoint Service Status
Status
Descrição

Criando link privado

O Atlas está criando o balanceador de carga e os recursos de rede virtual.

Falhou

Ocorreu uma falha no sistema.

Disponível

Atlas criou o balanceador de carga e o Azure Private Link Service. O serviço Azure Private Link está pronto para receber solicitações de conexão.

Excluindo

O Atlas está excluindo o serviço Azure Private Link .

Endpoint Status
Status
Descrição

Não configurado

O Atlas criou o balanceador de carga e o Serviço Azure Private Link , mas você ainda não criou um endpoint privado. Clique em Edit e conclua o assistente para criar o endpoint privado.

Iniciando

O Atlas ainda não aceitou a conexão com seu endpoint privado.

Falhou

O Azure falhou ao estabelecer uma conexão entre os recursos da VNet do Atlas e o endpoint privado na sua VNet. Clique em Edit, verifique se as informações fornecidas estão corretas e, em seguida, crie o ponto de extremidade privado novamente.

Disponível

Os recursos Atlas VNet são conectados ao endpoint privado em sua VNet. Você pode se conectar a clusters do Atlas nessa região usando o Azure Private Link.

Excluindo

O Atlas está removendo a conexão de endpoint privado do Serviço Azure Private Link .

Aviso

Não exclua um ponto de extremidade com falha se ele for o único ponto de extremidade registrado nesse serviço de ponto de extremidade privado. Se você excluir o último ponto de extremidade, todo o serviço de ponto de extremidade será excluído automaticamente e você deverá reiniciar todo o processo de configuração.

Quando um cliente em sua VNet se conecta a um cluster do Atlas usando uma dessas strings de conexão com reconhecimento de ponto de extremidade privado, o cliente tenta estabelecer uma conexão com o serviço Private Link na VNet do Atlas por meio da interface de rede do ponto de extremidade privado. O serviço Private Link envia tráfego por meio de um balanceador de carga padrão do Azure para os nós do cluster do Atlas que você implantou nessa região. O mecanismo de resolução de DNS do seu cliente trata da resolução do nome do host para o endereço IP privado da interface de rede. O driver conhece apenas o nome do host na string de conexão, escutando em uma porta para cada nó no conjunto de réplicas do cluster.

Registro SRV para connection strings com reconhecimento de endpoints privados de lista de sementes de DNS

O exemplo a seguir mostra o registro SRV de um cluster de região única habilitado para o Azure Private Link, mostrando três portas exclusivas definidas para pl-0-eastus2.uzgh6.mongodb.net:

$ nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1024 pl-0-eastus2.uzgh6.mongodb.net.
_mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1025 pl-0-eastus2.uzgh6.mongodb.net.
_mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1026 pl-0-eastus2.uzgh6.mongodb.net.

No exemplo anterior:

  • _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net é o registro SRV que a string de conexão referencia.

  • pl-0-eastus2.uzgh6.mongodb.net é o nome de host para cada nó em um Atlas cluster em uma região para a qual você configurou o Azure Private Link.

  • 1024, 1025 e 1026 são portas exclusivas que o Atlas atribui ao balanceador de carga para cada nó do conjunto de réplicas do Atlas na região para a qual você habilitou o Azure Private Link. Todos os nós em um conjunto de réplicas do Atlas são acessíveis por meio do mesmo nome de host, com o balanceador de carga resolvendo nós individuais por sua porta exclusiva.

Resolução de DNS para nomes de host em connection strings e registros SRV com suporte a endpoints privados

O nome de host no registro SRV e na string de conexão padrão é um A registro DNS que se resolve para o endereço IP privado da interface de rede do endpoint privado.

O exemplo a seguir mostra a pesquisa DNS para o nome do host no registro SRV e na string de conexão padrão:

$ nslookup pl-0-eastus2.uzgh6.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: pl-0-eastus2.uzgh6.mongodb.net
Address: 10.0.0.4

Os endpoints privados só estarão disponíveis em clusters multirregional se houver um nó em cada região abrangeda pelo cluster que tenha um endpoint privado configurado. Para saber mais sobre como configurar endpoints privados de multirregional , consulte Endpoints privados regionalizados para clusters fragmentados de várias regiões.

Indexação de connection string para clusters multirregionais

Depois de configurar um endpoint privado para uma nova região e distribuir nós de cluster nessa região, você poderá ver o seguinte erro ao usar seu endpoint privado para se conectar ao cluster:

DNSHostNotFound: Failed to look up service "<MongoDB service name>"

Esse erro ocorre quando o índice da connection string muda automaticamente e o cliente é reiniciado posteriormente, o que causa uma pesquisa de DNS SRV. A string de conexão de endpoint privado para um cluster multirregional usa um índice de 0. Se sua string de conexão usar um índice diferente, o MongoDB atualizará automaticamente a string de conexão para usar o índice 0.

Por exemplo, você pode configurar dois endpoints privados para uma região. Se você remover o primeiro endpoint privado, sua string de conexão usará um índice de 1 e será semelhante à seguinte:

mongodb+srv://cluster1-psc-0.4uyx2d.mongodb.net

Em seguida, suponha que você configure um endpoint privado para uma nova região em seu cluster e, posteriormente, adicione nós de cluster a essa região. Seu cluster agora inclui várias regiões e sua string de conexão é atualizada para usar um índice de 0:

mongodb+srv://cluster1-psc-1.4uyx2d.mongodb.net

Para evitar possíveis problemas de conectividade após a próxima reinicialização do cliente, confirme que você está usando a string de conexão de ponto de extremidade privado indexado a zero para se conectar ao cluster. Você poderá acessar a string de conexão atualizada do endpoint privado a partir da UI ou da API do Atlas após a conclusão das alterações de cluster.

Você pode usar as ferramentas nslookup e telnet para testar a conectividade do seu aplicação com o Endpoint Privado no Atlas.

1

Execute nslookup com o sinalizador -type=SRV para obter os números de porta associados a cada um dos nós em seu cluster.

nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1.k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1.k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0.k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1.k45tj.mongodb.net.
2

Em seu ambiente de aplicação , com uma das portas listadas (por exemplo, 1026, 1024 ou 1025 no exemplo de saída acima), execute o seguinte comando telnet para testar a conectividade:

telnet pl-0-<xyz>.mongodb.net 1024
telnet pl-0-<xyz>.mongodb.net 1025
telnet pl-0-<xyz>.mongodb.net 1026

Para visualizar o status de cada endpoint privado:

1
  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.

  3. Na barra lateral, clique em Database & Network Access sob o título Security.

A página Acesso ao banco de dados e à rede é exibida.

2
3

Os campos Atlas Endpoint Service Status e Endpoint Status mostram o status de cada endpoint privado.

Consulte os status a seguir para ajudá-lo a determinar o estado de suas conexões de endpoint privado:

Atlas Endpoint Service Status

Status
Descrição

Criando link privado

O Atlas está criando o balanceador de carga de rede e os recursos de VPC .

Falhou

Ocorreu uma falha no sistema.

Disponível

A Atlas criou o balanceador de carga de rede e o serviço de endpoints VPC . O serviço de endpoint privado está pronto para receber solicitações de conexão.

Excluindo

O Atlas está excluindo o serviço de endpoint privado.

Endpoint Status

Status
Descrição

Iniciando

O Atlas ainda não está conectado ao seu endpoint privado e ainda não aceitou os endpoints.

Aguardando usuário

Os recursos de VPC no Atlas estão prontos para uso. Configure os endpoints na sua VPC executando o script de shell.

Verificado

Atlas O verificou os endpoints na VPC sua , mas ainda não aceitou o endpoint privado na sua Google Cloud Platform VPC da . Pode levar alguns minutos para que o Endpoint Status se torne Available.

Disponível

Os recursos do Atlas VPC são conectados ao endpoint privado em seu Google Cloud Platform VPC. O Atlas aceitou os endpoints. Você pode se conectar a Atlas clusters nessa região usando o GCP Private Service Connect.

Ativo

O Atlas está pronto para usar os recursos da VPC . O Atlas aceitou os endpoints. Uma VM é atribuída à conexão de serviço privado.

Falhou

Google Cloud Platform falhou ao estabelecer uma conexão entre Atlas VPC os recursos da do e o endpoint privado em sua Google Cloud Platform VPC da . Clique Edit, verifique se as informações fornecidas estão corretas e, em seguida, crie o ponto de extremidade privado novamente.

Observação: se você vir a mensagem de erro "O ponto de extremidade não pôde ser encontrado no GCP. Verifique se o nome do ponto de extremidade está correto e foi criado no projeto GCP correto e tente novamente," você pode ter digitado incorretamente seu nome de ponto de extremidade privado ou ainda precisa criá-lo. Para resolver isso, clique em Edit e verifique se os campos estão corretos.

Excluído

Você excluiu manualmente o endpoint privado de uma região no Atlas. Você também deve excluir o endpoint privado na Google Cloud Platform para excluir recursos. Exclusão pendente do grupo de regiões.

Aviso

Não exclua um ponto de extremidade com falha se ele for o único ponto de extremidade registrado nesse serviço de ponto de extremidade privado. Se você excluir o último ponto de extremidade, todo o serviço de ponto de extremidade será excluído automaticamente e você deverá reiniciar todo o processo de configuração.

4

Para cada recurso que precisa se conectar ao Atlas cluster usando o GCP Private Service Connect, você deve permitir o tráfego de saída para os endereços IP privados da regra de encaminhamento em todas as portas (1024-65535). Consulte Gerenciando a segurança do consumidor para PSC para obter mais informações.

Os endpoints privados só estarão disponíveis em clusters multirregional se houver um nó em cada região abrangeda pelo cluster que tenha um endpoint privado configurado. Para saber mais sobre como configurar endpoints privados de multirregional , consulte Endpoints privados regionalizados para clusters fragmentados de várias regiões.

Indexação de connection string para clusters multirregionais

Depois de configurar um endpoint privado para uma nova região e distribuir nós de cluster nessa região, você poderá ver o seguinte erro ao usar seu endpoint privado para se conectar ao cluster:

DNSHostNotFound: Failed to look up service "<MongoDB service name>"

Esse erro ocorre quando o índice da connection string muda automaticamente e o cliente é reiniciado posteriormente, o que causa uma pesquisa de DNS SRV. A string de conexão de endpoint privado para um cluster multirregional usa um índice de 0. Se sua string de conexão usar um índice diferente, o MongoDB atualizará automaticamente a string de conexão para usar o índice 0.

Por exemplo, você pode configurar dois endpoints privados para uma região. Se você remover o primeiro endpoint privado, sua string de conexão usará um índice de 1 e será semelhante à seguinte:

mongodb+srv://cluster1-psc-0.4uyx2d.mongodb.net

Em seguida, suponha que você configure um endpoint privado para uma nova região em seu cluster e, posteriormente, adicione nós de cluster a essa região. Seu cluster agora inclui várias regiões e sua string de conexão é atualizada para usar um índice de 0:

mongodb+srv://cluster1-psc-1.4uyx2d.mongodb.net

Para evitar possíveis problemas de conectividade após a próxima reinicialização do cliente, confirme que você está usando a string de conexão de ponto de extremidade privado indexado a zero para se conectar ao cluster. Você poderá acessar a string de conexão atualizada do endpoint privado a partir da UI ou da API do Atlas após a conclusão das alterações de cluster.

Você pode usar as ferramentas nslookup e telnet para testar a conectividade do seu aplicação com o Endpoint Privado no Atlas.

1

Execute nslookup com o sinalizador -type=SRV para obter os números de porta associados a cada um dos nós em seu cluster.

nslookup -debug -type=SRV _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net
Server: 127.0.2.2
Address: 127.0.2.2#53
------------
QUESTIONS:
_mongodb._tcp.cluster1-psc-0.j735c.mongodb.net, type = SRV, class = IN
ANSWERS:
-> _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net
service = 0 0 1024 pl-0-us-central1-gcp.j735c.mongodb.net.
ttl = 60
-> _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net
service = 0 0 1025 pl-0-us-central1-gcp.j735c.mongodb.net.
ttl = 60
-> _mongodb._tcp.cluster1-psc-0.j735c.mongodb.net
service = 0 0 1026 pl-0-us-central1-gcp.j735c.mongodb.net.
ttl = 60
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
_mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1024 pl-0-us-central1-gcp.j735c.mongodb.net.
_mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1025 pl-0-us-central1-gcp.j735c.mongodb.net.
_mongodb._tcp.cluster1-psc-0.j735c.mongodb.net service = 0 0 1026 pl-0-us-central1-gcp.j735c.mongodb.net.
Authoritative answers can be found from:
telnet pl-0-us-central1-gcp.j735c.mongodb.net 1024
2

Em seu ambiente de aplicação , com uma das portas listadas (por exemplo, 27017 no exemplo de saída acima), execute o seguinte comando telnet para testar a conectividade:

telnet pl-0-<xyz>.mongodb.net 27017

Nesta página