Este documento explica como migrar um projeto existente do DNS global para o DNS zonal. O DNS zonal aumenta a confiabilidade isolando interrupções dentro das zonas, evitando interrupções em serviços essenciais, como criação de instâncias e recuperação automática.
Antes de começar
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:
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.
- Migrar um projeto para usar DNS zonal: Editor de projeto (
roles/resourcemanager.projectEditor
) no projeto - Migrar VMs para DNS zonal em um projeto: Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) no projeto - Se sua VM usar uma conta de serviço: Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço ou projeto - Verifique nomes DNS globais e metadados de VM:
compute.projects.get
- Defina metadados em uma VM:
compute.instances.setMetadata
- Defina metadados para todo o projeto:
compute.projects.setCommonInstanceMetadata
- Se suas VMs usarem contas de serviço:
iam.serviceAccounts.actAs
- Verifique se o seu projeto usa DNS global por padrão
- Determine a preparação para migração dos seus projetos usando análise de consulta
- Migrar projetos compatíveis com DNS zonal
- Corrigir consultas incompatíveis
- Monitore os logs DNS globais para confirmar a prontidão da migração .
- Migrar os projetos restantes para DNS zonal
- Verifique se uma alteração no DNS zonal está afetando seu projeto
No console do Google Cloud, acesse a página Metadados do Compute Engine.
Na guia Metadados , visualize a configuração
vmdnssetting
, se existir. O valor atribuído indica se o projeto usa DNS global por padrão.-
GlobalDefault
: o projeto tem DNS global habilitado. -
ZonalOnly
: o projeto tem DNS zonal habilitado. Este projeto não precisa ser migrado.
Se a configuração de metadados
vmdnssetting
não estiver listada, verifique se sua organização usa DNS global por padrão .-
-
GLOBAL_DEFAULT
: o projeto tem DNS global habilitado. -
ZONAL_ONLY
: o projeto tem DNS zonal habilitado. Este projeto não precisa ser migrado. -
GLOBAL_DEFAULT
: o projeto tem DNS global habilitado. -
ZONAL_ONLY
: o projeto tem DNS zonal habilitado. Este projeto não precisa ser migrado. zonal_dns_ready
( consultas compatíveis ): esta métrica representa o número total de consultas em um período de 100 dias que podem ser resolvidas com êxito usando DNS zonal.zonal_dns_risky
( consultas incompatíveis ): esta métrica representa o número total de consultas que não podem ser resolvidas usando DNS zonal. Estas consultas normalmente envolvem comunicação entre regiões ou outros cenários onde a resolução zonal falha. Fundamentalmente, se esta métrica tiver um valor diferente de zero, o seu projeto ainda não está pronto para migração. Você precisará responder a essas consultas incompatíveis antes de mudar para o DNS zonal.No console do Google Cloud, acesse a página do explorador de métricas leaderboard :
Vá para o explorador de métricas
Se você usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitoramento .
No lado direito da barra de ferramentas que contém o campo Selecionar uma métrica , clique em Editor de código , MQL ou PromQL .
Se o campo de entrada da consulta não tiver o título Consulta MQL , no canto inferior direito do campo de entrada da consulta, para Idioma , selecione MQL .
No campo de entrada da consulta, insira o seguinte texto exatamente como aparece:
fetch compute.googleapis.com/Location | metric 'compute.googleapis.com/global_dns/request_count' | every 1d | within 7d
Clique no botão Executar consulta .
O console do Google Cloud exibe um gráfico das duas métricas (
zonal_dns_ready
ezonal_dns_risky
) e o número correspondente de consultas feitas durante o período para cada métrica.Verifique o valor da métrica
zonal_dns_risky
.- Se o valor for
0
, o projeto estará pronto para migração para DNS zonal. Você pode migrar o projeto, conforme descrito em Migrar projetos que estão prontos para DNS zonal . - Se o valor for um número diferente de zero, como
0.02k
, conforme mostrado na captura de tela anterior, algumas consultas poderão não funcionar após a migração para o DNS zonal. O projeto não está pronto para migração. Continue com as etapas em Corrigir consultas incompatíveis .
- Se o valor for
Clique no botão Usar DNS zonal no console do Google Cloud.
Ao visualizar a página de instâncias de VM do seu projeto, se ele estiver pronto para migração (se for compatível com consultas DNS zonais), o banner incluirá uma recomendação para Usar DNS zonal . Esta recomendação é baseada no uso de DNS interno no projeto, mas está limitada aos últimos 30 dias.
Se você clicar no botão Usar DNS zonal , os metadados do projeto serão atualizados para usar DNS zonal.
Opcional: visualize e consulte os metadados da VM para confirmar a alteração dos metadados.
Altere manualmente os metadados do projeto para usar DNS zonal.
Habilite o DNS zonal para suas instâncias definindo a entrada de metadados
vmDnsSetting
para o projeto. Depois de definir essa entrada de metadados, suas instâncias de computação poderão ser acessadas somente por seus nomes DNS zonais ( VM_NAME . ZONE .c. PROJECT_ID .internal) ao usar caminhos de pesquisa. As instâncias ainda mantêm os caminhos de pesquisa zonal e global, mas seus nomes DNS globais, que não incluem ZONE como parte do nome DNS interno, não funcionam mais. Somente instâncias na mesma região e no mesmo projeto podem acessar umas às outras usando o nome global quando essa configuração estiver em vigor.Console
Para atualizar a configuração no nível do projeto, no console do Google Cloud, acesse a página Metadados do Compute Engine.
Clique em
Editar .Se existir uma chave com o valor
VmDnsSetting
, altere seu valor paraZonalOnly
.Se uma chave com o valor
VmDnsSetting
não existir, clique em Adicionar item .- No campo Chave , insira
VmDnsSetting
. - No campo Valor , insira
ZonalOnly
.
- No campo Chave , insira
Para terminar de modificar suas entradas de metadados personalizados, clique em Salvar .
gcloud
Para atualizar a configuração de metadados do projeto atual, use o comando
project-info add-metadata
.gcloud compute project-info add-metadata \ --metadata vmDnsSetting=ZonalOnly
Opcional: Para verificar as configurações de metadados de um projeto, use o seguinte comando:
gcloud compute project-info describe --project=PROJECT_ID --flatten="vmDnsSetting"
Substitua PROJECT_ID pelo nome do projeto a ser consultado.
DESCANSAR
Para atualizar a configuração de metadados no nível do projeto, crie uma solicitação
POST
usando o método projects.setCommonInstanceMetadata .Opcional: para executar o bloqueio otimista, você pode fornecer opcionalmente uma impressão digital .
Uma impressão digital é uma sequência aleatória de caracteres gerada pelo Compute Engine. A impressão digital muda após cada solicitação e, se você fornecer uma impressão digital incompatível, sua solicitação será rejeitada.
Se você não fornecer uma impressão digital, nenhuma verificação de consistência será executada e a solicitação
projects.setCommonInstanceMetadata
será bem-sucedida. Se você usar o métodoinstances.setMetadata
, uma impressão digital será sempre necessária.Para obter a impressão digital atual de um projeto, chame o método
project.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
A saída é semelhante à seguinte:
{ "name": "myproject", "commonInstanceMetadata": { "kind": "compute#metadata", "fingerprint": "FikclA7UBC0=", ... } }
Construa uma solicitação
POST
para o métodoprojects.setCommonInstanceMetadata
para definir o par chave-valor de metadados:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "fingerprint": "FikclA7UBC0=", "items": [ { "key": "vmDnsSetting", "value": "ZonalOnly" } ] }
Substitua
PROJECT_ID
pelo ID do seu projeto.
Depois de configurar a entrada de metadados
vmDnsSetting
para seu projeto, atualize a concessão de DHCP em cada instância desse projeto. Você pode atualizar a concessão reiniciando a instância, aguardando a expiração da concessão ou executando um dos seguintes comandos:Instâncias Linux
sudo dhclient -v -r
Instâncias do Windows
ipconfig /renew
- Faça uma chamada para uma instância de computação em um projeto diferente
- Faça uma chamada para uma instância de computação em uma região diferente
Use o Logs Explorer para acessar e consultar o uso de DNS global para instâncias de computação do seu projeto.
Selecione o projeto.
Aplique os filtros de recursos e nomes de log:
- Clique em Recurso .
- Na caixa de diálogo Selecionar recurso , selecione Instância de VM e clique em Aplicar .
- Clique em Nome do log .
Na caixa de diálogo Selecionar nomes de log , selecione gdnsusage e clique em Aplicar .
Alternativamente, você pode inserir o seguinte no campo de consulta:
resource.type="gce_instance" log_name="projects/PROJECT_ID/logs/compute.googleapis.com%2Fgdnsusage"
No painel Resultados da consulta , cada consulta possui um campo
jsonPayload
. Cada campojsonPayload
contém as seguintes informações:- O nome da VM de origem, o ID do projeto e o nome da zona.
- O nome da VM de destino, o ID do projeto e o nome da zona.
Uma mensagem de depuração que fornece informações sobre como atualizar a consulta DNS global que não pode ser resolvida usando nomes DNS zonais. Estas são consideradas consultas de bloqueio de migração que você deve depurar e corrigir.
"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"
Uma contagem de consultas que mostra quantas consultas de bloqueio de migração a VM de origem envia para a VM de destino naquele dia.
A captura de tela a seguir mostra as informações do campo
jsonPayload
na página do console do Logs Explorer.Use as informações no
jsonPayload
obtidas na etapa anterior para determinar qual FQDN usar para atualizar manualmente suas consultas DNS globais para usar DNS zonal e preparar o projeto para migração. Os casos de uso mais comuns sobre onde atualizar o FQDN e resolver a compatibilidade são os seguintes:- Nomes DNS internos do servidor de metadados: nenhuma ação é necessária porque o nome DNS retornado mudará para um FQDN zonal imediatamente após a migração para DNS zonal. Se o nome DNS estiver armazenado em cache, basta fazer mais uma chamada para atualizar o valor do cache.
- Nomes DNS internos usados para acessar VMs em outra região: se você tiver um aplicativo que usa nomes DNS internos para VMs em regiões diferentes, poderá modificar a política DHCP ou o arquivo de configuração para incluir a zona na outra região.
- FQDN global codificado: se você tiver um aplicativo que usa nomes FQDN globais codificados para VMs, poderá atualizar a chamada dentro do aplicativo para usar o nome DNS interno ou o FQDN zonal. Você pode fazer essa alteração por meio de uma alteração de código ou de configuração no Terraform.
- VMs em projetos de serviço que usam uma rede VPC compartilhada: para resolver nomes DNS de VMs em projetos de serviço que usam uma rede VPC compartilhada, você deve usar os FQDNs zonais das VMs.
Depois de atualizar as consultas DNS globais para usar DNS zonal, faça o seguinte:
Use a página Logs Explorer para consultar novamente o uso do DNS global. Depois de corrigir todas as consultas de DNS globais bloqueadas, nenhum log de depuração deverá ser exibido nos resultados da consulta.
Verifique novamente a métrica de monitoramento para ver se todas as consultas DNS incompatíveis foram removidas.
- Crie painéis : visualize seus padrões de consulta DNS globais incompatíveis para obter insights sobre o comportamento de comunicação do seu aplicativo.
- Logs agregados : analise os logs de DNS em toda a sua organização para identificar tendências mais amplas e áreas potenciais de melhoria.
Comunicação de instância de linha de comando
Tarefa : tente executar ping em uma instância de outra usando a CLI gcloud.
gcloud compute ssh VM-A --command "ping VM-B"
Erro potencial : "Não foi possível resolver o host" — Isso significa que
VM-A
não consegue encontrar o endereço IP doVM-B
.Resolução : atualize o nome do host que você está usando para
VM-B
para seu nome de domínio totalmente qualificado (FQDN), que inclui o nome da zona:INSTANCE_NAME . ZONE .c. PROJECT_ID .internal
Comunicação de instâncias nos serviços do Compute Engine
Tarefa : se você estiver usando verificações de integridade para grupos de instâncias gerenciadas (MIGs) que dependem de nomes DNS internos, verifique se as verificações de integridade estão sendo aprovadas.
Erro potencial : "Falha na verificação de integridade" — Isso indica que a verificação de integridade não pode atingir seu objetivo devido a problemas de resolução de DNS.
Solução : certifique-se de que a verificação de integridade esteja usando o FQDN da instância de destino, incluindo o nome da zona.
Casos de uso específicos de aplicativos
Muitos aplicativos dependem de DNS interno para tarefas como as seguintes:
- Conectar-se a bancos de dados (por exemplo, Cloud SQL)
Interagir com filas de mensagens (por exemplo, Pub/Sub)
Erros potenciais : variam dependendo do aplicativo, mas podem incluir:
- "Não foi possível conectar-se ao SERVICE_NAME "
- "Conexão expirou"
- "Nenhum host é conhecido"
Resolução : verifique a configuração do seu aplicativo para ter certeza de que ele está usando o FQDN (incluindo o nome da zona) ao fazer referência a serviços.
Adicione o seguinte aos metadados do projeto:
vmDnsSetting=GlobalDefault
.Para obter informações sobre como definir valores de metadados do projeto, consulte Definir e remover metadados personalizados .
Verifique se nenhuma das instâncias do projeto tem o valor de metadados
vmDnsSetting
definido comoZonalOnly
.gcloud compute instances describe INSTANCE_NAME --flatten="metadata[]"
Substitua INSTANCE_NAME pelo nome da instância a ser verificada.
Atualize a concessão de DHCP em cada instância. Você pode atualizar a concessão reiniciando a instância, aguardando a expiração da concessão ou executando um dos seguintes comandos no sistema operacional convidado:
- Instâncias Linux:
sudo dhclient -v -r
- Instância do Windows Server:
ipconfig /renew
- Instâncias Linux:
Atualize os metadados da instância para incluir
vmDnsSetting=GlobalDefault
.Para obter informações sobre como definir valores de metadados de instância de computação, consulte Definir e remover metadados personalizados .
Para forçar a alteração da configuração do DNS, reinicie a rede da instância usando um dos seguintes comandos:
Para sistema operacional otimizado para contêiner ou Ubuntu:
sudo systemctl restart systemd-networkd
Para CentOS, RedHat EL, Fedora CoreOS ou Rocky Linux:
sudo systemctl restart network
ou
sudo systemctl restart NetworkManager.service
Para Debian:
sudo systemctl restart networking
Para sistemas Linux com
nmcli
:sudo nmcli networking off sudo nmcli networking on
Para Windows:
ipconfig /renew
Defina a configuração de metadados do projeto
vmDnsSetting
comoGlobalDefault
nos projetos que possuem os contêineres e as VMs.Reinicie os contêineres para que suas configurações de DNS voltem ao estado original.
- Revise o Google Cloud hierarquia de recursos para obter informações sobre o relacionamento entre organizações, pastas e projetos.
- Saiba mais sobre o DNS interno do Compute Engine .
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para 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.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções obrigatórias
Para obter as permissões necessárias para migrar projetos para usar DNS zonal, peça ao administrador que conceda a você as seguintes funções do IAM:
Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .
Essas funções predefinidas contêm as permissões necessárias para migrar projetos para usar o DNS zonal. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :
Permissões necessárias
As seguintes permissões são necessárias para migrar projetos para usar DNS zonal:
Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .
Migre seu projeto para DNS zonal
Para migrar um projeto para usar DNS zonal, conclua as seguintes tarefas:
Verifique se o seu projeto usa DNS global por padrão
Verifique seus projetos para ver se eles precisam migrar do DNS global para o DNS zonal. Você só precisa migrar projetos configurados para usar DNS global como padrão para quaisquer nomes DNS internos criados no projeto.
Console
gcloud
Execute o seguinte comando da CLI gcloud para verificar o valor de
vmDnsSetting
.gcloud compute project-info describe --project=PROJECT_ID --flatten="vmDnsSetting"
Substitua PROJECT_ID pelo nome do projeto.
O valor retornado indica se o projeto usa DNS global por padrão.
DESCANSAR
Verifique o valor de
vmDnsSetting
usando o métodoprojects.get
. Este exemplo usa um parâmetro de consultafields
para incluir apenas os campos que você deseja visualizar.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID?fields=id,name,vmDnsSetting
Substitua PROJECT_ID pelo ID do projeto.
O valor de
vmDnsSetting
indica se o projeto usa DNS global por padrão.Use a análise de consulta para determinar a preparação para migração de um projeto
Para avaliar se um projeto pode ser migrado para DNS zonal sem alterações de código ou alteração da forma como o DNS global é usado, Google Cloud analisa seu histórico de consultas DNS. Esta análise fornece as seguintes métricas que indicam a compatibilidade do projeto com o DNS zonal:
Para visualizar essas métricas, use o Metrics Explorer no console do Google Cloud.
Migrar projetos compatíveis com DNS zonal
Use qualquer uma das opções a seguir para migrar projetos que estão prontos para mudar para DNS zonal:
Corrigir consultas incompatíveis
Um projeto que não está pronto para migrar significa que pelo menos uma consulta DNS incompatível foi feita dentro de um determinado período de tempo, como nos últimos 30 dias. Consultas incompatíveis podem ter os seguintes atributos:
Se seu projeto tiver consultas incompatíveis, o seguinte banner aparecerá na página de instâncias de VM do console do Google Cloud:
Para corrigir todas as consultas incompatíveis, recomendamos que você use o nome de domínio totalmente qualificado (FQDN) zonal da instância de origem na consulta. Essa abordagem garante que a resolução da consulta permaneça ininterrupta após a migração do projeto para o DNS zonal.
Para resolver consultas incompatíveis, faça o seguinte:
Ver registros DNS globais no Logs Explorer
O Logs Explorer mostra principalmente logs DNS globais para projetos com consultas incompatíveis com DNS zonal. Esses logs ajudam você a identificar e analisar essas consultas problemáticas antes da migração.
Você também pode utilizar o Logs Explorer para essas consultas incompatíveis para fazer o seguinte:
Verifique se uma alteração no DNS zonal está afetando seu projeto
Depois de migrar para o DNS zonal, é crucial verificar se os seus aplicativos e serviços ainda estão funcionando corretamente. Como o DNS zonal altera a forma como os nomes DNS internos são resolvidos, alguns aplicativos poderão enfrentar problemas se dependerem de nomes DNS globais.
A seção a seguir descreve como verificar possíveis impactos e como resolvê-los:
Voltar a usar DNS global
Você pode desfazer a migração para DNS zonal alterando o tipo de DNS interno padrão de volta para DNS global. Você pode fazer isso no nível da organização, do projeto, da instância ou do contêiner.
Voltar a usar DNS global para um projeto
Para reverter um projeto para usar DNS global, conclua as etapas a seguir.
Voltar a usar DNS global para uma instância
Para reverter uma instância específica para usar DNS global, conclua as etapas a seguir.
Voltar a usar DNS global para um contêiner
Se você executar seu aplicativo ou carga de trabalho em contêineres, no Google Kubernetes Engine ou no ambiente flexível do App Engine, a configuração de DNS nas configurações do contêiner poderá não ser atualizada automaticamente até que você reinicie os contêineres. Para desabilitar o DNS zonal nesses aplicativos de contêiner, conclua as etapas a seguir.
Solucionar problemas do processo de migração de DNS global para DNS zonal
Se você tiver problemas com o processo de migração, consulte o guia de solução de problemas .
O que vem a seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-04-21 UTC.
-