Exemplo: conectividade particular para um cluster do Atlas

Nesta página, explicamos como ativar a conectividade dos Integration Connectors para seu cluster do MongoDB Atlas em execução em uma rede privada no Google Cloud.

Configurar a conectividade particular para um cluster do Atlas

Para configurar a conectividade particular de um cluster do Atlas, faça o seguinte:

  1. Faça login no console de gerenciamento do Atlas.
  2. Abra o projeto Atlas para o qual você precisa estabelecer a conectividade de rede.
  3. Abra a página Acesso à rede do projeto e selecione Endpoint particular.
  4. Selecione Cluster dedicado e clique em Adicionar endpoint particular.

    Isso abre a caixa de diálogo para escolher um provedor de nuvem.

  5. Selecione Google Cloud e clique em Próxima.
  6. Selecione uma região do Atlas e clique em Próxima.

    Esta é a região do Google Cloud em que o cluster Atlas é criado e precisa ser a mesma região do projeto do Google Cloud em que você cria suas conexões. Para ver a lista de todas as regiões compatíveis do Integration Connector, consulte Locais.

  7. Insira o ID do projeto do Google Cloud. Esse é o ID do projeto do diretório de serviços do ambiente de execução do Integration Connectors. Para saber mais, consulte Receber o ID do projeto do diretório de serviço.
  8. No campo Nome da VPC, digite default.
  9. No campo Nome da sub-rede, insira default.
  10. No campo Prefixo do endpoint do Private Service Connect, digite um prefixo.

    Esse texto tem como prefixo todos os nomes de endpoint e pode ser usado para identificar os endpoints particulares que você criou.

  11. Instale a CLI gcloud (interface de linha de comando). Para mais informações, consulte Instalar a CLI gcloud.
  12. Copie e salve o seguinte script de shell como setup_psc.sh no sistema local.

    Defina os valores apropriados para as seguintes variáveis no script:

    • PROJECT_ID
    • REGIÃO
    • FAZER
    • SERVICE_ATTACHMENT_ID_PREFIX
    #!/bin/bash
    
    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)"'
    
    # Set PROJECT_ID to the ID of the Google Cloud project where you create your connections.
    export PROJECT_ID=PROJECT_ID
    
    # Set REGION to the Google Cloud region where Atlas cluster is installed.
    export REGION=REGION
    
    export HOSTNAME=https://connectors.googleapis.com/v1
    
    # Set ENDPOINT_PREFIX to the prefix value that you entered for the
    # "Private service connect endpoint prefix" field (in step 10).
    export PREFIX=ENDPOINT_PREFIX
    
    # Set SERVICE_ATTACHMENT_ID_PREFIX to the prefix of the service attachments
    # created by Atlas. The service attachments are present in the script
    # displayed on the Atlas UI and have the following naming format:
    # projects/{google-cloud-project-id-of-atlas-cluster}/regions/{region}/serviceAttachment/{prefix}-{index}
    # For example, if the service attachment is
    # "projects/p-ditnerelrvndieqhe3kh9pop/regions/us-west1/serviceAttachments/sa-us-west1-37204mg5wr0j6-$i",
    # you must set the value of SERVICE_ATTACHMENT_ID_PREFIX to
    # "projects/p-ditnerelrvndieqhe3kh9pop/regions/us-west1/serviceAttachments/sa-us-west1-37204mg5wr0j6"
    export SERVICE_ATTACHMENT_ID_PREFIX=SERVICE_ATTACHMENT_ID_PREFIX
    
    function poll_operation() {
      OPERATION_ID="$1"
      INDEX="$2"
      RESULT=''
    
      while [[ "$RESULT" != *"true"* ]];
      do
        RESULT=$(gcurl -s -X GET "${HOSTNAME}/${OPERATION_ID}" | grep '"done"')
        sleep 5
      done
    
      echo "${PREFIX}-${INDEX} created"
    }
    
    echo "Creating Endpoint Attachments..."
    for i in {0..49}
    do
      export ENDPOINT=${HOSTNAME}/projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments?endpointAttachmentId=${PREFIX}-$i
      OPERATION_ID=$(gcurl -s -X POST -H "Content-Type: application/json" -d '{"name": "'"projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments/${PREFIX}-$i"'","serviceAttachment": "'"${SERVICE_ATTACHMENT_ID_PREFIX}-$i"'"}' "${ENDPOINT}" | sed 's/  //' | grep -E '"name"' | sed -E 's/"name": "//' | sed 's/",//')
      poll_operation "$OPERATION_ID" "$i" &
    done
    
    wait
    echo "All endpoint attachments created."
    
    echo "[" > atlasEndpoints-${PREFIX}.json
    
    echo "Fetching IP Addresses..."
    for i in {0..49}
    do
      ENDPOINT=${HOSTNAME}/projects/${PROJECT_ID}/locations/${REGION}/endpointAttachments/${PREFIX}-$i
      gcurl -s -X GET "${ENDPOINT}" | sed 's/  //g' | grep -E 'name|endpointIp' | sed 's/"endpointIp"/"IPAddress"/g' | sed -E 's/"name": "projects\/.+\/locations\/.+\/endpointAttachments\//"name": "/g' | sed '1 s/"/{"/1' | sed '2 s/"/"},/4' >> atlasEndpoints-${PREFIX}.json
    done
    
    sed -i '$s/,/]/' atlasEndpoints-${PREFIX}.json
    
    echo "Created atlasEndpoints-${PREFIX}.json"
  13. Execute o script de shell. Acesse o diretório em que você salvou o script para executar o script de shell e execute o seguinte comando:
    sh setup_psc.sh

    Esse script gera um arquivo JSON que tem a lista de endereços IP e os nomes de endpoints do PSC correspondentes. O arquivo JSON é salvo no diretório em que o script de shell é executado.

  14. Clique em Avançar no console de gerenciamento do Atlas.
  15. Clique em Upload JSON file e envie o arquivo criado na etapa 13.
  16. Clique em Criar.

    O processo de configuração do endpoint pode levar até 25 minutos para ser concluído e, se a configuração for bem-sucedida, o endpoint estará no estado Available.

  17. Verifique sua conectividade particular. Para mais informações, consulte Verificar a conectividade particular.

