Como acessar o MongoDB Atlas multirregional com o Private Service Connect

Sobre este codelab
schedule92 minutos
subjectÚltimo 17 de abril de 2023 atualizado
account_circleEscrito por Deepak Michael

O Private Service Connect (PSC) simplifica a forma como os serviços são consumidos de forma segura e particular. Esse modelo simplifica drasticamente a arquitetura de rede, permitindo que os consumidores de serviços se conectem de maneira particular aos produtores de serviços em várias organizações, além de eliminar a necessidade de peering de nuvem privada virtual. A Figura 1 ilustra os atributos de peering de VPC e PSC.

Figura 1. 4f9551fc32ed83f5.png

Como consumidor de serviços, você tem a flexibilidade de escolher como alocar seus IPs particulares para serviços, além de não precisar mais gerenciar os intervalos de sub-redes para VPCs de produtores. Agora você pode simplesmente atribuir um IP virtual escolhido da VPC a esse serviço usando um serviço de conexão.

Neste codelab, você vai criar uma arquitetura abrangente do Private Service Connect que ilustra o uso do acesso global do PSC com o MongoDB Atlas.

O acesso global permite que os clientes se conectem ao Private Service Connect (PSC) em fronteiras regionais. Isso é útil para criar alta disponibilidade em serviços gerenciados hospedados em várias regiões ou para permitir que os clientes acessem um serviço que não esteja na mesma região do cliente.

O acesso global é um recurso opcional configurado na regra de encaminhamento do lado do consumidor. O comando a seguir mostra como ele é configurado:

gcloud beta compute forwarding-rules create psc-west \
    --region=us-west1 \
    --network=consumer-vpc \
    --address=psc-west-address \
    --target-service-attachment=projects/.../serviceAttachments/sa-west \
    --allow-psc-global-access
  • A flag --allow-psc-global-access ativa o acesso global em um endpoint do Private Service Connect
  • O acesso global permite que o cliente esteja em uma região diferente da regra de encaminhamento do Private Service Connect, mas a regra de encaminhamento precisa estar na mesma região do anexo de serviço a que está conectada.
  • Não é necessário configurar o anexo de serviço do produtor para ativar o acesso global. É uma opção puramente do lado do consumidor.

O acesso global também pode ser ativado ou desativado a qualquer momento para endpoints existentes. Não há interrupção do tráfego para conexões ativas ao ativar o acesso global em um endpoint existente. O acesso global é ativado em uma regra de encaminhamento existente com o seguinte comando:

gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access

Como desativar o acesso global

O acesso global também pode ser desativado nas regras de encaminhamento atuais com a flag --no-allow-psc-global-access. Todo tráfego inter-regional ativo será encerrado após a execução desse comando.

gcloud beta compute forwarding-rules update psc-west --no-allow-psc-global-access

3. O que você vai criar

  1. Um cluster multirregional do MongoDB Atlas (topologia descrita na Figura 2) será criado com um nó em us-west1 e dois nós nas regiões us-west2, respectivamente.
  2. Uma VPC de consumidor e uma VM associada para acessar clusters do MongoDB em us-west1 e us-west2.
  3. Uma VPC e duas sub-redes nas regiões us-west1 e us-west2, respectivamente, com pelo menos 64 endereços IP sem custo financeiro em cada sub-rede (crie sub-redes com /26 e abaixo).

O cliente do MongoDB será instalado na vm1 na VPC do consumidor. Quando o nó principal falhar em us-west1, o cliente poderá ler/gravar pelo novo nó principal em us-west2.

Figura 2. ab6c2791514c4481.png

O que você vai aprender

  • Como criar uma VPC e sub-redes implantadas em duas regiões
  • Como implantar um cluster do MongoDB Atlas em várias regiões
  • Como criar um endpoint particular
  • Como se conectar ao MongoDB
  • Como executar e validar o failover do MongoDB em várias regiões

