Accéder à MongoDB Atlas multirégional avec Private Service Connect

1. Introduction

Private Service Connect (PSC) simplifie la consommation des services de manière sécurisée et privée. Ce modèle simplifie considérablement l'architecture réseau en permettant aux consommateurs de services de se connecter en privé aux producteurs de services dans différentes organisations. Il élimine ainsi le besoin d'appairage de cloud privé virtuel. La figure 1 illustre l'appairage de VPC et les attributs PSC.

Figure 1 : 4f9551fc32ed83f5.png

En tant que client de services, vous pouvez choisir comment allouer vos adresses IP privées aux services, tout en vous libérant de la gestion des plages de sous-réseaux pour les VPC de producteurs. Vous pouvez désormais attribuer simplement une adresse IP virtuelle de votre VPC à ce service à l'aide d'un service connect.

Dans cet atelier de programmation, vous allez créer une architecture Private Service Connect complète qui illustre l'utilisation de l'accès global PSC avec MongoDB Atlas.

L'accès mondial permet aux clients de se connecter à Private Service Connect (PSC) au-delà des frontières régionales. Cela permet de créer une haute disponibilité pour les services gérés hébergés dans plusieurs régions ou d'autoriser les clients à accéder à un service qui ne se trouve pas dans leur région.

2. Activer l'accès mondial

L'accès global est une fonctionnalité facultative qui est configurée sur la règle de transfert côté client. La commande suivante montre comment il est configuré:

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
  • L'indicateur --allow-psc-global-access active l'accès mondial sur un point de terminaison Private Service Connect
  • L'accès mondial permet au client de se trouver dans une région différente de celle de la règle de transfert Private Service Connect, mais la règle de transfert doit toujours se trouver dans la même région que l'attachement de service auquel elle est connectée.
  • Aucune configuration n'est requise sur l'attachement de service du producteur pour activer l'accès mondial. Il s'agit d'une option purement côté client.

Vous pouvez également activer ou désactiver l'accès mondial à tout moment pour les points de terminaison existants. L'activation de l'accès mondial sur un point de terminaison existant n'entraîne aucune perturbation du trafic pour les connexions actives. L'accès global est activé sur une règle de transfert existante à l'aide de la commande suivante:

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

Désactiver l'accès mondial

Vous pouvez également désactiver l'accès global sur des règles de transfert existantes à l'aide de l'indicateur --no-allow-psc-global-access. Notez que tout trafic interrégional actif sera arrêté après l'exécution de cette commande.

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

3. Ce que vous allez faire

  1. Un cluster MongoDB Atlas multirégional (topologie décrite dans la figure 2) sera créé avec un nœud dans la région us-west1 et deux nœuds dans la région us-west2, respectivement.
  2. Un VPC client et la VM associée pour accéder aux clusters MongoDB dans les régions us-west1 et us-west2.
  3. Un VPC et deux sous-réseaux dans les régions us-west1 et us-west2, respectivement, avec au moins 64 adresses IP libres dans chaque sous-réseau (créez des sous-réseaux avec /26 et moins).

Le client MongoDB sera installé sur vm1 dans le VPC du client. En cas de défaillance du nœud principal dans us-west1, le client pourra lire/écrire via le nouveau nœud principal dans us-west2.

Figure 2. ab6c2791514c4481.png

Points abordés

  • Créer un VPC et des sous-réseaux déployés dans deux régions
  • Déployer un cluster MongoDB Atlas multirégional
  • Créer un point de terminaison privé
  • Se connecter à MongoDB
  • Effectuer et valider le basculement MongoDB multirégional

Prérequis

  • Projet Google Cloud
  • Fournir un sous-réseau /26 par région
  • Accès du propriétaire du projet ou de l'organisation à MongoDB Atlas pour créer un cluster MongoDB avec un niveau de cluster M10 ou supérieur. (Veuillez utiliser GETATLAS pour obtenir des crédits sans frais pour exécuter le PoV)

4. Avant de commencer

Mettre à jour le projet pour qu'il soit compatible avec l'atelier de programmation

Cet atelier de programmation utilise des $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.

Dans Cloud Shell, procédez comme suit:

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

5. Configuration du client

Créer le VPC client

Dans Cloud Shell, procédez comme suit:

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

Créer les sous-réseaux consommateurs

Dans Cloud Shell, procédez comme suit:

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

Dans Cloud Shell, créez le point de terminaison client pour 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

