Accesso a MongoDB Atlas multiregionale con Private Service Connect

1. Introduzione

Private Service Connect (PSC) semplifica il modo in cui i servizi vengono utilizzati in modo sicuro e privato. Questo modello semplifica notevolmente l'architettura di rete consentendo ai consumer di servizi di connettersi privatamente ai producer di servizi tra le organizzazioni ed elimina la necessità del peering virtual private cloud. La figura 1 illustra gli attributi del peering VPC e di PSC.

Figura 1. 4f9551fc32ed83f5.png

In qualità di consumer di servizi, ti offre la flessibilità di scegliere come allocare gli IP privati ai servizi, eliminando al contempo l'onere di gestire gli intervalli di subnet per i VPC del producer. Ora puoi semplicemente assegnare un IP virtuale scelto dal tuo VPC a questo servizio utilizzando un servizio di connessione.

In questo codelab creerai un'architettura Private Service Connect completa che illustra l'utilizzo dell'accesso globale PSC con MongoDB Atlas.

L'accesso globale consente ai client di connettersi a Private Service Connect (PSC) oltre i confini regionali. Ciò è utile per creare alta disponibilità tra i servizi gestiti ospitati in più regioni o per consentire ai client di accedere a un servizio che non si trova nella stessa regione del client.

2. Abilitare l'accesso globale

L'accesso globale è una funzionalità facoltativa configurata nella regola di forwarding lato consumer. Il seguente comando mostra come è configurato:

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
  • Il flag --allow-psc-global-access abilita l'accesso globale a un endpoint Private Service Connect
  • L'accesso globale consente al client di trovarsi in una regione diversa dalla regola di forwarding Private Service Connect, ma la regola di forwarding deve comunque trovarsi nella stessa regione del collegamento del servizio a cui è connessa.
  • Non è necessaria alcuna configurazione nell'allegato di servizio del produttore per attivare l'accesso globale. È un'opzione esclusivamente lato consumer.

L'accesso globale può essere attivato o disattivato in qualsiasi momento anche per gli endpoint esistenti. Non si verifica alcuna interruzione del traffico per le connessioni attive quando si attiva l'accesso globale su un endpoint esistente. L'accesso globale è abilitato su una regola di forwarding esistente con il seguente comando:

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

Disattivare l'accesso globale

L'accesso globale può essere disattivato anche per le regole di forwarding esistenti con il flag --no-allow-psc-global-access. Tieni presente che tutto il traffico interregionale attivo verrà interrotto dopo l'esecuzione di questo comando.

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

3. Cosa creerai

  1. Verrà creato un cluster MongoDB Atlas multiregionale (topologia descritta nella Figura 2) con un nodo in us-west1 e due nodi in us-west2.
  2. Un VPC consumer e una VM associata per accedere ai cluster MongoDB in us-west1 e us-west2.
  3. Un VPC e due subnet nelle regioni us-west1 e us-west2 rispettivamente con almeno 64 indirizzi IP liberi in ogni subnet (crea subnet con /26 e valori inferiori).

Il client MongoDB verrà installato su vm1 nel VPC consumer. Quando il nodo primario non funziona in us-west1, il client potrà leggere/scrivere tramite il nuovo nodo primario in us-west2.

Figura 2. ab6c2791514c4481.png

Obiettivi didattici

  • Come creare un VPC e le relative subnet di cui è stato eseguito il deployment in due regioni
  • Come eseguire il deployment di un cluster MongoDB Atlas multiregionale
  • Come creare un endpoint privato
  • Come connettersi a MongoDB
  • Come eseguire e convalidare il failover MongoDB multiregionale

Che cosa ti serve

  • Progetto Google Cloud
  • Fornisci una subnet /26 per regione
  • Accesso del proprietario del progetto o dell'organizzazione a MongoDB Atlas per creare un cluster MongoDB con livello del cluster M10 o superiore. Utilizza GETATLAS per ottenere crediti senza costi per l'esecuzione della prova di concetto.

4. Prima di iniziare

Aggiorna il progetto per supportare il codelab

Questo codelab utilizza le variabili $per facilitare l'implementazione della configurazione di gcloud in Cloud Shell.

In Cloud Shell, esegui le seguenti operazioni:

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

5. Configurazione consumatore

Crea il VPC consumer