O que é necessário

  • Projeto do Google Cloud
  • Fornecer uma sub-rede /26 por região
  • Acesso de proprietário do projeto ou da organização ao MongoDB Atlas para criar um cluster do MongoDB com nível de cluster M10 ou superior. Use o GETATLAS para receber créditos sem custo financeiro para executar o PoV.

4. Antes de começar

Atualizar o projeto para oferecer suporte ao codelab

Este codelab usa $variables para ajudar na implementação da configuração do gcloud no Cloud Shell.

No Cloud Shell, faça o seguinte:

gcloud config list project
gcloud config
set project [YOUR-PROJECT-NAME]
projectname
=YOUR-PROJECT-NAME
echo $projectname

5. Configuração do consumidor

Criar a VPC do consumidor

No Cloud Shell, faça o seguinte:

gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom

Criar as sub-redes do consumidor

No Cloud Shell, faça o seguinte:

gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1

No Cloud Shell, crie o endpoint do consumidor para us-west1:

gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1

No Cloud Shell, crie o endpoint do consumidor para us-west2:

gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2

Configuração do Cloud Router e NAT

O Cloud NAT é usado no codelab para a instalação de pacotes de software, já que as instâncias de VM não têm um endereço IP externo.

No Cloud Shell, crie o roteador da nuvem.

gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1

No Cloud Shell, crie o gateway NAT.

gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1

Configuração da instância vm1

Na próxima seção, você vai criar a instância do Compute Engine, vm1.

No Cloud Shell, crie a instância vm1.

gcloud compute instances create vm1 \
   
--project=$projectname \
   
--zone=us-west1-a \
   
--machine-type=e2-micro \
   
--network-interface=subnet=vm-subnet,no-address \
   
--maintenance-policy=MIGRATE \
   
--provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
   
--metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump -y
      sudo apt-get install dnsutils -y"

Para permitir que o IAP se conecte às suas instâncias de VM, crie uma regra de firewall que:

  • Aplica-se a todas as instâncias da VM que você quer que sejam acessíveis usando o IAP.
  • Permite o tráfego de entrada do intervalo de IP 35.235.240.0/20. Esse intervalo contém todos os endereços IP que o IAP usa para o encaminhamento de TCP.

No Cloud Shell, crie a regra de firewall do IAP.

gcloud compute firewall-rules create ssh-iap-consumer-vpc \
   
--network consumer-vpc \
   
--allow tcp:22 \
   
--source-ranges=35.235.240.0/20

6. Criar o cluster multi-região do MongoDB Atlas

  • Precisamos configurar um cluster do Atlas antes de começar a configuração do PSC. É possível assinar o MongoDB Atlas de duas maneiras:
  • No Google Cloud Marketplace, se você tiver uma conta do Google Cloud. Consulte a documentação para configurar sua assinatura.
  • Na página de registro do Atlas.
  • Depois de se inscrever no Atlas, clique no botão "Criar um banco de dados", conforme mostrado abaixo.

796f5bda844bf400.png

  • Criar novo cluster → Dedicado

56c340661d86962c.png

  • Provedor e região da nuvem → Google Cloud
  • Isolamento de cargas de trabalho, multirregião e várias nuvens → Selecionado (marcação azul)

6c10293ffd9814ae.png

  • Nós eletivos: us-west1 (1 nó) e us-west2 (2 nós)

e652bd944d785871.png

  • Nível do cluster → M10. Deixe todas as outras configurações como padrão.

ffa0195b96c2c5ff.png

  • Nome do cluster → psc-mongodb-uswest1-uswest2

3720fb8c15ba5cc2.png

  • Selecione → Criar cluster

ec5e3e6983c02e27.png

  • A criação do banco de dados leva de 7 a 10 minutos

d75778d5abf484aa.png

Visualização do cluster após a implantação

1f0ec6a401578650.png

7. Criação de endpoint particular para us-west1

  • Faça login na sua conta do Atlas e navegue até o projeto.

Criar um novo usuário para permitir acesso de leitura/gravação a qualquer banco de dados

Segurança → Acesso ao banco de dados selecione adicionar novo usuário do banco de dados. Confira a seguir um exemplo de nome de usuário e senha configurados como codelab. Selecione a leitura e a gravação de função integrada em qualquer banco de dados.

