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

1. Introduction

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

Figure 1. 4f9551fc32ed83f5.png

En tant que consommateur de services, il vous permet de choisir comment allouer vos adresses IP privées aux services, tout en vous déchargeant 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'une connexion de service.

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

L'accès mondial permet aux clients de se connecter à Private Service Connect (PSC) au-delà des limites régionales. Cela est utile pour créer une haute disponibilité pour les services gérés hébergés dans plusieurs régions ou pour permettre aux clients d'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é consommateur. 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 permet l'accès mondial à 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'association de service à laquelle 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 côté consommateur uniquement.

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 mondial sur les règles de transfert existantes à l'aide de l'indicateur --no-allow-psc-global-access. Notez que tout trafic interrégional actif sera interrompu 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.
  2. Un VPC consommateur et une VM associée pour accéder aux clusters MongoDB dans 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 de consommateur. Lorsque le nœud principal échoue dans us-west1, le client peut 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égion
  • Créer un point de terminaison privé
  • Se connecter à MongoDB
  • Effectuer et valider un basculement MongoDB multirégion

Prérequis

  • Projet Google Cloud
  • Fournissez un sous-réseau /26 par région.
  • Accès au 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 point de vue.)

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 consommateur

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 de packages logiciels, car les instances de VM ne disposent 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 permettre à IAP de se connecter à vos instances de VM, créez une règle de pare-feu qui :

  • S'applique à toutes les instances de VM auxquelles vous souhaitez être accessible à l'aide d'IAP.
  • Autorise le trafic entrant à partir 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égion

  • Nous devons configurer un cluster Atlas avant de commencer la configuration de PSC. Vous pouvez vous abonner à MongoDB Atlas de l'une des deux manières suivantes :
  • Sur 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 "Build a Database" (Créer une base de données), comme indiqué ci-dessous.

796f5bda844bf400.png

  • Créer un cluster → Dédié

56c340661d86962c.png

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

6c10293ffd9814ae.png

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

e652bd944d785871.png

  • Niveau du cluster → M10, conservez les valeurs par défaut de tous les autres paramètres.

ffa0195b96c2c5ff.png

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

3720fb8c15ba5cc2.png

  • Sélectionnez → 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 et 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 à la base de données, puis sélectionnez "Ajouter un utilisateur de base de données". Voici un exemple de nom d'utilisateur et de mot de passe configurés comme codelab. Veillez à sélectionner le rôle intégré "Lecture et écriture dans n'importe quelle base 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 les 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 de services cloud

  • Sélectionnez Google Cloud, puis "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 informations suivantes :
  • ID du 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 de point de terminaison Private Service Connect : psc-endpoint-us-west1

21d76af5367832f4.png

Configurer les points de terminaison

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

  • Exemple de script shell (vos résultats auront des valeurs différentes)

5c80cf7315a05c25.png

  • Copiez le script shell depuis la console MongoDB et enregistrez son contenu dans le terminal Google Cloud Cloud Shell. Veillez à enregistrer le script sous le nom setup_psc.sh.

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

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

Utilisez l'éditeur nano ou vi pour identifier et mettre à jour le script shell avec 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. Une fois terminé, un fichier nommé atlasEndpoints-psc-endpoint-us-west1.json est créé. Le fichier JSON contient une liste d'adresses IP et de noms de points de terminaison Private Service Connect requis pour la prochaine étape 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 localement le fichier atlasEndpoints-psc-endpoint-us-west1.json.

2856802dd6497f51.png b0059dc8e1558891.png

Importer le fichier JSON

Importez le fichier JSON enregistré précédemment : 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 MongoDB, accédez à votre projet, puis à Security → Network access → Private endpoint. Si vous sélectionnez l'onglet "Cluster dédié", le point de terminaison passera à l'état "Disponible" au bout de 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 du consommateur passant de "En attente" à "Accepté". Exemple :

5472dd938604b3.png

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

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

Préparer les 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 de services cloud

  • Sélectionnez Google Cloud, puis "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 informations suivantes :
  • ID du 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 de point de terminaison Private Service Connect : psc-endpoint-us-west2

17b5a056587ede8a.png

Configurer les points de terminaison

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

  • Exemple de script shell (vos résultats auront des valeurs différentes)

b021821e7d59f450.png

  • Copiez le script shell depuis la console MongoDB et enregistrez son contenu dans le terminal Google Cloud Cloud Shell. 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 mondial

Utilisez l'éditeur nano ou vi pour identifier et mettre à jour le script shell avec 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. Une fois l'opération terminée, un fichier nommé atlasEndpoints-psc-endpoint-us-west2.json est créé. Le fichier JSON contient une liste d'adresses IP et de noms de points de terminaison Private Service Connect requis pour la prochaine étape 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 localement atlasEndpoints-psc-endpoint-us-west2.json.

