Accede a MongoDB Atlas multirregional con Private Service Connect

1. Introducción

Private Service Connect (PSC) simplifica la forma en que se consumen los servicios de forma segura y privada. Este modelo simplifica en gran medida la arquitectura de red, ya que permite que los consumidores de servicios se conecten de forma privada a los productores de servicios en todas las organizaciones y elimina la necesidad de intercambio de tráfico entre nubes privadas virtuales. En la Figura 1, se ilustran los atributos de intercambio de tráfico entre VPC y PSC.

Figura 1: 4f9551fc32ed83f5.png

Como consumidor de servicios, te permite elegir cómo asignar tus IP privadas a los servicios y, al mismo tiempo, quitar la carga de administrar los rangos de subredes para las VPC de productor. Ahora, puedes asignar una IP virtual elegida de tu VPC a ese servicio con un servicio de conexión.

En este codelab, compilarás una arquitectura integral de Private Service Connect que ilustre el uso del acceso global de PSC con MongoDB Atlas.

El acceso global permite que los clientes se conecten a Private Service Connect (PSC) más allá de los límites regionales. Esto es útil para crear alta disponibilidad en los servicios administrados alojados en varias regiones o para permitir que los clientes accedan a un servicio que no está en la misma región que el cliente.

2. Habilita el acceso global

El acceso global es una función opcional que se configura en la regla de reenvío del consumidor. En el siguiente comando, se muestra cómo se configura:

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
  • La marca --allow-psc-global-access habilita el acceso global en un extremo de Private Service Connect.
  • El acceso global permite que el cliente esté en una región diferente de la regla de reenvío de Private Service Connect, pero la regla de reenvío debe estar en la misma región que el adjunto de servicio al que está conectado.
  • No se requiere configuración en el archivo adjunto del servicio del productor para habilitar el acceso global. Es una opción solo para el consumidor.

El acceso global también se puede activar o desactivar en cualquier momento para los extremos existentes. No se produce ninguna interrupción del tráfico para las conexiones activas cuando se habilita el acceso global en un extremo existente. El acceso global se habilita en una regla de reenvío existente con el siguiente comando:

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

Inhabilita el acceso global

El acceso global también se puede inhabilitar en las reglas de reenvío existentes con la marca --no-allow-psc-global-access. Ten en cuenta que se finalizará todo el tráfico interregional activo después de que se ejecute este comando.

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

3. Qué compilarás

  1. Se creará un clúster multirregional de MongoDB Atlas (topología que se describe en la Figura 2) con un nodo en la región us-west1 y dos nodos en la región us-west2, respectivamente.
  2. Una VPC de consumidor y una VM asociada para acceder a los clústeres de MongoDB en us-west1 y us-west2
  3. Una VPC y dos subredes en las regiones us-west1 y us-west2, respectivamente, con al menos 64 direcciones IP libres en cada subred (crea subredes con /26 y menos).

El cliente de MongoDB se instalará en vm1 en la VPC del consumidor. Cuando el nodo principal falle en us-west1, el cliente podrá leer y escribir a través del nuevo nodo principal en us-west2.

Figura 2: ab6c2791514c4481.png

Qué aprenderás

  • Cómo crear una VPC y subredes implementadas en dos regiones
  • Cómo implementar un clúster de MongoDB Atlas multirregional
  • Cómo crear un extremo privado
  • Cómo conectarse a MongoDB
  • Cómo realizar y validar la conmutación por error de MongoDB multirregional

Requisitos

  • Proyecto de Google Cloud
  • Proporciona una subred /26 por región
  • Acceso del propietario del proyecto o de la organización a MongoDB Atlas para crear un clúster de MongoDB con el nivel de clúster M10 o superior (usa GETATLAS para obtener créditos gratuitos para ejecutar el punto de vista)

4. Antes de comenzar

Actualiza el proyecto para admitir el codelab

En este codelab, se usan $variables para ayudar a implementar la configuración de gcloud en Cloud Shell.

En Cloud Shell, haz lo siguiente:

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

5. Configuración del consumidor

Crea la VPC de consumidor

En Cloud Shell, haz lo siguiente:

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

Crea las subredes de consumidor

En Cloud Shell, haz lo siguiente:

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