f622ab14ddc96fc7.png

  • Em "Segurança" → "Acesso à rede", a lista de acesso a IPs não exige uma entrada.

Preparar endpoints particulares no MongoDB Atlas

  • Selecione "Acesso à rede" → "Endpoints particulares" → "Cluster dedicado" → "Adicionar endpoint particular" 88f5c1d9ae7e46d9.png

Provedor de nuvem

  • Selecione "Google Cloud" e clique em "Próxima"

5503248bf4019a35.png

Anexo de serviço

  • Selecione a região, us-west1, e clique em "Próxima".

cb31aea7cad182f9.png

Endpoints

  • Para criar um endpoint do Private Service Connect, forneça o seguinte:
  • ID do projeto do Google Cloud: selecione "Mostrar instruções" para ver detalhes.
  • Nome da VPC: consumer-vpc
  • Nome da sub-rede: psc-endpoint-us-west1
  • Prefixo do endpoint do Private Service Connect: psc-endpoint-us-west1

21d76af5367832f4.png

Configurar endpoints

Na seção a seguir, um script shell é gerado e precisa ser salvo localmente com o nome setup_psc.sh. Depois de salvar, edite o script de shell para permitir o acesso global ao PSC. É possível realizar essa ação no Cloud Shell do projeto do Google Cloud.

  • Exemplo de script de shell. A saída terá valores diferentes

5c80cf7315a05c25.png

  • Copie o script de shell do console do MongoBD e salve o conteúdo no terminal do Cloud Shell do Google Cloud. Salve o script como setup_psc.sh.

Exemplo antes da atualização:

#!/bin/bash
gcloud config
set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc
-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done

for i in {0..49}
do
 
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
    echo
"psc-endpoint-us-west1-ip-$i is not RESERVED";
   
exit 1;
 
fi
done

for i in {0..49}
do
  gcloud compute forwarding
-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done

if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
  echo
"Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
 
exit 2;
fi

gcloud compute forwarding
-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json

Atualizar o script de shell para oferecer suporte ao acesso global

Use o editor nano ou vi para identificar e atualizar o script de shell com a sintaxe abaixo:

gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access

Exemplo após a atualização:

#!/bin/bash
gcloud config
set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc
-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done

for i in {0..49}
do
 
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
    echo
"psc-endpoint-us-west1-ip-$i is not RESERVED";
   
exit 1;
 
fi
done

for i in {0..49}
do
  gcloud beta compute forwarding
-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
  echo
"Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
 
exit 2;
fi

gcloud compute forwarding
-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json

Executar o script de shell

Navegue e execute o script setup_psc.sh. Depois de concluído, um arquivo chamado atlasEndpoints-psc-endpoint-us-west1.json será criado. O arquivo JSON contém uma lista de endereços IP e nomes de endpoints do Private Service Connect necessários para a próxima etapa da implantação.

No Cloud Shell, faça o seguinte:

sh setup_psc.sh

Quando o script for concluído, use o editor do Cloud Shell para fazer o download de atlasEndpoints-psc-endpoint-us-west1.json localmente.

2856802dd6497f51.png b0059dc8e1558891.png

Fazer upload do arquivo JSON

Faça upload do arquivo JSON salvo anteriormente atlasEndpoints-psc-endpoint-us-west1.json

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Selecione "Criar".

Validar endpoints do Private Service Connect

Na interface do MongoDB, navegue até seu projeto e selecione "Security" → "Network access" → "Private endpoint". Ao selecionar a guia "Cluster dedicado", a transição do endpoint para "Disponível" vai levar 10 minutos.

Status disponível

972aff09d180d9de.png

No console do Google Cloud, navegue até "Serviços de rede" → "Private Service Connect", selecione a guia "Endpoint conectado" que mostra os endpoints do consumidor em transição "Pendente" → "Aceito", como no exemplo abaixo:

5472dd938604b3.png

8. Criação de endpoint particular para us-west2

  • Faça login na sua conta do Atlas e navegue até o projeto.