2856802dd6497f51.png 6e3d944944718f13.png

Importer le fichier JSON

Importez le fichier JSON enregistré précédemment : 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 MongoDB, accédez à votre projet, puis à Security → Network access → Private endpoint. Si vous sélectionnez l'onglet "Cluster dédié", le point de terminaison passe à l'état "Disponible" au bout de 10 minutes.

État de disponibilité :

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 du consommateur passant de "En attente" à "Accepté". Voici un exemple : Au total, 100 points de terminaison sont déployés dans le point de terminaison client et doivent passer à l'état "Accepté" avant de passer à l'étape suivante.

6131abcdef5c1f49.png

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

Une fois les connexions Private Service Connect acceptées, un délai supplémentaire (10 à 15 minutes) est nécessaire pour mettre à jour le cluster MongoDB. Dans l'UI MongoDB, le contour gris représente la mise à jour du cluster. La connexion au point de terminaison privé n'est donc pas disponible.

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

Choisissez le type de connexion > Point de terminaison privé, puis sélectionnez "Choisir une méthode de connexion".

16a9090e495640c7.png

Sélectionnez "Connect with the MongoDB Shell" (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 devrez créer une chaîne de commande basée sur les valeurs copiées précédemment aux étapes 1 et 3. Vous allez ensuite vous connecter à vm1 à l'aide de Cloud Shell, puis installer et valider l'application mongosh sur 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 consommateur.

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

5da980ff86265dd8.png

Exemple de chaîne de commande (remplacez les valeurs par vos valeurs personnalisées) :

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

Choisir une méthode de connexion, étape 3.

698286bdf3dee3c7.png

Exemple de chaîne de commande (remplacez les valeurs 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 depuis l'OS

Effectuez l'installation à partir de la connexion OS Cloud Shell. Pour en savoir plus, cliquez ici. 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 l'OS de connexion 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 l'OS de connexion 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 pour le 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 VM 1 située dans us-west1, basculez la région du cluster MongoDB principal 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 Atlas.

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

3a50da4381817975.png

  • Sélectionnez "Panne régionale" → sélectionnez 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 hors service et que us-west2 est désormais l'instance principale.

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

86fd7d5230715645.png

Valider la connectivité au cluster par le nouveau primaire, us-west2

Connectez-vous à vm1 situé dans us-west1 et accédez à mongodb dans us-west2 en validant l'accès global à Private Service Connect.

Si votre session Cloud Shell s'est terminé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 l'OS de connexion 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 l'OS de connexion Cloud Shell, procédez comme suit.

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

exit

20c2571d84c0661d.png

Succès : vous avez vérifié que l'accès mondial à PSC permet une connectivité fluide des points de terminaison des consommateurs dans toutes les régions pour assurer une 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 us-west1. La région secondaire us-west2 a donc pris le relais en tant que région principale. Bien que le cluster ait entraîné une panne régionale, la VM consumer-vm1 située dans us-west1 a réussi à atteindre le nouveau cluster principal dans us-west2.

12. Nettoyage

Dans la console Cloud, supprimez les points de terminaison du consommateur.

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

Utilisez le filtre psc-endpoint pour éviter la suppression potentielle de points de terminaison grand public non liés à des tests. Sélectionnez tous les points de terminaison → SUPPRIMER.

192548e374b444a1.png

Supprimer les adresses IP internes statiques associées aux points de terminaison du consommateur

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

Utilisez le filtre psc-endpoint pour éviter la suppression potentielle de points de terminaison grand public non associés à un laboratoire et augmentez le nombre de lignes par page à 100. Sélectionner tous les points de terminaison → DIFFUSION

4cebf164c4fecd83.png

Dans Cloud Shell, supprimez les composants de l'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'UI Atlas, identifiez le cluster psc-mongodb-uswest1-uswest2 → Terminez la simulation

f82e28ac984d9e20.png

Sélectionnez Mettre fin à la simulation de panne > Quitter.

38feaf055abdceea.png

Le cluster est en train de rétablir us-west1 en tant que cluster principal. Ce processus prendra trois à quatre minutes. Une fois l'opération terminée, mettez fin au cluster et 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 à Security → Network Access → Private Endpoint → Select Terminate (Sécurité → Accès réseau → Point de terminaison privé → Sélectionner "Terminer").

56415ea954b2fec9.png

13. Félicitations

Félicitations ! Vous avez configuré et validé un point de terminaison Private Service Connect avec accès mondial à MongoDB dans plusieurs régions. Vous avez créé un VPC consommateur, un MongoDB multirégion et des points de terminaison consommateur. Une VM située dans us-west1 s'est connectée avec succès à 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...

Lectures et vidéos complémentaires

Documents de référence