Dans Cloud Shell, créez le point de terminaison client pour 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

Configuration de Cloud Router et de NAT

Cloud NAT est utilisé dans l'atelier de programmation pour l'installation du package logiciel, car les instances de VM n'ont pas d'adresse IP externe.

Dans Cloud Shell, créez le routeur cloud.

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

Dans Cloud Shell, créez la passerelle NAT.

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

Configuration de l'instance vm1

Dans la section suivante, vous allez créer l'instance Compute Engine vm1.

Dans Cloud Shell, créez l'instance 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"

Pour autoriser IAP à se connecter à vos instances de VM, créez une règle de pare-feu qui:

  • S'applique à toutes les instances de VM que vous souhaitez rendre accessibles à l'aide d'IAP.
  • Autorise le trafic entrant provenant de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP qu'IAP utilise pour le transfert TCP.

Dans Cloud Shell, créez la règle de pare-feu IAP.

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

6. Créer le cluster MongoDB Atlas multirégional

  • Nous devons configurer un cluster Atlas avant de commencer à configurer le PSC. Vous pouvez vous abonner à MongoDB Atlas de l'une des deux manières ci-dessous:
  • Via Google Cloud Marketplace si vous disposez d'un compte Google Cloud. Consultez la documentation pour configurer votre abonnement.
  • Sur la page d'inscription à Atlas.
  • Une fois abonné à Atlas, cliquez sur le bouton "Créer une base de données", comme illustré ci-dessous.

796f5bda844bf400.png

  • Créer un cluster → Dédié

56c340661d86962c.png

  • Fournisseur de services cloud et région → Google Cloud
  • Multicloud, multirégion et isolation des charges de travail → Sélectionné (case bleue)

6c10293ffd9814ae.png

  • Nœuds éligibles → us-west1 (1 nœud), us-west2 (2 nœuds)

e652bd944d785871.png

  • Niveau de cluster → M10, laissez tous les autres paramètres par défaut

ffa0195b96c2c5ff.png

  • Nom du cluster → psc-mongodb-uswest1-uswest2

3720fb8c15ba5cc2.png

  • Sélectionner → Créer un cluster

ec5e3e6983c02e27.png

  • La création de la base de données prend entre 7 et 10 minutes.

d75778d5abf484aa.png

Vue du cluster une fois déployé

1f0ec6a401578650.png

7. Création d'un point de terminaison privé pour us-west1

  • Connectez-vous à votre compte Atlas, puis accédez à votre projet.

Créer un utilisateur pour autoriser l'accès en lecture/écriture à n'importe quelle base de données

Sécurité → Accès aux bases de données → Ajouter un utilisateur de base de données. Voici un exemple de nom d'utilisateur et de mot de passe configurés en tant que "codelab". Veillez à sélectionner le rôle intégré "Lecture et écriture" pour toutes les bases de données.

f622ab14ddc96fc7.png

  • Sous "Sécurité > Accès réseau", la liste d'accès aux adresses IP ne nécessite aucune entrée

Préparer des points de terminaison privés dans MongoDB Atlas

  • Sélectionnez "Accès réseau" → "Points de terminaison privés" → "Cluster dédié" → "Ajouter un point de terminaison privé" 88f5c1d9ae7e46d9.png.

Fournisseur cloud

  • Sélectionnez Google Cloud, puis cliquez sur "Suivant".

5503248bf4019a35.png

Rattachement de service

  • Sélectionnez la région, us-west1, puis cliquez sur "Suivant".

cb31aea7cad182f9.png

Points de terminaison

  • Pour créer un point de terminaison Private Service Connect, fournissez les éléments suivants:
  • ID de projet Google Cloud: sélectionnez "Afficher les instructions" pour en savoir plus
  • Nom du VPC: consumer-vpc
  • Nom du sous-réseau: psc-endpoint-us-west1
  • Préfixe du point de terminaison Private Service Connect: psc-endpoint-us-west1

21d76af5367832f4.png

Configurer des points de terminaison

Dans la section suivante, un script shell est généré et doit être enregistré localement sous le nom setup_psc.sh. Une fois enregistré, modifiez le script shell pour autoriser l'accès mondial du psc. Vous pouvez effectuer cette action dans Cloud Shell du projet Google Cloud.

  • Exemple de script shell (votre sortie aura des valeurs différentes)

5c80cf7315a05c25.png

  • Copiez le script shell à partir de la console MongoBD et enregistrez le contenu dans le terminal Cloud Shell de Google Cloud. Veillez à enregistrer le script sous le nom setup_psc.sh.