Preparar endpoints particulares no MongoDB Atlas

  • Selecione "Acesso à rede" → "Endpoints particulares" → "Cluster dedicado" → "Adicionar endpoint particular" 88f5c1d9ae7e46d9.png

Provedor de nuvem

  • Selecione "Google Cloud" e clique em "Próxima"

5503248bf4019a35.png

Anexo de serviço

  • Selecione a região, us-west2, e clique em "Próxima".

fc0b7a8e4274be3b.png

Endpoints

  • Para criar um endpoint do Private Service Connect, forneça o seguinte:
  • ID do projeto do Google Cloud: selecione "Mostrar instruções" para ver detalhes.
  • Nome da VPC: consumer-vpc
  • Nome da sub-rede: psc-endpoint-us-west2
  • Prefixo do endpoint do Private Service Connect: psc-endpoint-us-west2

17b5a056587ede8a.png

Configurar endpoints

Na seção a seguir, um script shell é gerado e precisa ser salvo localmente com o nome setup_psc.sh. Depois de salvar, edite o script de shell para permitir o acesso global ao PSC. É possível realizar essa ação no Cloud Shell do projeto do Google Cloud.

  • Exemplo de script de shell. A saída terá valores diferentes

b021821e7d59f450.png

  • Copie o script de shell do console do MongoBD e salve o conteúdo no terminal do Cloud Shell do Google Cloud. Salve o script como setup_psc.sh.

Exemplo antes da atualização:

#!/bin/bash
gcloud config
set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc
-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done

for i in {0..49}
do
 
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
    echo
"psc-endpoint-us-west2-ip-$i is not RESERVED";
   
exit 1;
 
fi
done

for i in {0..49}
do
  gcloud compute forwarding
-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done

if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
  echo
"Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
 
exit 2;
fi

gcloud compute forwarding
-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json

Atualize o script de shell para oferecer suporte ao acesso global

Use o editor nano ou vi para identificar e atualizar o script de shell com a sintaxe abaixo:

gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q
/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

Exemplo após a atualização:

#!/bin/bash
gcloud config
set project yourprojectname

for i in {0..49}
do
  gcloud compute addresses create psc
-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done

for i in {0..49}
do
 
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
    echo
"psc-endpoint-us-west2-ip-$i is not RESERVED";
   
exit 1;
 
fi
done

for i in {0..49}
do
  gcloud beta compute forwarding
-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q
/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done

if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
  echo
"Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
 
exit 2;
fi

gcloud compute forwarding
-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json

Executar o script de shell

Navegue e execute o script setup_psc.sh. Depois de concluído, um arquivo chamado atlasEndpoints-psc-endpoint-us-west2.json será criado. O arquivo JSON contém uma lista de endereços IP e nomes de endpoints do Private Service Connect necessários para a próxima etapa da implantação.

No Cloud Shell, faça o seguinte:

sh setup_psc.sh

Quando o script for concluído, use o editor do Cloud Shell para fazer o download de atlasEndpoints-psc-endpoint-us-west2.json localmente.

2856802dd6497f51.png 6e3d944944718f13.png

Fazer upload do arquivo JSON

Faça upload do arquivo JSON salvo anteriormente atlasEndpoints-psc-endpoint-us-west2.json

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Selecione "Criar".

Validar endpoints do Private Service Connect

Na interface do MongoDB, navegue até seu projeto e selecione "Security" → "Network access" → "Private endpoint". Selecionando a guia, cluster dedicado, a transição do endpoint para disponível após 10 minutos.

Status disponível:

8801df4f6b39d20a.png

No console do Google Cloud, navegue até Serviços de rede → Private Service Connect, selecione a guia "Endpoint conectado" que mostra os endpoints do consumidor em transição "Pendente" → "Aceito", como no exemplo abaixo. Um total de 100 endpoints são implantados no endpoint do consumidor e precisam ser aceitos antes de passar para a próxima etapa.

6131abcdef5c1f49.png

9. Conectar-se ao MongoDB Atlas de endpoints particulares