En Cloud Shell, crea el extremo del 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

En Cloud Shell, crea el extremo del 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

Configuración de Cloud Router y NAT

En el codelab, se usa Cloud NAT para la instalación de paquetes de software, ya que las instancias de VM no tienen una dirección IP externa.

En Cloud Shell, crea el router en la nube.

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

En Cloud Shell, crea la puerta de enlace de NAT.

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

Configuración de la instancia vm1

En la siguiente sección, crearás la instancia de Compute Engine, vm1.

En Cloud Shell, crea la instancia 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 IAP se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:

  • Se aplica a todas las instancias de VM a las que deseas acceder mediante IAP.
  • Permite el tráfico de entrada desde el rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.

En Cloud Shell, crea la regla de firewall de IAP.

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

6. Crea el clúster multirregional de MongoDB Atlas

  • Debemos configurar un clúster de Atlas antes de comenzar con la configuración de PSC. Puedes suscribirte a MongoDB Atlas de una de las siguientes maneras:
  • A través de Google Cloud Marketplace si tienes una cuenta de Google Cloud. Consulta la documentación para configurar tu suscripción.
  • Con la página de registro de Atlas.
  • Una vez que te hayas suscrito a Atlas, haz clic en el botón Crear una base de datos, como se muestra a continuación.

796f5bda844bf400.png

  • Crear un clúster nuevo → Dedicado

56c340661d86962c.png

  • Proveedor de servicios en la nube y región → Google Cloud
  • Aislamiento de cargas de trabajo, multinube y multirregión → Seleccionado (marca azul)

6c10293ffd9814ae.png

  • Nodos elegibles → us-west1 (1 nodo), us-west2 (2 nodos)

e652bd944d785871.png

  • Nivel del clúster → M10, Deja el resto de la configuración con sus valores predeterminados

ffa0195b96c2c5ff.png

  • Nombre del clúster → psc-mongodb-uswest1-uswest2

3720fb8c15ba5cc2.png

  • Selecciona → Crear clúster.

ec5e3e6983c02e27.png

  • La creación de la base de datos tarda entre 7 y 10 minutos.

d75778d5abf484aa.png

Vista del clúster una vez que se implementa

1f0ec6a401578650.png

7. Creación de extremos privados para us-west1

  • Accede a tu cuenta de Atlas y navega a tu proyecto.

Crea un usuario nuevo para permitir el acceso de lectura y escritura a cualquier base de datos

Seguridad → Acceso a la base de datos selecciona Agregar nuevo usuario de la base de datos. El siguiente es un ejemplo de nombre de usuario y contraseña configurados como codelab. Asegúrate de seleccionar la lectura y escritura de roles integrados en cualquier base de datos.

f622ab14ddc96fc7.png

  • En Seguridad → Acceso a la red, la lista de acceso de IP no requiere una entrada.

Prepara extremos privados en MongoDB Atlas

  • Selecciona Acceso a la red → Extremos privados → Clúster dedicado → Agregar extremo privado 88f5c1d9ae7e46d9.png

Proveedor de servicios en la nube

  • Selecciona Google Cloud y, luego, Next.

5503248bf4019a35.png

Adjunto de servicio

  • Selecciona la región, us-west1, y, luego, haz clic en Siguiente.

cb31aea7cad182f9.png

Extremos

  • Para crear un extremo de Private Service Connect, proporciona la siguiente información:
  • ID del proyecto de Google Cloud: Selecciona "Mostrar instrucciones" para obtener más información.
  • Nombre de la VPC: consumer-vpc
  • Nombre de la subred: psc-endpoint-us-west1
  • Prefijo del extremo de Private Service Connect: psc-endpoint-us-west1

21d76af5367832f4.png

Configura extremos

En la siguiente sección, se genera una secuencia de comandos de shell que se debe guardar de forma local con el nombre setup_psc.sh. Una vez guardada, edita la secuencia de comandos de shell para permitir el acceso global de psc. Puedes realizar esta acción en Cloud Shell del proyecto de Google Cloud.

  • Ejemplo de secuencia de comandos de shell, tu resultado tendrá valores diferentes

5c80cf7315a05c25.png

  • Copia la secuencia de comandos de shell de la consola de MongoBD y guarda el contenido en la terminal de Cloud Shell de Google Cloud. Asegúrate de guardar la secuencia de comandos como setup_psc.sh.

