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

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