Depois que as conexões de serviço particulares forem aceitas, será necessário mais tempo (10 a 15 minutos) para atualizar o cluster do MongoDB. Na interface do MongoDB, o contorno cinza representa a atualização do cluster. Portanto, a conexão com o endpoint particular não está disponível.

c1524d2c0c5765d1.png

Identifique a implantação e selecione "Conectar". Observe que a caixa cinza não está mais presente.

3eea96af20bfad20.png

Escolha o tipo de conexão → Endpoint privado e selecione Escolher um método de conexão.

16a9090e495640c7.png

Selecione Conectar com o MongoDB Shell

35e422af16cb5ce0.png

Selecione "I do not have the MongoDB Shell installed, Ubuntu 20.4" e copie o conteúdo das etapas 1 e 3 para um bloco de notas.

51be47403c00bab4.png

10. Instalar o aplicativo mongosh

Antes da instalação, você precisa criar uma string de comando com base nos valores copiados anteriormente nas etapas 1 e 3. Em seguida, você vai fazer login na VM1 usando o Cloud Shell, seguido pela instalação e validação do aplicativo mongosh no banco de dados principal (us-west1). A imagem do Ubuntu 20.4 foi instalada ao criar a vm1 na consumer-vpc.

Escolha um método de conexão: etapa 1, copiar o URL de download

5da980ff86265dd8.png

Exemplo de string de comando, substitua pelos seus valores personalizados:

https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

Escolha um método de conexão, etapa 3.

698286bdf3dee3c7.png

Exemplo de string de comando, substitua pelos seus valores personalizados:

mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

Fazer login na vm1

No Cloud Shell, faça o seguinte:

gcloud config list project
gcloud config
set project [YOUR-PROJECT-NAME]
projectname
=YOUR-PROJECT-NAME
echo $projectname

Faça login na vm1 usando o IAP no Cloud Shell e tente novamente se houver um tempo limite.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

Realizar a instalação no SO

Execute a instalação no login do Cloud Shell. Detalhes adicionais. Atualize a sintaxe abaixo com sua string personalizada.

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

A operação precisa responder com um

OK

.

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

sudo apt
-get update -y

wget https
://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

sudo dpkg
-i mongodb-mongosh_1.7.1_amd64.deb

Conectar-se à implantação do MongoDB

No login do Cloud Shell, faça o seguinte. O nome de usuário e a senha configurados são codelab.

mongosh

mongosh
"mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

Veja um exemplo a seguir:

d5d0324a273b4d5e.png

Executar comandos no banco de dados

No login do Cloud Shell, faça o seguinte.

show dbs
use Company
db
.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db
.Employee.findOne({"Name":"cosmo"})

11. Região do MongoDB ativa de failover, us-west1

Antes de executar o failover, vamos validar se us-west1 é o primário e us-west2 tem dois nós secundários.

Navegue até "Database" → "psc-mongodb-uswest1-uswest2" → "Overview".

64ca0395807bb3ac.png

Na seção a seguir, faça login na vm1 localizada em us-west1, faça failover da região do cluster principal do MongoDB us-west1 e verifique se o banco de dados ainda pode ser acessado pelo cluster do MongoDB em us-west2.

É possível testar o failover primário e regional na interface do Atlas.

  • Faça login na interface do Atlas.
  • Clique em [...] ao lado do nome do cluster, psc-mongodb-uswest1-uswest2 → Test Outage.

3a50da4381817975.png

  • Selecione "Interrupção regional" → "Selecionar regiões".

b8dfff376477bcbb.png

  • Selecione a região principal, us-west1 → Simular interrupção regional.

76494a750a040bc5.png

Depois de selecionado, o cluster vai mostrar a simulação de interrupção após três a quatro minutos.

Fechar janela

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

Verifique se us-west1 está inativo e se us-west2 agora é a região principal

Navegue até "Database" → "psc-mongodb-uswest1-uswest2" → "Overview".

86fd7d5230715645.png

Validar a conectividade ao cluster pelo novo primário, us-west2

