Questo documento spiega come eseguire la migrazione di un progetto esistente dal DNS globale al DNS di zona. Il DNS di zona migliora l'affidabilità isolando le interruzioni all'interno delle zone, evitando interruzioni dei servizi essenziali come la creazione delle istanze e consentendo 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 di 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
Eseguire la migrazione di un progetto in modo da abilitare l'utilizzo del DNS di zona:
Project Editor (
roles/resourcemanager.projectEditor
) nel progetto -
Eseguire la migrazione delle VM al DNS di zona all'interno di un progetto:
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) nel progetto -
Se la VM utilizza un service account:
Utente service account (
roles/iam.serviceAccountUser
) nel service account o nel progetto -
Controllare i nomi DNS globali e i metadati della VM:
compute.projects.get
-
Impostare i metadati su una VM:
compute.instances.setMetadata
-
Impostare i metadati a livello di progetto:
compute.projects.setCommonInstanceMetadata
-
Se le VM utilizzano i service account:
iam.serviceAccounts.actAs
- Verifica se il tuo progetto utilizza il DNS globale per impostazione predefinita
- Determina l'idoneità alla migrazione dei tuoi progetti utilizzando l'analisi delle query
- Esegui la migrazione dei progetti compatibili con il DNS di zona
- Correggi le query incompatibili
- Monitora i log del DNS globale per verificare l'idoneità alla migrazione.
- Esegui la migrazione dei progetti rimanenti al DNS di zona
- Verifica se una modifica al DNS di zona interessa il tuo 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
: per il progetto è abilitato il DNS globale.ZonalOnly
: per il progetto è abilitato il DNS di zona. Non è necessaria la migrazione di questo progetto.
Se l'impostazione dei metadati
vmdnssetting
non è elencata, verifica se la tua organizzazione utilizza il DNS globale per impostazione predefinita.GLOBAL_DEFAULT
: per il progetto è abilitato il DNS globale.ZONAL_ONLY
: per il progetto è abilitato il DNS di zona. Non è necessaria la migrazione di questo progetto.GLOBAL_DEFAULT
: per il progetto è abilitato il DNS globale.ZONAL_ONLY
: per il progetto è abilitato il DNS di zona. Non è necessaria la migrazione di questo progetto.zonal_dns_ready
(Query compatibili): questa metrica rappresenta il numero totale di query in un periodo di 100 giorni che possono essere risolte correttamente utilizzando il DNS di zona.zonal_dns_risky
(Query incompatibili): questa metrica rappresenta il numero totale di query che non possono essere risolte utilizzando il DNS di zona. Queste query in genere prevedono la comunicazione tra regioni o altri scenari in cui la risoluzione zonale ha esito negativo. Fondamentalmente, se questa metrica ha un valore diverso da zero, il progetto non è ancora pronto per la migrazione. Devi occuparti di 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 riporta la scritta Query MQL, nell'angolo in basso a destra del campo di immissione della query, seleziona MQL in 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 ciascuna metrica.Verifica 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 Esegui la migrazione dei progetti compatibili con il 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 di zona. Il progetto non è pronto per la migrazione. Procedi con i passaggi descritti in Correggi le query incompatibili.
- Se il valore è
Fai clic sul pulsante Usa DNS di zona 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 suggerimento per utilizzare il DNS di zona. Questo suggerimento si basa sull'utilizzo del DNS interno nel progetto, ma è limitato agli ultimi 30 giorni.
Se fai clic sul pulsante Usa DNS di zona, i metadati del progetto vengono aggiornati in modo da abilitare l'utilizzo del DNS di zona.
(Facoltativo) Visualizza ed esegui query sui metadati della VM per confermare la modifica dei metadati.
Modifica manualmente i metadati del progetto in modo da abilitare l'utilizzo del 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 computing 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 ottengono accesso reciproco utilizzando il nome globale.Console
Per aggiornare l'impostazione a livello di progetto, nella consoleGoogle 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 Chiave, inserisci
VmDnsSetting
. - Nel campo Valore, inserisci
ZonalOnly
.
- Nel campo 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, utilizza 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 una fingerprint.
Una fingerprint è una stringa casuale di caratteri generata da Compute Engine. La fingerprint cambia dopo ogni richiesta e, se fornisci una fingerprint non corrispondente, la richiesta viene rifiutata.
Se non fornisci una fingerprint, non viene eseguito alcun controllo di coerenza e la richiesta
projects.setCommonInstanceMetadata
va a buon fine. Se utilizzi il metodoinstances.setMetadata
, è sempre obbligatoria una fingerprint.Per ottenere la fingerprint corrente di un progetto, richiama 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 il tuo ID progetto.
Dopo aver configurato la voce di metadati
vmDnsSetting
per il tuo progetto, aggiorna il lease DHCP su ogni istanza del progetto. Puoi aggiornare il lease riavviando l'istanza, attendendo che il lease scada o eseguendo uno dei seguenti comandi:Istanze Linux
sudo dhclient -v -r
Istanze Windows
ipconfig /renew
- Chiamata a un'istanza di computing in un altro progetto
- Chiamata a un'istanza di computing in un'altra regione
Utilizza Esplora log per accedere ed eseguire query sull'utilizzo del DNS globale per le istanze di computing 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 della query:
resource.type="gce_instance" log_name="projects/PROJECT_ID/logs/compute.googleapis.com%2Fgdnsusage"
Nel riquadro Risultati delle query, ogni query ha un campo
jsonPayload
. Ogni campojsonPayload
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 considerate query che bloccano la migrazione e di cui deve essere eseguito il debug per la correzione.
"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 che mostra il numero di 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 abilitare l'utilizzo del 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 di zona immediatamente dopo la migrazione al DNS di zona. 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 la policy DHCP o il file di configurazione in modo da 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 abilitare l'utilizzo del 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 di zona delle VM.
Dopo aver aggiornato le query DNS globali in modo da abilitare l'utilizzo del DNS di zona, segui questi passaggi:
Utilizza la pagina Esplora log per eseguire di nuovo una query sull'utilizzo del DNS globale. Dopo aver corretto tutte le query DNS globali di blocco, 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.
- Creare dashboard: visualizza i pattern di query DNS globali incompatibili per ottenere informazioni sul comportamento di comunicazione della tua applicazione.
- Aggregare log: analizza i log DNS in tutta l'organizzazione per identificare tendenze più ampie e potenziali aree di miglioramento.
Comunicazione delle istanze tramite riga di comando
Attività: prova a inviare un ping di un'istanza da un'altra istanza utilizzando gcloud CLI.
gcloud compute ssh VM-A --command "ping VM-B"
Possibile errore: "Could not resolve 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 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 di Compute Engine
Attività: se utilizzi i controlli di integrità per i gruppi di istanze gestite (MIG) che si basano su nomi DNS interni, verifica se i controlli di integrità hanno esito positivo.
Potenziale errore: "Health check failed". 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à usi il FQDN dell'istanza di destinazione, incluso il nome della zona.
Casi d'uso specifici per l'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"
- "Sessione di connessione scaduta"
- "Non è noto un host di questo tipo"
Risoluzione: verifica la configurazione dell'applicazione per assicurarti che utilizzi il FQDN (incluso il nome della zona) quando si 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 verificare.
Aggiorna il lease DHCP su ciascuna istanza. Puoi aggiornare il lease riavviando l'istanza, aspettando che il lease scada o eseguendo uno dei seguenti comandi nel sistema operativo guest:
- Istanze Linux:
sudo dhclient -v -r
- Istanza 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 computing, 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 container in modo che le impostazioni DNS tornino allo stato originale.
- Consulta la gerarchia delle risorseGoogle Cloud per informazioni sulla relazione tra organizzazioni, cartelle e progetti.
- Scopri di più sul DNS interno per Compute Engine.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire la migrazione dei progetti in modo da abilitare l'utilizzo del DNS di zona, chiedi all'amministratore di concederti i seguenti ruoli IAM:
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni obbligatorie per eseguire la migrazione dei progetti in modo da abilitare l'utilizzo del DNS di zona. Per visualizzare le autorizzazioni obbligatorie corrette, espandi l'omonima sezione:
Autorizzazioni obbligatorie
Per eseguire la migrazione dei progetti in modo da abilitare l'utilizzo del DNS di zona, sono necessarie le seguenti autorizzazioni:
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Eseguire la migrazione del progetto al DNS di zona
Per eseguire la migrazione di un progetto in modo da abilitare l'utilizzo del DNS di zona, completa le seguenti attività:
Verifica se il tuo progetto utilizza il DNS globale per impostazione predefinita
Esamina i tuoi progetti per verificare se è necessario eseguire la migrazione dall'utilizzo del DNS globale al DNS di zona. Devi eseguire la migrazione solo per i progetti per i quali è configurato l'utilizzo del DNS globale come predefinito per tutti i nomi DNS interni creati all'interno del progetto.
Console
gcloud
Esegui il seguente comando gcloud CLI per verificare 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
Verifica il valore di
vmDnsSetting
utilizzando il metodoprojects.get
. Questo esempio utilizza un parametro di queryfields
per includere solo i campi che desideri 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.Utilizza 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 Esplora metriche 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:
Correggi le query incompatibili
Se un progetto non è pronto per la migrazione, significa che è stata eseguita almeno una query DNS incompatibile in un determinato periodo di tempo, ad esempio negli ultimi 30 giorni. Le query incompatibili potrebbero avere gli attributi seguenti:
Se il tuo progetto contiene query incompatibili, nella pagina Istanze VM della Google Cloud console, 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 di zona.
Per risolvere le query incompatibili, segui questi passaggi:
Visualizza i log DNS globali in Esplora log
Esplora log mostra principalmente i log DNS globali per i progetti con query incompatibili con il DNS a livello 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 fare quanto segue:
Verifica se una modifica al DNS di zona interessa il tuo progetto
Una volta effettuata la migrazione al DNS di zona, è fondamentale verificare che le applicazioni e i servizi funzionino ancora correttamente. Poiché il DNS di zona modifica la modalità di risoluzione dei nomi DNS interni, alcune applicazioni potrebbero riscontrare problemi se si basano su nomi di DNS globale.
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 DNS interno predefinito come DNS globale. Puoi farlo a livello di organizzazione, progetto, istanza o container.
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 container
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 di zona su queste app container, 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-07-15 UTC.
-