Ejemplo antes de la actualización:

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

Actualiza la secuencia de comandos de shell para admitir el acceso global

Usa el editor nano o vi para identificar y actualizar la secuencia de comandos de shell con la siguiente sintaxis:

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

Ejemplo después de la actualización:

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

Ejecuta la secuencia de comandos de shell

Navega y ejecuta la secuencia de comandos setup_psc.sh. Una vez completada, se creará un archivo llamado atlasEndpoints-psc-endpoint-us-west1.json. El archivo JSON contiene una lista de direcciones IP y nombres de extremos de Private Service Connect necesarios para el siguiente paso de la implementación.

En Cloud Shell, haz lo siguiente:

sh setup_psc.sh

Una vez que se complete la secuencia de comandos, usa el editor de Cloud Shell para descargar atlasEndpoints-psc-endpoint-us-west1.json de forma local.

2856802dd6497f51.png b0059dc8e1558891.png

Sube el archivo JSON

Sube el archivo JSON guardado anteriormente atlasEndpoints-psc-endpoint-us-west1.json.

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Selecciona Crear.

Cómo validar los extremos de Private Service Connect

En la IU de MongoDB, navega a tu proyecto y, luego, a Seguridad → Acceso de red → Extremo privado. Si seleccionas la pestaña clúster dedicado, la transición del extremo a disponible tardará 10 minutos.

Estado disponible

972aff09d180d9de.png

En la consola de Google Cloud, navega a Servicios de red → Private Service Connect, selecciona la pestaña Extremo conectado que muestra los extremos de consumidor que pasan de Pendiente a Aceptado, como se muestra a continuación:

5472dd938604b3.png

8. Creación de extremos privados para us-west2

  • Accede a tu cuenta de Atlas y navega a tu proyecto.

Prepara extremos privados en MongoDB Atlas

  • Selecciona Acceso a la red → Extremos privados → Clúster dedicado → Agregar extremo privado 88f5c1d9ae7e46d9.png

Proveedor de servicios en la nube

  • Selecciona Google Cloud y, luego, Next.

5503248bf4019a35.png

Adjunto de servicio

  • Selecciona la región, us-west2, y, luego, haz clic en Siguiente.

fc0b7a8e4274be3b.png

Extremos

  • Para crear un extremo de Private Service Connect, proporciona la siguiente información:
  • ID del proyecto de Google Cloud: Selecciona "Mostrar instrucciones" para obtener más información.
  • Nombre de la VPC: consumer-vpc
  • Nombre de la subred: psc-endpoint-us-west2
  • Prefijo del extremo de Private Service Connect: psc-endpoint-us-west2

17b5a056587ede8a.png

Configura extremos

En la siguiente sección, se genera una secuencia de comandos de shell que se debe guardar de forma local con el nombre setup_psc.sh. Una vez guardada, edita la secuencia de comandos de shell para permitir el acceso global de psc. Puedes realizar esta acción en Cloud Shell del proyecto de Google Cloud.

  • Ejemplo de secuencia de comandos de shell, tu resultado tendrá valores diferentes

b021821e7d59f450.png

  • Copia la secuencia de comandos de shell de la consola de MongoBD y guarda el contenido en la terminal de Cloud Shell de Google Cloud. Asegúrate de guardar la secuencia de comandos como setup_psc.sh.

Ejemplo antes de la actualización:

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

Actualiza la secuencia de comandos de shell para admitir el acceso global

Usa el editor nano o vi para identificar y actualizar la secuencia de comandos de shell con la siguiente sintaxis:

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

Ejemplo después de la actualización:

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

Ejecuta la secuencia de comandos de shell

Navega y ejecuta la secuencia de comandos setup_psc.sh. Una vez completada, se creará un archivo llamado atlasEndpoints-psc-endpoint-us-west2.json. El archivo JSON contiene una lista de direcciones IP y nombres de extremos de Private Service Connect necesarios para el siguiente paso de la implementación.

En Cloud Shell, haz lo siguiente:

sh setup_psc.sh

Una vez que se complete la secuencia de comandos, usa el editor de Cloud Shell para descargar atlasEndpoints-psc-endpoint-us-west2.json de forma local.