Exemple avant la mise à jour:

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

Mettre à jour le script shell pour prendre en charge l'accès global

Utilisez l'éditeur nano ou vi pour identifier et mettre à jour le script shell à l'aide de la syntaxe ci-dessous:

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

Exemple après la mise à jour:

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

Exécuter le script shell

Accédez au script setup_psc.sh et exécutez-le. Un fichier nommé atlasEndpoints-psc-endpoint-us-west1.json est alors créé. Le fichier JSON contient une liste d'adresses IP et de noms de points de terminaison Private Service Connect requis pour l'étape suivante du déploiement.

Dans Cloud Shell, procédez comme suit:

sh setup_psc.sh

Une fois le script terminé, utilisez l'éditeur Cloud Shell pour télécharger atlasEndpoints-psc-endpoint-us-west1.json localement.

2856802dd6497f51.png b0059dc8e1558891.png

Importer le fichier JSON

Importez le fichier JSON précédemment enregistré atlasEndpoints-psc-endpoint-us-west1.json.

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Sélectionnez "Créer".

Valider les points de terminaison Private Service Connect

Dans l'interface utilisateur de MongoDB, accédez à votre projet, puis à Sécurité → Accès réseau → Point de terminaison privé. Si vous sélectionnez l'onglet "Cluster dédié", la transition du point de terminaison vers l'état "Disponible" prendra 10 minutes.

État "Disponible"

972aff09d180d9de.png

Dans la console Google Cloud, accédez à Services réseau → Private Service Connect, puis sélectionnez l'onglet "Point de terminaison connecté" affichant les points de terminaison client en transition de "En attente" à "Accepté" (voir exemple ci-dessous) :

5472dd938604b3.png

8. Création d'un point de terminaison privé pour us-west2

  • Connectez-vous à votre compte Atlas, puis accédez à votre projet.

Préparer des points de terminaison privés dans MongoDB Atlas

  • Sélectionnez "Accès réseau" → "Points de terminaison privés" → "Cluster dédié" → "Ajouter un point de terminaison privé" 88f5c1d9ae7e46d9.png.

Fournisseur cloud

  • Sélectionnez Google Cloud, puis cliquez sur "Suivant".

5503248bf4019a35.png

Rattachement de service

  • Sélectionnez la région, us-west2, puis cliquez sur "Suivant".

fc0b7a8e4274be3b.png

Points de terminaison

  • Pour créer un point de terminaison Private Service Connect, fournissez les éléments suivants:
  • ID de projet Google Cloud: sélectionnez "Afficher les instructions" pour en savoir plus
  • Nom du VPC: consumer-vpc
  • Nom du sous-réseau: psc-endpoint-us-west2
  • Préfixe du point de terminaison Private Service Connect: psc-endpoint-us-west2

17b5a056587ede8a.png

Configurer des points de terminaison

Dans la section suivante, un script shell est généré et doit être enregistré localement sous le nom setup_psc.sh. Une fois enregistré, modifiez le script shell pour autoriser l'accès mondial du psc. Vous pouvez effectuer cette action dans Cloud Shell du projet Google Cloud.

  • Exemple de script shell (vos valeurs de sortie seront différentes)

b021821e7d59f450.png

  • Copiez le script shell à partir de la console MongoBD et enregistrez le contenu dans le terminal Cloud Shell de Google Cloud. Veillez à enregistrer le script sous le nom setup_psc.sh.

Exemple avant la mise à jour:

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

Mettre à jour le script shell pour prendre en charge l'accès global

Utilisez l'éditeur nano ou vi pour identifier et mettre à jour le script shell à l'aide de la syntaxe ci-dessous:

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

Exemple après la mise à jour:

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

Exécuter le script shell

Accédez au script setup_psc.sh et exécutez-le. Un fichier nommé atlasEndpoints-psc-endpoint-us-west2.json est alors créé. Le fichier JSON contient une liste d'adresses IP et de noms de points de terminaison Private Service Connect requis pour l'étape suivante du déploiement.

Dans Cloud Shell, procédez comme suit:

sh setup_psc.sh

Une fois le script terminé, utilisez l'éditeur Cloud Shell pour télécharger atlasEndpoints-psc-endpoint-us-west2.json localement.

2856802dd6497f51.png 6e3d944944718f13.png

Importer le fichier JSON