In Cloud Shell, esegui le seguenti operazioni:

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

Crea le subnet consumer

In Cloud Shell, esegui le seguenti operazioni:

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

In Cloud Shell, crea l'endpoint consumer per 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

In Cloud Shell, crea l'endpoint consumer per 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

Configurazione di router Cloud e NAT

Cloud NAT viene utilizzato nel codelab per l'installazione del pacchetto software poiché le istanze VM non hanno un indirizzo IP esterno.

In Cloud Shell, crea il router Cloud.

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

In Cloud Shell, crea il 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

Configurazione dell'istanza vm1

Nella sezione seguente, creerai l'istanza Compute Engine vm1.

In Cloud Shell, crea l'istanza 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"

Per consentire a IAP di connettersi alle tue istanze VM, crea una regola firewall che:

  • Si applichi a tutte le istanze VM a cui vuoi accedere tramite IAP.
  • Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP che utilizzati da IAP per l'inoltro TCP.

In Cloud Shell, crea la regola firewall 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 il cluster MongoDB Atlas multiregionale

  • Prima di iniziare la configurazione di PSC, dobbiamo configurare un cluster Atlas. Puoi abbonarti a MongoDB Atlas in uno dei due modi seguenti:
  • Tramite Google Cloud Marketplace se hai un account Google Cloud. Consulta la documentazione per configurare l'abbonamento.
  • Con la pagina di registrazione di Atlas.
  • Una volta effettuato l'abbonamento ad Atlas, fai clic sul pulsante Crea un database, come mostrato di seguito.

796f5bda844bf400.png

  • Crea nuovo cluster → Dedicato

56c340661d86962c.png

  • Cloud provider e regione → Google Cloud
  • Multi-cloud, multiregione e isolamento dei workload → Selezionato (segno di spunta blu)

6c10293ffd9814ae.png

  • Nodi eleggibili → us-west1 (1 nodo), us-west2 (2 nodi)

e652bd944d785871.png

  • Livello del cluster → M10, lascia invariate tutte le altre impostazioni predefinite

ffa0195b96c2c5ff.png

  • Nome del cluster → psc-mongodb-uswest1-uswest2

3720fb8c15ba5cc2.png

  • Seleziona → Crea cluster

ec5e3e6983c02e27.png

  • La creazione del database richiede 7-10 minuti

d75778d5abf484aa.png

Visualizzazione del cluster dopo il deployment

1f0ec6a401578650.png

7. Creazione di endpoint privati per us-west1

  • Accedi al tuo account Atlas e vai al tuo progetto.

Crea un nuovo utente per consentire l'accesso in lettura/scrittura a qualsiasi database

Sicurezza → Accesso al database seleziona Aggiungi nuovo utente del database. Di seguito è riportato un esempio di nome utente e password configurati come codelab. Assicurati di selezionare il ruolo integrato di lettura e scrittura in qualsiasi database.

f622ab14ddc96fc7.png

  • In Sicurezza → Accesso alla rete, l'elenco di accesso IP non richiede una voce

Prepara gli endpoint privati in MongoDB Atlas

  • Seleziona Accesso alla rete → Endpoint privati → Cluster dedicato → Aggiungi endpoint privato 88f5c1d9ae7e46d9.png

Fornitore di servizi cloud

  • Seleziona Google Cloud, poi Avanti.

5503248bf4019a35.png

Collegamento servizio

  • Seleziona la regione us-west1, poi Avanti.

cb31aea7cad182f9.png

Endpoint

  • Per creare un endpoint Private Service Connect, fornisci quanto segue:
  • ID progetto Google Cloud: seleziona "Mostra istruzioni" per i dettagli
  • Nome VPC: consumer-vpc
  • Nome subnet: psc-endpoint-us-west1
  • Prefisso dell'endpoint Private Service Connect: psc-endpoint-us-west1

21d76af5367832f4.png

Configura gli endpoint

Nella sezione seguente viene generato uno script shell che deve essere salvato localmente con il nome setup_psc.sh. Una volta salvato, modifica lo script della shell per consentire l'accesso globale a psc. Puoi eseguire questa azione in Cloud Shell del progetto Google Cloud.

  • Script shell di esempio, il tuo output avrà valori diversi