2856802dd6497f51.png 6e3d944944718f13.png

Sube el archivo JSON

Sube el archivo JSON guardado anteriormente atlasEndpoints-psc-endpoint-us-west2.json.

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Selecciona Crear.

Valida los extremos de Private Service Connect

En la IU de MongoDB, navega a tu proyecto y, luego, a Seguridad → Acceso de red → Extremo privado. Si seleccionas la pestaña, el clúster dedicado, el extremo pasará a estar disponible después de 10 minutos.

Estado disponible:

8801df4f6b39d20a.png

En la consola de Google Cloud, navega a Servicios de red → Private Service Connect, selecciona la pestaña Extremo conectado que muestra los extremos del consumidor en transición de Pendiente → Aceptado, como se muestra en el siguiente ejemplo. Se implementan un total de 100 extremos en el extremo del consumidor y deben pasar a aceptados antes de pasar al siguiente paso.

6131abcdef5c1f49.png

9. Cómo conectarse a MongoDB Atlas desde extremos privados

Una vez que se acepten las conexiones de Private Service Connect, se requerirá tiempo adicional (de 10 a 15 minutos) para actualizar el clúster de MongoDB. En la IU de MongoDB, el contorno gris representa la actualización del clúster, por lo que no está disponible la conexión al extremo privado.

c1524d2c0c5765d1.png

Identifica la implementación y selecciona Conectar (ten en cuenta que el cuadro gris ya no está presente).

3eea96af20bfad20.png

Elige un tipo de conexión → Extremo privado y, luego, selecciona Elige un método de conexión.

16a9090e495640c7.png

Selecciona Conectar con la Shell de MongoDB

35e422af16cb5ce0.png

Selecciona No tengo instalado MongoDB Shell, Ubuntu 20.4 y asegúrate de copiar el contenido de los pasos 1 y 3 en un notepad.

51be47403c00bab4.png

10. Instala la aplicación mongosh

Antes de la instalación, deberás crear una cadena de comandos en función de los valores copiados anteriormente que se obtuvieron en los pasos 1 y 3. Luego, te conectarás a vm1 a través de SSH con Cloud Shell y, luego, instalarás y validará la aplicación de mongosh en la base de datos principal (us-west1). Se instaló la imagen de Ubuntu 20.4 cuando se creó vm1 en consumer-vpc.

Elige un método de conexión: paso 1, copia la URL de descarga

5da980ff86265dd8.png

Cadena de comandos de ejemplo, reemplaza por tus valores personalizados:

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

Elige un método de conexión, paso 3.

698286bdf3dee3c7.png

Cadena de comandos de ejemplo, reemplaza por tus valores personalizados:

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

Accede a vm1

En Cloud Shell, haz lo siguiente:

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

Accede a vm1 con IAP en Cloud Shell y vuelve a intentarlo si se produce un tiempo de espera.

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

Realiza la instalación desde el SO

Realiza la instalación desde el acceso al SO de Cloud Shell. Hay más detalles disponibles. Actualiza la sintaxis a continuación con tu cadena personalizada.

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

La operación debe responder con un

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

Cómo conectarse a la implementación de MongoDB

Dentro del acceso al SO de Cloud Shell, haz lo siguiente. El nombre de usuario y la contraseña configurados son codelab.

mongosh

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

Consulta el siguiente ejemplo:

d5d0324a273b4d5e.png

Ejecuta comandos en la base de datos

Dentro del acceso al SO de Cloud Shell, haz lo siguiente.

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

11. Región activa de conmutación por error de MongoDB, us-west1

Antes de realizar la conmutación por error, validemos que us-west1 sea la principal y que us-west2 tenga dos nodos secundarios.

Navega a Base de datos → psc-mongodb-uswest1-uswest2 → Descripción general.

64ca0395807bb3ac.png

En la siguiente sección, accede a la vm1 ubicada en us-west1, realiza el resguardo de la región principal del clúster de MongoDB us-west1 y verifica que se pueda acceder a la base de datos desde el clúster de MongoDB en us-west2.

Puedes probar la conmutación por error principal y regional desde la IU de Atlas.

  • Accede a la IU de Atlas.
  • Haz clic en […] junto al nombre de tu clúster, psc-mongodb-uswest1-uswest2 → Probar interrupción.

