Como acessar o MongoDB Atlas multirregional com o Private Service Connect

1. Introdução

O Private Service Connect (PSC) simplifica a forma como os serviços são consumidos de maneira segura e particular. Esse modelo facilita muito 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 e eliminando a necessidade de peering de nuvem privada virtual. A Figura 1 ilustra o peering de VPC e os atributos do PSC.

Figura 1. 4f9551fc32ed83f5.png

Como consumidor de serviço, ele oferece a flexibilidade de escolher como alocar seus IPs particulares aos serviços, removendo o trabalho de gerenciar intervalos de sub-redes para VPCs de produtores. Agora você pode simplesmente atribuir um IP virtual escolhido da sua VPC a esse serviço usando uma conexão de serviç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 todas as 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.

2. Como ativar o acesso global

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.
  • Com o acesso global, o cliente pode estar em uma região diferente da regra de encaminhamento do Private Service Connect, mas a regra de encaminhamento ainda precisa estar na mesma região do anexo de serviço a que está conectada.
  • Não é necessário fazer nenhuma configuração no anexo de serviço do produtor para ativar o acesso global. É uma opção exclusiva do lado do consumidor.

O acesso global também pode ser ativado ou desativado a qualquer momento para endpoints atuais. Não há interrupção do tráfego para conexões ativas ao ativar o acesso global em um endpoint atual. O acesso global é ativado em uma regra de encaminhamento 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 em regras de encaminhamento atuais com a flag --no-allow-psc-global-access. Todo o 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 em 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 livres 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 falha em us-west1, o cliente pode 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 multirregional
  • Como criar um endpoint particular
  • Como se conectar ao MongoDB
  • Como realizar e validar o failover multirregional do MongoDB

O que é necessário

  • Projeto do Google Cloud
  • Forneça 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 o nível M10 ou superior. (Use GETATLAS para receber créditos sem custo financeiro e executar o PoV)

4. Antes de começar

Atualizar o projeto para oferecer suporte ao codelab

Este codelab usa $variáveis para ajudar na implementação da configuração da 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 do NAT

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

No Cloud Shell, crie o Cloud Router.

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 seção a seguir, 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 de VM que você quer acessar 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 multirregional do MongoDB Atlas

  • Precisamos configurar um cluster do Atlas antes de começar a configuração do PSC. Você pode assinar o MongoDB Atlas de uma das duas maneiras abaixo:
  • 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", como mostrado abaixo.

796f5bda844bf400.png

  • Criar novo cluster → Dedicado

56c340661d86962c.png

  • Provedor de nuvem e região → Google Cloud
  • Multicloud, multirregião e isolamento de carga de trabalho → Selecionado (marca de seleção azul)

6c10293ffd9814ae.png

  • Nós eleitos → us-west1 (1 nó), 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.

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

Segurança → Acesso ao banco de dados e selecione "Adicionar novo usuário do banco de dados". Este é um exemplo de nome de usuário e senha configurados como codelab. Selecione a leitura e gravação de função integradas em qualquer banco de dados.

f622ab14ddc96fc7.png

  • Em Segurança → Acesso à rede, a lista de acesso por IP 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 na nuvem do Google: selecione "Mostrar instruções" para mais 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 de 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 do PSC. É possível realizar essa ação no Cloud Shell do projeto na nuvem do Google Cloud.

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

5c80cf7315a05c25.png

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

Exemplo de atualização before:

#!/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

Execute 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 local de atlasEndpoints-psc-endpoint-us-west1.json.

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 clique em "Segurança" → "Acesso à rede" → "Endpoint privado". Ao selecionar a guia, o cluster dedicado e a transição do endpoint para disponível 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 de "Pendente" para "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 na nuvem do Google: selecione "Mostrar instruções" para mais 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 de 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 do PSC. É possível realizar essa ação no Cloud Shell do projeto na nuvem do Google Cloud.

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

b021821e7d59f450.png

  • Copie o script de shell do console do MongoDB 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

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-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

Execute 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 local de atlasEndpoints-psc-endpoint-us-west2.json.

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 clique em "Segurança" → "Acesso à rede" → "Endpoint privado". Ao selecionar a guia, o cluster dedicado e 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 de "Pendente" para "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 são aceitas, é 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, não é possível se conectar ao endpoint particular.

c1524d2c0c5765d1.png

Identifique a implantação e selecione "Conectar". A caixa cinza não vai mais aparecer.

3eea96af20bfad20.png

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

16a9090e495640c7.png

Selecione "Conectar com o MongoDB Shell".

35e422af16cb5ce0.png

Selecione "Não tenho o MongoDB Shell instalado, 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, crie uma string de comando com base nos valores copiados nas etapas 1 e 3. Depois disso, você vai fazer SSH na vm1 usando o Cloud Shell, seguido da 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, copie 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

Faça login em 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 em vm1 usando o IAP no Cloud Shell. Tente de novo se houver um tempo limite.

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

Fazer a instalação pelo SO

Faça a instalação no login do SO do Cloud Shell. Mais detalhes disponíveis. 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. Failover da região ativa do MongoDB, us-west1

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

Navegue até "Banco de dados" → "psc-mongodb-uswest1-uswest2" → "Visão geral".

64ca0395807bb3ac.png

Na seção a seguir, faça login na vm1 localizada em us-west1, faça failover da região principal do cluster do MongoDB us-west1 e verifique se o banco de dados ainda está acessível 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 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 3 a 4 minutos.

Fechar janela

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

Verifique se us-west1 está inativo e se us-west2 agora é o principal.

Navegue até "Banco de dados" → "psc-mongodb-uswest1-uswest2" → "Visão geral".

86fd7d5230715645.png

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

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

Se a sessão do Cloud Shell foi 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 em vm1 usando o IAP no Cloud Shell. Tente de novo 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 login do 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 uma 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ó principal localizado em us-west1. Portanto, a região secundária us-west2 assumiu um nó principal. Embora o cluster tenha resultado em uma interrupção regional, a VM1 do consumidor localizada em us-west1 alcançou com êxito o novo cluster principal em us-west2.

12. Limpeza

No console do Cloud, exclua os endpoints do consumidor.

Acesse 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 sejam de laboratório. Selecione todos os endpoints → EXCLUIR

192548e374b444a1.png

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

Acesse Rede VPC → consumer-vpc → ENDEREÇOS IP INTERNOS ESTÁTICOS

Use o filtro psc-endpoint para evitar a exclusão de endpoints de consumidores que não sejam de laboratório e aumente as linhas por página para 100. Selecione todos os endpoints → RELEASE

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 → encerre a simulação.

f82e28ac984d9e20.png

Selecione Encerrar simulação de interrupção > Sair.

38feaf055abdceea.png

O cluster agora está revertendo us-west1 como principal. Esse processo vai levar de 3 a 4 minutos. Quando terminar, encerre o cluster e observe o contorno cinza indicando uma mudança de status.

f249a61bcc966d41.png

9427a9349daa1fea.png

Insira 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 privado" → "Selecionar encerrar".

56415ea954b2fec9.png

13. Parabéns

Parabéns! Você configurou e validou um endpoint do Private Service Connect com acesso global ao MongoDB em várias regiões. Você criou uma VPC do consumidor, um MongoDB multirregional 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.

O 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