Consiga o ID do projeto do diretório de serviços

Para conseguir o ID do projeto do diretório de serviços, use a API List Connections, conforme mostrado no exemplo a seguir.

Sintaxe

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

Substitua:

  • CONNECTORS_PROJECT_ID: o ID do projeto do Google Cloud em que você criou a conexão.

Exemplo

Este exemplo usa o ID do projeto do diretório de serviços do projeto connectors-test do Google Cloud.

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

A execução deste comando no terminal exibe uma resposta semelhante a esta:

.....
{
  "connections": [
    {
      "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
      "createTime": "2022-10-07T09:02:31.905048520Z",
      "updateTime": "2022-10-07T09:22:39.993778690Z",
      "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
      "status": {
        "state": "ACTIVE"
      },
      "configVariables": [
        {
          "key": "project_id",
          "stringValue": "connectors-test"
        },
        {
          "key": "dataset_id",
          "stringValue": "testDataset"
        }
      ],
      "authConfig": {},
      "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
      "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
      "nodeConfig": {
        "minNodeCount": 2,
        "maxNodeCount": 50
      }
    },
....

No exemplo de saída, para o projeto connectors-test do Google Cloud, o ID do projeto do diretório de serviços é abcdefghijk-tp.

Verificar a conectividade particular

Para verificar a conectividade particular com os clusters do Atlas, faça o seguinte:

  1. No console de gerenciamento do Atlas, abra a página Implantações do banco de dados.
  2. Role até o cluster necessário e clique em Conectar. Isso abre a caixa de diálogo Conectar a <CLUSTER_NAME>.
  3. Clique em Endpoint particular para o tipo de conexão.
  4. Selecione o prefixo do endpoint particular que você inseriu na interface do Atlas na lista suspensa Escolher um endpoint particular.
  5. Clique em Escolher um método de conexão.
  6. Clique em Drivers na seção Connect to your application. Esta etapa é para conseguir a string de conexão srv.
  7. Copie a string de conexão srv da seção Adicione sua string de conexão ao código do aplicativo.

    Formato da string srv: mongodb+srv://{cluster-name}-pl-{index}.{unique-pin}.mongodb.net.

  8. Crie uma conexão do MongoDB usando esta string srv como o nome do host. Para mais informações, consulte Configurar um conector do MongoDB.

    A conexão será criada.