5c80cf7315a05c25.png

  • Copia lo script della shell dalla console MongoDB e salva i contenuti nel terminale Google Cloud Cloud Shell. Assicurati di salvare lo script come setup_psc.sh.

Esempio di aggiornamento prima:

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

Aggiorna lo script della shell per supportare l'accesso globale

Utilizza l'editor nano o vi per identificare e aggiornare lo script della shell con la sintassi riportata di seguito:

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

Esempio dopo l'aggiornamento:

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

Esegui lo script della shell

Naviga ed esegui lo script setup_psc.sh. Al termine, viene creato un file denominato atlasEndpoints-psc-endpoint-us-west1.json. Il file JSON contiene un elenco di indirizzi IP e nomi di endpoint Private Service Connect necessari per il passaggio successivo del deployment.

In Cloud Shell, esegui le seguenti operazioni:

sh setup_psc.sh

Al termine dello script, utilizza l'editor di Cloud Shell per scaricare localmente atlasEndpoints-psc-endpoint-us-west1.json.

2856802dd6497f51.png b0059dc8e1558891.png

Caricare il file JSON

Carica il file JSON salvato in precedenza atlasEndpoints-psc-endpoint-us-west1.json.

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Seleziona Crea.

Convalida degli endpoint Private Service Connect

Nell'interfaccia utente di MongoDB, vai al tuo progetto, poi a Sicurezza → Accesso alla rete → Endpoint privato. Se selezioni la scheda, il cluster dedicato, la transizione dell'endpoint a disponibile richiederà 10 minuti.

Stato disponibile

972aff09d180d9de.png

Nella console Google Cloud, vai a Servizi di rete → Private Service Connect, seleziona la scheda Endpoint connesso che mostra gli endpoint consumer in transizione da In attesa a Accettato, come nell'esempio seguente:

5472dd938604b3.png

8. Creazione di endpoint privati per us-west2

  • Accedi al tuo account Atlas e vai al tuo progetto.

Prepara gli endpoint privati in MongoDB Atlas

  • Seleziona Accesso alla rete → Endpoint privati → Cluster dedicato → Aggiungi endpoint privato 88f5c1d9ae7e46d9.png

Fornitore di servizi cloud

  • Seleziona Google Cloud, poi Avanti.

5503248bf4019a35.png

Collegamento servizio

  • Seleziona la regione us-west2, poi fai clic su Avanti.

fc0b7a8e4274be3b.png

Endpoint

  • Per creare un endpoint Private Service Connect, fornisci quanto segue:
  • ID progetto Google Cloud: seleziona "Mostra istruzioni" per i dettagli
  • Nome VPC: consumer-vpc
  • Nome subnet: psc-endpoint-us-west2
  • Prefisso dell'endpoint Private Service Connect: psc-endpoint-us-west2

17b5a056587ede8a.png

Configura gli endpoint

Nella sezione seguente viene generato uno script shell che deve essere salvato localmente con il nome setup_psc.sh. Una volta salvato, modifica lo script della shell per consentire l'accesso globale a psc. Puoi eseguire questa azione in Cloud Shell del progetto Google Cloud.

  • Script shell di esempio, il tuo output avrà valori diversi

b021821e7d59f450.png

  • Copia lo script della shell dalla console MongoDB e salva i contenuti nel terminale Google Cloud Cloud Shell. Assicurati di salvare lo script come setup_psc.sh.

Esempio prima dell'aggiornamento:

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

Aggiorna lo script della shell per supportare l'accesso globale

Utilizza l'editor nano o vi per identificare e aggiornare lo script della shell con la sintassi riportata di seguito:

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

Esempio dopo l'aggiornamento:

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

Esegui lo script della shell

Naviga ed esegui lo script setup_psc.sh. Al termine, viene creato un file denominato atlasEndpoints-psc-endpoint-us-west2.json. Il file JSON contiene un elenco di indirizzi IP e nomi di endpoint Private Service Connect necessari per il passaggio successivo del deployment.

In Cloud Shell, esegui le seguenti operazioni:

sh setup_psc.sh

Al termine dello script, utilizza l'editor di Cloud Shell per scaricare localmente atlasEndpoints-psc-endpoint-us-west2.json.

2856802dd6497f51.png 6e3d944944718f13.png

Caricare il file JSON