Importez le fichier JSON précédemment enregistré atlasEndpoints-psc-endpoint-us-west2.json.

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Sélectionnez "Créer".

Valider les points de terminaison Private Service Connect

Dans l'interface utilisateur de MongoDB, accédez à votre projet, puis à Sécurité → Accès réseau → Point de terminaison privé. En sélectionnant l'onglet "Cluster dédié", le point de terminaison passe à l'état "Disponible" au bout de 10 minutes.

État disponible:

8801df4f6b39d20a.png

Dans la console Google Cloud, accédez à Services réseau → Private Service Connect, puis sélectionnez l'onglet "Point de terminaison connecté" affichant les points de terminaison client en transition de "En attente" à "Accepté" (voir exemple ci-dessous). Un total de 100 points de terminaison sont déployés dans le point de terminaison client et doivent être acceptés avant de passer à l'étape suivante.

6131abcdef5c1f49.png

9. Se connecter à MongoDB Atlas à partir de points de terminaison privés

Une fois les connexions aux services privés acceptées, un délai supplémentaire (10 à 15 minutes) est nécessaire pour mettre à jour le cluster MongoDB. Dans l'interface utilisateur MongoDB, le contour gris représente la mise à jour du cluster. Par conséquent, la connexion au point de terminaison privé n'est pas disponible.

c1524d2c0c5765d1.png

Identifiez le déploiement, puis sélectionnez "Connect" (Se connecter). Notez que la zone grise n'est plus présente.

3eea96af20bfad20.png

Choisir un type de connexion → Point de terminaison privé, sélectionnez "Choisir une méthode de connexion"

16a9090e495640c7.png

Sélectionnez "Se connecter avec le shell MongoDB".

35e422af16cb5ce0.png

Sélectionnez "Je n'ai pas installé MongoDB Shell, Ubuntu 20.4", puis assurez-vous de copier le contenu des étapes 1 et 3 dans un bloc-notes.

51be47403c00bab4.png

10. Installer l'application mongosh

Avant l'installation, vous devez créer une chaîne de commande basée sur les valeurs précédemment copiées obtenues aux étapes 1 et 3. Vous vous connecterez ensuite à vm1 via SSH à l'aide de Cloud Shell, puis installerez et validerez l'application mongosh dans la base de données principale (us-west1). L'image Ubuntu 20.4 a été installée lors de la création de vm1 dans le vpc consumer.

Choisir une méthode de connexion: Étape 1, copier l'URL de téléchargement

5da980ff86265dd8.png

Exemple de chaîne de commande. Remplacez-la par vos valeurs personnalisées:

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

Choisissez une méthode de connexion (étape 3).

698286bdf3dee3c7.png

Exemple de chaîne de commande. Remplacez-la par vos valeurs personnalisées:

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

Se connecter à vm1

Dans Cloud Shell, procédez comme suit:

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

Connectez-vous à vm1 à l'aide d'IAP dans Cloud Shell. Réessayez en cas de délai avant expiration.

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

Effectuer l'installation à partir du système d'exploitation

Effectuez l'installation à partir de la connexion au système d'exploitation Cloud Shell. Plus d'informations disponibles. Mettez à jour la syntaxe ci-dessous avec votre chaîne personnalisée.

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

L'opération doit répondre avec 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

Se connecter au déploiement MongoDB

Dans la session Cloud Shell, procédez comme suit. Le nom d'utilisateur et le mot de passe configurés sont "codelab".

mongosh

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

En voici un exemple :

d5d0324a273b4d5e.png

Exécuter des commandes sur la base de données

Dans la session Cloud Shell, procédez comme suit.

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

11. Région MongoDB active de basculement, us-west1

Avant d'effectuer le basculement, vérifions que us-west1 est le nœud principal et que us-west2 comporte deux nœuds secondaires.

Accédez à Database → psc-mongodb-uswest1-uswest2 → Overview.

64ca0395807bb3ac.png

Dans la section suivante, connectez-vous à la VM1 située dans la région us-west1, effectuez un basculement de la région de cluster MongoDB principale us-west1 et vérifiez que la base de données est toujours accessible depuis le cluster MongoDB dans us-west2.

Vous pouvez tester le basculement principal et régional depuis l'interface utilisateur d'Atlas.

  • Connectez-vous à l'interface utilisateur d'Atlas.
  • Cliquez sur [...] à côté du nom de votre cluster, psc-mongodb-uswest1-uswest2 → Test d'indisponibilité.