3a50da4381817975.png

  • Selecciona Interrupción regional → Selecciona regiones.

b8dfff376477bcbb.png

  • Selecciona la región principal, us-west1 → Simulate Regional Outage.

76494a750a040bc5.png

Una vez seleccionado, el clúster mostrará la simulación de interrupción después de 3 o 4 minutos.

Cerrar la ventana

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

Verifica que us-west1 esté inactivo y que us-west2 ahora sea la región principal.

Navega a Base de datos → psc-mongodb-uswest1-uswest2 → Descripción general.

86fd7d5230715645.png

Valida la conectividad al clúster con el nuevo primario, us-west2

Accede a vm1 ubicada en us-west1 y accede a mongodb en us-west2 para validar el acceso global de Private Service Connect.

Si se cerró tu sesión de Cloud Shell, haz lo siguiente:

En Cloud Shell, haz lo siguiente:

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

Accede a vm1 con IAP en Cloud Shell y vuelve a intentarlo si se produce un tiempo de espera.

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

Cómo conectarse a la implementación de MongoDB

Dentro del acceso al SO de Cloud Shell, haz lo siguiente.

mongosh

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

Consulta el siguiente ejemplo:

d262800a557b41a3.png

Ejecuta comandos en la base de datos

Dentro del acceso al SO de Cloud Shell, haz lo siguiente.

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

exit

20c2571d84c0661d.png

Éxito: Validaste que el acceso global de PSC permite una conectividad sin problemas de los extremos del consumidor en todas las regiones para ayudar a la alta disponibilidad o debido a interrupciones regionales. En el codelab, la conmutación por error regional de MongoDB se produjo en el nodo principal ubicado en us-west1, por lo que la región secundaria us-west2 se apoderó de un nodo principal. Aunque el clúster generó una interrupción regional, la VM1 del consumidor ubicada en us-west1 se conectó correctamente al nuevo clúster principal en us-west2.

12. Limpieza

En la consola de Cloud, borra los extremos de consumidor

Navega a Servicios de red → Private Service Connect → EXTREMOS CONECTADOS

Usa el filtro psc-endpoint para eliminar la posible eliminación de extremos de consumidores que no sean de lab. Selecciona todos los extremos → BORRAR

192548e374b444a1.png

Borra las direcciones IP internas estáticas asociadas con los extremos del consumidor

Navega a Red de VPC → consumer-vpc → DIRECCIÓN IP INTERNA ESTÁTICA

Usa el filtro psc-endpoint para eliminar la posible eliminación de extremos de consumidores que no son de lab y aumentar las filas por página a 100. Selecciona todos los extremos → LIBERAR

4cebf164c4fecd83.png

En Cloud Shell, borra los componentes del 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

En la IU de Atlas, identifica el clúster psc-mongodb-uswest1-uswest2 → finaliza la simulación

f82e28ac984d9e20.png

Selecciona Finalizar simulación de interrupción —> Salir.

38feaf055abdceea.png

El clúster ahora revertirá us-west1 como principal. Este proceso tardará entre 3 y 4 minutos. Una vez que se complete, finaliza el clúster y observa el contorno gris que indica un cambio de estado.

f249a61bcc966d41.png

9427a9349daa1fea.png

Ingresa el nombre del clúster → Finalizar

9ef6d3a6387c5b4b.png

Borra el extremo privado asociado con us-west1 y us-west2

En la IU de Atlas, navega a Seguridad → Acceso a la red → Extremo privado → Selecciona Finalizar.

56415ea954b2fec9.png

13. Felicitaciones

¡Felicitaciones! Configuraste y validaste correctamente un extremo de Private Service Connect con acceso global a MongoDB en todas las regiones. Creaste correctamente una VPC de consumidor, MongoDB multirregional y extremos de consumidor. Una VM ubicada en us-west1 se conectó correctamente a MongoDB en us-west1 y us-west2 después de la conmutación por error regional.

Cosmopup piensa que los codelabs son geniales.

8c2a10eb841f7b01.jpeg

¿Qué sigue?

Consulta algunos codelabs sobre los siguientes temas:

Lecturas y videos adicionales

Documentos de referencia