Carica il file JSON salvato in precedenza atlasEndpoints-psc-endpoint-us-west2.json.

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Seleziona Crea.

Convalida gli endpoint Private Service Connect

Nell'interfaccia utente di MongoDB, vai al tuo progetto, poi a Sicurezza → Accesso alla rete → Endpoint privato. Se selezioni la scheda, il cluster dedicato, la transizione dell'endpoint a disponibile dopo 10 minuti.

Stato disponibile:

8801df4f6b39d20a.png

Nella console Google Cloud, vai a Servizi di rete → Private Service Connect, seleziona la scheda Endpoint connesso che mostra gli endpoint consumer in transizione da In attesa a Accettato, come nell'esempio riportato di seguito. Un totale di 100 endpoint vengono implementati nell'endpoint consumer e devono essere trasferiti a quelli accettati prima di passare al passaggio successivo.

6131abcdef5c1f49.png

9. Connettiti a MongoDB Atlas da endpoint privati

Una volta accettate le connessioni Private Service Connect, è necessario un tempo aggiuntivo (10-15 minuti) per aggiornare il cluster MongoDB. Nell'interfaccia utente di MongoDB, il contorno grigio rappresenta l'aggiornamento del cluster, pertanto la connessione all'endpoint privato non è disponibile.

c1524d2c0c5765d1.png

Identifica il deployment e seleziona Connetti (il riquadro grigio non è più presente)

3eea96af20bfad20.png

Scegli il tipo di connessione → Endpoint privato, seleziona Scegli un metodo di connessione

16a9090e495640c7.png

Seleziona Connettiti con la shell MongoDB

35e422af16cb5ce0.png

Seleziona Non ho installato la shell MongoDB, Ubuntu 20.4 e assicurati di copiare i contenuti dei passaggi 1 e 3 in un blocco note.

51be47403c00bab4.png

10. Installa l'applicazione mongosh

Prima dell'installazione, devi creare una stringa di comando in base ai valori copiati in precedenza ottenuti nei passaggi 1 e 3. Successivamente, esegui l'accesso SSH a vm1 utilizzando Cloud Shell, seguito dall'installazione e dalla convalida dell'applicazione mongosh nel database primario (us-west1). L'immagine Ubuntu 20.4 è stata installata durante la creazione di vm1 in consumer-vpc.

Scegli un metodo di connessione: passaggio 1, copia l'URL di download

5da980ff86265dd8.png

Stringa di comando di esempio, sostituisci con i tuoi valori personalizzati:

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

Scegli un metodo di connessione, passaggio 3.

698286bdf3dee3c7.png

Stringa di comando di esempio, sostituisci con i tuoi valori personalizzati:

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

Accedi a vm1

In Cloud Shell, esegui le seguenti operazioni:

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

Accedi a vm1 utilizzando IAP in Cloud Shell, riprova se si verifica un timeout.

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

Eseguire l'installazione dal sistema operativo

Esegui l'installazione dall'accesso al sistema operativo Cloud Shell, ulteriori dettagli disponibili, aggiorna la sintassi riportata di seguito con la tua stringa personalizzata

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

L'operazione dovrebbe rispondere 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

Connettiti al deployment MongoDB

All'interno dell'accesso al sistema operativo Cloud Shell, esegui le seguenti operazioni. Il nome utente e la password configurati sono codelab.

mongosh

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

Ad esempio:

d5d0324a273b4d5e.png

Eseguire comandi sul database

All'interno dell'accesso al sistema operativo Cloud Shell, esegui le seguenti operazioni.

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

11. Failover della regione MongoDB attiva, us-west1

Prima di eseguire il failover, verifichiamo che us-west1 sia il nodo primario e che us-west2 abbia due nodi secondari.

Vai a Database → psc-mongodb-uswest1-uswest2 → Panoramica

64ca0395807bb3ac.png

Nella sezione seguente, accedi a vm1 che si trova in us-west1, esegui il failover della regione del cluster MongoDB principale us-west1 e verifica che il database sia ancora raggiungibile dal cluster MongoDB in us-west2.

Puoi testare sia il failover primario che quello regionale dall'interfaccia utente di Atlas.

  • Accedi all'interfaccia utente di Atlas.
  • Fai clic su [...] accanto al nome del cluster, psc-mongodb-uswest1-uswest2 → Test Outage.