Faça login na vm1 localizada em us-west1 e acesse o MongoDB em us-west2, validando o acesso global do Private Service Connect.

Se a sessão do Cloud Shell for encerrada, faça o seguinte:

No Cloud Shell, faça o seguinte:

gcloud config list project
gcloud config
set project [YOUR-PROJECT-NAME]
projectname
=YOUR-PROJECT-NAME
echo $projectname

Faça login na vm1 usando o IAP no Cloud Shell e tente novamente se houver um tempo limite.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

Conectar-se à implantação do MongoDB

No Cloud Shell, faça o seguinte:

mongosh

mongosh
"mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

Veja um exemplo a seguir:

d262800a557b41a3.png

Executar comandos no banco de dados

No login do Cloud Shell, faça o seguinte.

show dbs
use Company
db
.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db
.Employee.findOne()

exit

20c2571d84c0661d.png

Sucesso: você validou que o acesso global do PSC permite a conectividade perfeita do endpoint do consumidor em todas as regiões para ajudar na alta disponibilidade ou devido a interrupções regionais. No codelab, o failover regional do MongoDB ocorreu no nó primário localizado em us-west1. Portanto, a região secundária us-west2 assumiu o primário. Embora o cluster tenha resultado em uma interrupção regional, a vm1 do consumidor localizada em us-west1 alcançou o novo cluster principal em us-west2.

12. Limpeza

No console do Cloud, exclua os endpoints do consumidor

Navegue até Serviços de rede → Private Service Connect → Endpoints conectados

Use o filtro psc-endpoint para evitar a exclusão de endpoints de consumidores que não são de laboratório. Selecione todos os endpoints → EXCLUIR

192548e374b444a1.png

Exclua os endereços IP internos estáticos associados aos endpoints do consumidor.

Navegue até Rede VPC → consumer-vpc → DESTINOS DE IP INTERNO ESTÁTICOS.

Use o filtro psc-endpoint para eliminar a possível exclusão de endpoints de consumidores que não são de laboratório e aumentar o número de linhas por página para 100. Selecione todos os endpoints → LIBERAR

4cebf164c4fecd83.png

No Cloud Shell, exclua os componentes do codelab.

gcloud compute instances delete vm1 --zone=us-west1-a --quiet 

gcloud compute networks subnets
delete psc-endpoint-us-west1 vm-subnet --region=us-west1 --quiet

gcloud compute networks subnets
delete psc-endpoint-us-west2 --region=us-west2 --quiet

gcloud compute firewall
-rules delete ssh-iap-consumer --quiet

gcloud compute routers
delete consumer-cr --region=us-west1 --quiet

gcloud compute networks
delete consumer-vpc --quiet

Na interface do Atlas, identifique o cluster psc-mongodb-uswest1-uswest2 → encerrar a simulação

f82e28ac984d9e20.png

Selecione "Finalizar simulação de interrupção" —> "Sair"

38feaf055abdceea.png

O cluster está revertendo us-west1 como principal. Esse processo levará de 3 a 4 minutos. Depois de concluído, encerre o cluster. Observe o contorno cinza que indica uma mudança de status.

f249a61bcc966d41.png

9427a9349daa1fea.png

Inserir o nome do cluster → Encerrar

9ef6d3a6387c5b4b.png

Excluir o endpoint particular associado a us-west1 e us-west2

Na interface do Atlas, navegue até "Segurança" → "Acesso à rede" → "Endpoint particular" → "Selecionar".

56415ea954b2fec9.png

13. Parabéns

Parabéns! Você configurou e validou um endpoint do Private Service Connect com acesso global ao MongoDB em todas as regiões. Você criou uma VPC do consumidor, um MongoDB multirregião e endpoints do consumidor. Uma VM localizada em us-west1 se conectou ao MongoDB em us-west1 e us-west2 após o failover regional.

Cosmopup acha que os codelabs são incríveis.

8c2a10eb841f7b01.jpeg

Qual é a próxima etapa?

Confira alguns destes codelabs:

Leituras e vídeos complementares

Documentos de referência