Questo documento spiega come eseguire la migrazione di un progetto esistente dal DNS globale al DNS di zona. Il DNS a livello di zona migliora l'affidabilità isolando le interruzioni all'interno delle zone, evitando interruzioni dei servizi essenziali come la creazione di istanze e la riparazione automatica.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API. Google Cloud
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Esegui la migrazione di un progetto per utilizzare il DNS di zona:
Project Editor (
roles/resourcemanager.projectEditor
) nel progetto -
Esegui la migrazione delle VM al DNS zonale all'interno di un progetto:
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) nel progetto -
Se la VM utilizza un account di servizio:
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio o nel progetto -
Controlla i nomi DNS globali e i metadati della VM:
compute.projects.get
-
Imposta i metadati su una VM:
compute.instances.setMetadata
-
Impostare i metadati a livello di progetto:
compute.projects.setCommonInstanceMetadata
-
Se le VM utilizzano account di servizio:
iam.serviceAccounts.actAs
- Verificare se il progetto utilizza il DNS globale per impostazione predefinita
- Determinare l'idoneità alla migrazione dei progetti utilizzando l'analisi delle query
- Eseguire la migrazione dei progetti compatibili con il DNS di zona
- Correggere le query incompatibili
- Monitora i log DNS globali per verificare l'idoneità alla migrazione.
- Esegui la migrazione dei progetti rimanenti al DNS di zona
- Verificare se una modifica al DNS di zona influisce sul progetto
Nella console Google Cloud, vai alla pagina Metadati di Compute Engine.
Nella scheda Metadati, visualizza l'impostazione
vmdnssetting
, se esistente. Il valore assegnato indica se il progetto utilizza il DNS globale per impostazione predefinita.GlobalDefault
: il progetto ha il DNS globale abilitato.ZonalOnly
: il progetto ha il DNS di zona abilitato. Non è necessaria la migrazione di questo progetto.
Se l'impostazione dei metadati
vmdnssetting
non è elencata, controlla se la tua organizzazione utilizza il DNS globale per impostazione predefinita.GLOBAL_DEFAULT
: il progetto ha il DNS globale abilitato.ZONAL_ONLY
: il progetto ha il DNS di zona abilitato. Non è necessaria la migrazione di questo progetto.GLOBAL_DEFAULT
: il progetto ha il DNS globale abilitato.ZONAL_ONLY
: il progetto ha il DNS di zona abilitato. Per questo progetto non è necessaria la migrazione.zonal_dns_ready
(Query compatibili): questa metrica indica il numero totale di query in un periodo di 100 giorni che possono essere risolte utilizzando il DNS zonale.zonal_dns_risky
(Query incompatibili): questa metrica rappresenta il numero totale di query che non possono essere risolte utilizzando il DNS zonale. Queste query in genere prevedono la comunicazione tra regioni o altri scenari in cui la risoluzione zonale non riesce. È fondamentale che, se questa metrica ha un valore diverso da zero, il progetto non sia ancora pronto per la migrazione. Devi risolvere queste query incompatibili prima di passare al DNS di zona.-
Nella console Google Cloud, vai alla pagina leaderboard Esplora metriche:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
Sul lato destro della barra degli strumenti contenente il campo Seleziona una metrica, fai clic su Editor di codice, MQL o PromQL.
Se il campo di immissione della query non si chiama Query MQL, nell'angolo in basso a destra del campo di immissione della query, seleziona MQL per Lingua.
Nel campo di immissione della query, inserisci il seguente testo esattamente come appare:
fetch compute.googleapis.com/Location | metric 'compute.googleapis.com/global_dns/request_count' | every 1d | within 7d
Fai clic sul pulsante Esegui query.
La console Google Cloud mostra un grafico delle due metriche (
zonal_dns_ready
ezonal_dns_risky
) e il numero corrispondente di query effettuate nel periodo di tempo per ogni metrica.Controlla il valore della metrica
zonal_dns_risky
.- Se il valore è
0
, il progetto è pronto per la migrazione al DNS di zona. Puoi eseguire la migrazione del progetto, come descritto in Eseguire la migrazione dei progetti pronti al DNS di zona. - Se il valore è un numero diverso da zero, ad esempio
0.02k
come mostrato nello screenshot precedente, alcune query potrebbero non funzionare dopo la migrazione al DNS zonale. Il progetto non è pronto per la migrazione. Procedi con i passaggi descritti in Correggere le query incompatibili.
- Se il valore è
Fai clic sul pulsante Utilizza DNS zonale nella console Google Cloud.
Quando visualizzi la pagina Istanze VM per il tuo progetto, se il progetto è pronto per la migrazione (è compatibile con le query DNS di zona), il banner include un consiglio per utilizzare il DNS di zona. Questo consiglio si basa sull'utilizzo del DNS interno nel progetto, ma è limitato agli ultimi 30 giorni.
Se fai clic sul pulsante Utilizza DNS di zona, i metadati del progetto vengono aggiornati in modo da utilizzare il DNS di zona.
(Facoltativo) Visualizza ed esegui query sui metadati della VM per confermare la modifica dei metadati.
Modifica manualmente i metadati del progetto per utilizzare il DNS di zona.
Attiva il DNS di zona per le tue istanze impostando la voce dei metadati
vmDnsSetting
per il progetto. Dopo aver impostato questa voce di metadati, potrai accedere alle tue istanze di calcolo solo tramite i relativi nomi DNS di zona (VM_NAME.ZONE.c.PROJECT_ID.internal) quando utilizzi i percorsi di ricerca. Le istanze mantengono entrambi i percorsi di ricerca a livello di zona e globale, ma i relativi nomi DNS globali, che non includono ZONE come parte del nome DNS interno, non funzionano più. Quando questa impostazione è attiva, solo le istanze nella stessa regione e nello stesso progetto possono accedere tra di loro utilizzando il nome globale.Console
Per aggiornare l'impostazione a livello di progetto, nella console Google Cloud vai alla pagina Metadati di Compute Engine.
Fai clic su
Modifica.Se esiste una chiave con il valore
VmDnsSetting
, modifica il valore inZonalOnly
.Se una chiave con il valore
VmDnsSetting
non esiste, fai clic su Aggiungi elemento.- Nel campo Key (Chiave), inserisci
VmDnsSetting
. - Nel campo Valore, inserisci
ZonalOnly
.
- Nel campo Key (Chiave), inserisci
Per completare la modifica delle voci dei metadati personalizzati, fai clic su Salva.
gcloud
Per aggiornare l'impostazione dei metadati per il progetto corrente, utilizza il comando
project-info add-metadata
.gcloud compute project-info add-metadata \ --metadata vmDnsSetting=ZonalOnly
(Facoltativo) Per verificare le impostazioni dei metadati di un progetto, usa il seguente comando:
gcloud compute project-info describe --project=PROJECT_ID --flatten="vmDnsSetting"
Sostituisci PROJECT_ID con il nome del progetto su cui eseguire la query.
REST
Per aggiornare l'impostazione dei metadati a livello di progetto, crea una richiesta
POST
utilizzando il metodo projects.setCommonInstanceMetadata.(Facoltativo) Per eseguire il blocco ottimistico, puoi facoltativamente fornire un fingerprint.
Un'impronta è una stringa casuale di caratteri generata da Compute Engine. L'impronta cambia dopo ogni richiesta e, se fornisci un'impronta non corrispondente, la richiesta viene rifiutata.
Se non fornisci un'impronta, non viene eseguito alcun controllo di coerenza e la richiesta
projects.setCommonInstanceMetadata
va a buon fine. Se utilizzi il metodoinstances.setMetadata
, è sempre obbligatoria un'impronta.Per ottenere l'impronta corrente di un progetto, chiama il metodo
project.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
L'output è simile al seguente:
{ "name": "myproject", "commonInstanceMetadata": { "kind": "compute#metadata", "fingerprint": "FikclA7UBC0=", ... } }
Crea una richiesta
POST
al metodoprojects.setCommonInstanceMetadata
per impostare la coppia chiave-valore dei metadati:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "fingerprint": "FikclA7UBC0=", "items": [ { "key": "vmDnsSetting", "value": "ZonalOnly" } ] }
Sostituisci
PROJECT_ID
con l'ID del tuo progetto.
Dopo aver configurato la voce di metadati
vmDnsSetting
per il progetto, aggiorna il lease DHCP su ogni istanza del progetto. Puoi rinnovare il lease riavviando l'istanza, aspettando che scada o eseguendo uno dei seguenti comandi:Istanze Linux
sudo dhclient -v -r
Istanze Windows
ipconfig /renew
- Effettuare una chiamata a un'istanza di calcolo in un altro progetto
- Effettua una chiamata a un'istanza di calcolo in un'altra regione
Utilizza Esplora log per accedere e eseguire query sull'utilizzo del DNS globale per le istanze di calcolo del tuo progetto.
Seleziona il progetto.
Applica i filtri per nome della risorsa e del log:
- Fai clic su Risorsa.
- Nella finestra di dialogo Seleziona risorsa, seleziona Istanza VM e poi fai clic su Applica.
- Fai clic su Nome log.
Nella finestra di dialogo Seleziona i nomi dei log, seleziona gdnsusage e poi fai clic su Applica.
In alternativa, puoi inserire quanto segue nel campo di query:
resource.type="gce_instance" log_name="projects/PROJECT_ID/logs/compute.googleapis.com%2Fgdnsusage"
Nel riquadro Risultati query, ogni query ha un campo
jsonPayload
. OgnijsonPayload
campo contiene le seguenti informazioni:- Il nome della VM di origine, il relativo ID progetto e il nome della zona.
- Il nome della VM di destinazione, il relativo ID progetto e il nome della zona.
Un messaggio di debug che fornisce informazioni su come aggiornare la query DNS globale che non può essere risolta utilizzando i nomi DNS di zona. Queste sono query che bloccano la migrazione e che devi eseguire il debug e correggere.
"To use Zonal DNS, update the Global DNS query sent from the source VM VM_NAME.c.PROJECT_ID.internal to the following zonal FQDN: VM_NAME.ZONE.c.PROJECT_ID.internal"
Un conteggio delle query di blocco della migrazione inviate dalla VM di origine alla VM di destinazione per quel giorno.
Lo screenshot seguente mostra le informazioni del campo
jsonPayload
nella pagina della console di Esplora log.Utilizza le informazioni in
jsonPayload
ottenute nel passaggio precedente per determinare quale FQDN utilizzare per aggiornare manualmente le query DNS globali in modo da utilizzare il DNS di zona e preparare il progetto per la migrazione. I casi d'uso più comuni per sapere dove aggiornare il FQDN e risolvere la compatibilità sono i seguenti:- Nomi DNS interni del server dei metadati: non è richiesta alcuna azione perché il nome DNS restituito diventerà un FQDN zonale immediatamente dopo la migrazione al DNS zonale. Se il nome DNS è memorizzato nella cache, devi solo effettuare un'altra chiamata per aggiornare il valore della cache.
- Nomi DNS interni utilizzati per accedere alle VM in un'altra regione: se hai un'applicazione che utilizza i nomi DNS interni per le VM in regioni diverse, puoi modificare il criterio DHCP o il file di configurazione per includere la zona nell'altra regione.
- FQDN globale hardcoded: se hai un'applicazione che utilizza nomi FQDN globali hardcoded per le VM, puoi aggiornare la chiamata all'interno dell'applicazione in modo da utilizzare il nome DNS interno o il FQDN di zona. Puoi apportare questa modifica tramite una modifica del codice o della configurazione in Terraform.
- VM in progetti di servizio che utilizzano una rete VPC condivisa: per risolvere i nomi DNS delle VM in progetti di servizio che utilizzano una rete VPC condivisa, devi utilizzare i FQDN zonali delle VM.
Dopo aver aggiornato le query DNS globali per utilizzare il DNS di zona, svolgi quanto segue:
Utilizza la pagina Esplora log per eseguire di nuovo una query sull'utilizzo del DNS globale. Dopo aver corretto tutte le query DNS globali che bloccano, non dovrebbero essere visualizzati log di debug nei risultati delle query.
Ricontrolla la metrica di monitoraggio per verificare se tutte le query DNS incompatibili sono state rimosse.
- Crea dashboard: visualizza i pattern di query DNS globali incompatibili per ottenere informazioni sul comportamento di comunicazione della tua applicazione.
- Log aggregati: analizza i log DNS in tutta l'organizzazione per identificare tendenze più ampie e potenziali aree di miglioramento.
Comunicazione delle istanze a riga di comando
Attività: prova a eseguire un ping di un'istanza da un'altra utilizzando l'interfaccia a riga di comando gcloud.
gcloud compute ssh VM-A --command "ping VM-B"
Possibile errore: "Impossibile risolvere l'host". Ciò significa che
VM-A
non riesce a trovare l'indirizzo IP diVM-B
.Risoluzione: aggiorna il nome host che utilizzi per
VM-B
con il relativo nome di dominio completo (FQDN), che include il nome della zona:INSTANCE_NAME.ZONE.c.PROJECT_ID.internal
Comunicazione delle istanze all'interno dei servizi Compute Engine
Attività: se utilizzi i controlli di integrità per i gruppi di istanze gestite (MIG) che si basano su nomi DNS interni, controlla se i controlli di integrità passano.
Potenziale errore: "Controllo di integrità non riuscito". Questo indica che il controllo di integrità non può raggiungere il suo target a causa di problemi di risoluzione DNS.
Risoluzione: assicurati che il controllo dell'integrità userà il FQDN dell'istanza di destinazione, incluso il nome della zona.
Casi d'uso specifici per applicazione
Molte applicazioni si basano sul DNS interno per attività come le seguenti:
- Connessione ai database (ad esempio Cloud SQL)
Interazione con le code di messaggi (ad esempio Pub/Sub)
Possibili errori: variano a seconda dell'applicazione, ma potrebbero includere:
- "Impossibile connettersi a SERVICE_NAME"
- "Connessione scaduta"
- "Nessun host di questo tipo è noto"
Risoluzione: controlla la configurazione dell'applicazione per assicurarti che utilizzi il FQDN (incluso il nome della zona) quando fa riferimento ai servizi.
Aggiungi quanto segue ai metadati del progetto:
vmDnsSetting=GlobalDefault
.Per informazioni su come impostare i valori dei metadati del progetto, consulta Imposta e rimuovi i metadati personalizzati.
Verifica che nessuna delle istanze del progetto abbia il valore dei metadati
vmDnsSetting
impostato suZonalOnly
.gcloud compute instances describe INSTANCE_NAME --flatten="metadata[]"
Sostituisci INSTANCE_NAME con il nome dell'istanza da controllare.
Aggiorna il lease DHCP su ogni istanza. Puoi aggiornare il lease riavviando l'istanza, aspettando che scada o eseguendo uno dei seguenti comandi nel sistema operativo guest:
- Istanze Linux:
sudo dhclient -v -r
- Instanza Windows Server:
ipconfig /renew
- Istanze Linux:
Aggiorna i metadati dell'istanza in modo da includere
vmDnsSetting=GlobalDefault
.Per informazioni su come impostare i valori dei metadati delle istanze di calcolo, consulta Imposta e rimuovi i metadati personalizzati.
Per forzare la modifica della configurazione DNS, riavvia la rete dell'istanza utilizzando uno dei seguenti comandi:
Per Container-Optimized OS o Ubuntu:
sudo systemctl restart systemd-networkd
Per CentOS, RedHat EL, Fedora CoreOS o Rocky Linux:
sudo systemctl restart network
o
sudo systemctl restart NetworkManager.service
Per Debian:
sudo systemctl restart networking
Per i sistemi Linux con
nmcli
:sudo nmcli networking off sudo nmcli networking on
Per Windows:
ipconfig /renew
Imposta l'impostazione dei metadati del progetto
vmDnsSetting
suGlobalDefault
nei progetti proprietari dei container e delle VM.Riavvia i contenitori in modo che le impostazioni DNS tornino allo stato originale.
- Consulta la Google Cloud gerarchia delle risorse per informazioni sulla relazione tra organizzazioni, cartelle e progetti.
- Scopri di più sul DNS interno per Compute Engine.
REST
Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione Google Cloud sull'autenticazione.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire la migrazione dei progetti all'utilizzo del DNS zonale, chiedi all'amministratore di concederti i seguenti ruoli IAM:
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire la migrazione dei progetti all'utilizzo del DNS di zona. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per eseguire la migrazione dei progetti all'utilizzo del DNS di zona sono necessarie le seguenti autorizzazioni:
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Esegui la migrazione del progetto al DNS di zona
Per eseguire la migrazione di un progetto in modo che utilizzi il DNS di zona, completa le seguenti attività:
Verificare se il progetto utilizza il DNS globale per impostazione predefinita
Controlla i tuoi progetti per verificare se è necessario eseguire la migrazione dall'utilizzo del DNS globale al DNS di zona. Devi eseguire la migrazione solo dei progetti configurati per utilizzare il DNS globale come predefinito per tutti i nomi DNS interni creati all'interno del progetto.
Console
gcloud
Esegui il seguente comando gcloud CLI per controllare il valore di
vmDnsSetting
.gcloud compute project-info describe --project=PROJECT_ID --flatten="vmDnsSetting"
Sostituisci PROJECT_ID con il nome del progetto.
Il valore restituito indica se il progetto utilizza il DNS globale per impostazione predefinita.
REST
Controlla il valore di
vmDnsSetting
utilizzando il metodoprojects.get
. Questo esempio utilizza un parametro di queryfields
per includere solo i campi che vuoi visualizzare.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID?fields=id,name,vmDnsSetting
Sostituisci PROJECT_ID con l'ID progetto.
Il valore di
vmDnsSetting
indica se il progetto utilizza il DNS globale per impostazione predefinita.Utilizzare l'analisi delle query per determinare l'idoneità alla migrazione di un progetto
Per valutare se è possibile eseguire la migrazione di un progetto al DNS di zona senza modifiche al codice o senza alterare l'utilizzo del DNS globale, Google Cloud analizza la cronologia delle query DNS. Questa analisi fornisce le seguenti metriche che indicano la compatibilità del progetto con il DNS di zona:
Per visualizzare queste metriche, utilizza Metrics Explorer nella console Google Cloud.
Esegui la migrazione dei progetti compatibili con il DNS di zona
Utilizza una delle seguenti opzioni per eseguire la migrazione dei progetti pronti per il passaggio al DNS di zona:
Correggere le query incompatibili
Un progetto non è pronto per la migrazione se è stata eseguita almeno una query DNS incompatibile in un determinato periodo di tempo, ad esempio negli ultimi 30 giorni. Le query incompatibili potrebbero avere i seguenti attributi:
Se il tuo progetto contiene query incompatibili, nella pagina Istanze VM della console Google Cloud viene visualizzato il seguente banner:
Per correggere tutte le query incompatibili, ti consigliamo di utilizzare nella query il nome di dominio completo (FQDN) di zona dell'istanza di origine. Questo approccio garantisce che la risoluzione delle query rimanga invariata dopo la migrazione del progetto al DNS zonale.
Per risolvere le query incompatibili:
Visualizzare i log DNS globali in Esplora log
Esplora log mostra principalmente i log DNS globali per i progetti con query incompatibili con il DNS di zona. Questi log ti aiutano a identificare e analizzare le query problematiche prima della migrazione.
Puoi anche utilizzare Esplora log per queste query incompatibili per eseguire quanto segue:
Verificare se una modifica al DNS di zona influisce sul progetto
Dopo la migrazione al DNS zonale, è fondamentale verificare che le applicazioni e i servizi funzionino ancora correttamente. Poiché il DNS di zona modifica il modo in cui vengono risolti i nomi DNS interni, alcune applicazioni potrebbero riscontrare problemi se si basano su nomi DNS globali.
La sezione seguente descrive come verificare la presenza di potenziali impatti e come risolverli:
Ripristinare l'utilizzo del DNS globale
Puoi annullare la migrazione al DNS di zona ripristinando il tipo di DNS interno predefinito come DNS globale. Puoi farlo a livello di organizzazione, progetto, istanza o contenitore.
Ripristinare l'utilizzo del DNS globale per un progetto
Per ripristinare l'utilizzo del DNS globale per un progetto, completa i seguenti passaggi.
Ripristinare l'utilizzo del DNS globale per un'istanza
Per ripristinare l'utilizzo del DNS globale per un'istanza specifica, completa i seguenti passaggi.
Ripristinare l'utilizzo del DNS globale per un contenitore
Se esegui l'applicazione o il carico di lavoro in container, su Google Kubernetes Engine o nell'ambiente flessibile di App Engine, la configurazione DNS nelle impostazioni del container potrebbe non aggiornarsi automaticamente finché non riavvii i container. Per disattivare il DNS zonale su queste app contenitore, completa i seguenti passaggi.
Risolvere i problemi relativi alla procedura di migrazione dal DNS globale al DNS di zona
Se riscontri problemi con la procedura di migrazione, consulta la guida alla risoluzione dei problemi.
Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-02-20 UTC.
-