3a50da4381817975.png

  • Seleziona Interruzione regionale → Seleziona le regioni.

b8dfff376477bcbb.png

  • Seleziona la regione principale, us-west1 → Simula interruzione regionale.

76494a750a040bc5.png

Una volta selezionato, il cluster mostrerà la simulazione di interruzione dopo 3-4 minuti

Chiudi la finestra

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

Verifica che us-west1 non sia attivo e che us-west2 sia ora diventato il cluster principale

Vai a Database → psc-mongodb-uswest1-uswest2 → Panoramica

86fd7d5230715645.png

Convalida la connettività al cluster dal nuovo primary us-west2

Accedi a vm1 che si trova in us-west1 e accedi a mongodb in us-west2 con la convalida dell'accesso globale di Private Service Connect.

Se la sessione di Cloud Shell è stata terminata, procedi nel seguente modo:

In Cloud Shell, esegui le seguenti operazioni:

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

Accedi a vm1 utilizzando IAP in Cloud Shell, riprova se si verifica un timeout.

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

Connettiti al deployment MongoDB

All'interno dell'accesso al sistema operativo Cloud Shell, esegui le seguenti operazioni.

mongosh

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

Ad esempio:

d262800a557b41a3.png

Eseguire comandi sul database

All'interno dell'accesso al sistema operativo Cloud Shell, esegui le seguenti operazioni.

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

exit

20c2571d84c0661d.png

Operazione riuscita: hai verificato che l'accesso globale PSC consente una connettività endpoint consumer senza interruzioni tra le regioni per favorire l'alta affidabilità o a causa di interruzioni regionali. Nel codelab, il failover regionale di MongoDB si è verificato nel nodo primario situato in us-west1, pertanto la regione secondaria us-west2 ha assunto il ruolo di primaria. Sebbene il cluster abbia causato un'interruzione a livello regionale, la VM consumer vm1 situata in us-west1 ha raggiunto correttamente il nuovo cluster primario in us-west2.

12. Esegui la pulizia

Dalla console Cloud elimina gli endpoint consumer

Vai a Servizi di rete → Private Service Connect → ENDPOINT CONNESSI

Utilizza il filtro psc-endpoint per eliminare la potenziale eliminazione degli endpoint consumer non di laboratorio. Seleziona tutti gli endpoint → ELIMINA

192548e374b444a1.png

Elimina gli indirizzi IP interni statici associati agli endpoint consumer

Vai a Rete VPC → consumer-vpc → INDIRIZZI IP INTERNI STATICI

Utilizza il filtro psc-endpoint per eliminare la potenziale eliminazione degli endpoint consumer non di laboratorio e aumentare le righe per pagina a 100. Seleziona tutti gli endpoint → RILASCIA

4cebf164c4fecd83.png

Da Cloud Shell, elimina i componenti 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

Dall'interfaccia utente di Atlas, identifica il cluster psc-mongodb-uswest1-uswest2 → termina la simulazione

f82e28ac984d9e20.png

Seleziona Termina simulazione interruzione > Esci.

38feaf055abdceea.png

Il cluster sta ora ripristinando us-west1 come primario. Questo processo richiederà 3-4 minuti. Al termine, termina il cluster e prendi nota del contorno grigio che indica una modifica dello stato.

f249a61bcc966d41.png

9427a9349daa1fea.png

Inserisci il nome del cluster → Termina

9ef6d3a6387c5b4b.png

Elimina l'endpoint privato associato a us-west1 e us-west2

Nell'interfaccia utente di Atlas, vai a Sicurezza → Accesso alla rete → Endpoint privato → Seleziona Termina

56415ea954b2fec9.png

13. Complimenti

Congratulazioni, hai configurato e convalidato correttamente un endpoint Private Service Connect con accesso globale a MongoDB in tutte le regioni. Hai creato correttamente un VPC consumer, MongoDB multiregionale e endpoint consumer. Una VM situata in us-west1 si è connessa correttamente a MongoDB sia in us-west1 che in us-west2 in caso di failover regionale.

Cosmopup pensa che i codelab siano fantastici.

8c2a10eb841f7b01.jpeg

Passaggi successivi

Dai un'occhiata ad alcuni di questi codelab...

Ulteriori letture e video

Documentazione di riferimento