3a50da4381817975.png

  • Sélectionnez "Panne régionale" → "Sélectionner des régions".

b8dfff376477bcbb.png

  • Sélectionnez la région principale, us-west1→ Simuler une panne régionale.

76494a750a040bc5.png

Une fois le cluster sélectionné, la simulation d'indisponibilité s'affiche au bout de trois à quatre minutes.

Fermer la fenêtre

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

Vérifiez que us-west1 est indisponible et que us-west2 est désormais défini comme principal.

Accédez à Database → psc-mongodb-uswest1-uswest2 → Overview.

86fd7d5230715645.png

Valider la connectivité au cluster via le nouveau nœud principal, us-west2

Connectez-vous à la VM1 située dans la région us-west1 et accédez à MongoDB dans la région us-west2 pour valider l'accès global de Private Service Connect.

Si votre session Cloud Shell a été arrêtée, procédez comme suit:

Dans Cloud Shell, procédez comme suit:

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

Connectez-vous à vm1 à l'aide d'IAP dans Cloud Shell. Réessayez en cas de délai avant expiration.

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

Se connecter au déploiement MongoDB

Dans la session Cloud Shell, procédez comme suit.

mongosh

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

En voici un exemple :

d262800a557b41a3.png

Exécuter des commandes sur la base de données

Dans la session Cloud Shell, procédez comme suit.

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

exit

20c2571d84c0661d.png

Vous avez réussi: vous avez validé que l'accès mondial PSC permet une connectivité fluide des points de terminaison client dans les différentes régions pour faciliter la haute disponibilité ou en cas de pannes régionales. Dans l'atelier de programmation, le basculement régional MongoDB s'est produit dans le nœud principal situé dans la région us-west1. Par conséquent, la région secondaire us-west2 a pris le relais en tant que nœud principal. Bien que le cluster ait entraîné une panne régionale, la VM1 du client située dans us-west1 a bien atteint le nouveau cluster principal dans us-west2.

12. Nettoyage

Dans Cloud Console, supprimez les points de terminaison des consommateurs.

Accédez à "Services réseau" → "Private Service Connect" → "POINTS DE TERMINATION CONNECTÉS".

Utilisez le filtre psc-endpoint pour éviter la suppression potentielle des points de terminaison client hors laboratoire. Sélectionner tous les points de terminaison → SUPPRIMER

192548e374b444a1.png

Supprimer les adresses IP internes statiques associées aux points de terminaison des consommateurs

Accédez à "Réseau VPC" → "consumer-vpc" → "ADRESSES IP INTERNES STATIQUES".

Utilisez le filtre psc-endpoint pour éviter la suppression potentielle des points de terminaison client hors laboratoire et augmenter le nombre de lignes par page à 100. Sélectionner tous les points de terminaison → LIBÉRER

4cebf164c4fecd83.png

Dans Cloud Shell, supprimez les composants du atelier de programmation.

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

Dans l'interface utilisateur d'Atlas, identifiez le cluster psc-mongodb-uswest1-uswest2 → mettez fin à la simulation

f82e28ac984d9e20.png

Sélectionnez "Mettre fin à la simulation d'indisponibilité" -> "Quitter".

38feaf055abdceea.png

Le cluster rétablit désormais us-west1 comme nœud principal. Ce processus prendra trois à quatre minutes. Une fois l'opération terminée, arrêtez le cluster. Notez le contour gris qui indique un changement d'état.

f249a61bcc966d41.png

9427a9349daa1fea.png

Insérer le nom du cluster → Terminer

9ef6d3a6387c5b4b.png

Supprimer le point de terminaison privé associé à us-west1 et us-west2

Dans l'interface utilisateur d'Atlas, accédez à Sécurité → Accès réseau → Point de terminaison privé → Sélectionnez "Terminer".

56415ea954b2fec9.png

13. Félicitations

Félicitations ! Vous avez correctement configuré et validé un point de terminaison Private Service Connect avec accès mondial à MongoDB dans toutes les régions. Vous avez créé un VPC consommateur, un MongoDB multirégional et des points de terminaison consommateurs. Une VM située dans us-west1 s'est connectée à MongoDB dans us-west1 et us-west2 lors du basculement régional.

Cosmopup pense que les ateliers de programmation sont géniaux !

8c2a10eb841f7b01.jpeg

Et ensuite ?

Découvrez quelques-uns des ateliers de programmation...

Autres ressources et vidéos

Documents de référence