Este documento explica cómo migrar un proyecto existente de DNS global a DNS zonal. El DNS zonal mejora la confiabilidad al aislar las interrupciones dentro de las zonas, evitando interrupciones en servicios esenciales como la creación de instancias y la reparación automática.
Antes de comenzar
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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 un proyecto para usar DNS zonal: Editor de proyectos (
roles/resourcemanager.projectEditor
) en el proyecto - Migre máquinas virtuales a DNS zonal dentro de un proyecto: Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) en el proyecto - Si su VM usa una cuenta de servicio: Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio o proyecto - Verifique los nombres de DNS globales y los metadatos de VM:
compute.projects.get
- Establecer metadatos en una máquina virtual:
compute.instances.setMetadata
- Establecer metadatos para todo el proyecto:
compute.projects.setCommonInstanceMetadata
- Si sus máquinas virtuales usan cuentas de servicio:
iam.serviceAccounts.actAs
- Compruebe si su proyecto utiliza DNS global de forma predeterminada
- Determine la preparación para la migración de sus proyectos mediante el análisis de consultas
- Migrar proyectos que sean compatibles con DNS zonal
- Corregir consultas incompatibles
- Supervise los registros DNS globales para confirmar la preparación para la migración .
- Migrar los proyectos restantes al DNS zonal
- Compruebe si un cambio en el DNS zonal está afectando su proyecto
En la consola de Google Cloud, vaya a la página Metadatos de Compute Engine.
En la pestaña Metadatos , vea la configuración
vmdnssetting
, si existe. El valor asignado indica si el proyecto utiliza DNS global de forma predeterminada.-
GlobalDefault
: el proyecto tiene habilitado el DNS global. -
ZonalOnly
: el proyecto tiene habilitado el DNS zonal. No es necesario migrar este proyecto.
Si la configuración de metadatos
vmdnssetting
no aparece en la lista, verifique si su organización usa DNS global de forma predeterminada .-
-
GLOBAL_DEFAULT
: el proyecto tiene DNS global habilitado. -
ZONAL_ONLY
: el proyecto tiene habilitado el DNS zonal. No es necesario migrar este proyecto. -
GLOBAL_DEFAULT
: el proyecto tiene DNS global habilitado. -
ZONAL_ONLY
: el proyecto tiene habilitado el DNS zonal. No es necesario migrar este proyecto. zonal_dns_ready
( consultas compatibles ): esta métrica representa el número total de consultas dentro de un período de 100 días que se pueden resolver correctamente mediante DNS zonal.zonal_dns_risky
( consultas incompatibles ): esta métrica representa el número total de consultas que no se pueden resolver mediante DNS zonal. Estas consultas suelen implicar comunicación entre regiones u otros escenarios en los que falla la resolución zonal. Fundamentalmente, si esta métrica tiene un valor distinto de cero, su proyecto aún no está listo para la migración. Deberá abordar estas consultas incompatibles antes de cambiar al DNS zonal.En la consola de Google Cloud, vaya a la página del explorador de métricas leaderboard :
Si utiliza la barra de búsqueda para encontrar esta página, seleccione el resultado cuyo subtítulo es Monitoreo .
En el lado derecho de la barra de herramientas que contiene el campo Seleccionar una métrica , haga clic en Editor de código , MQL o PromQL .
Si el campo de entrada de la consulta no se titula Consulta MQL , en la esquina inferior derecha del campo de entrada de la consulta, para Idioma , seleccione MQL .
En el campo de entrada de la consulta, ingrese el siguiente texto exactamente como aparece:
fetch compute.googleapis.com/Location | metric 'compute.googleapis.com/global_dns/request_count' | every 1d | within 7d
Haga clic en el botón Ejecutar consulta .
La consola de Google Cloud muestra un gráfico de las dos métricas (
zonal_dns_ready
yzonal_dns_risky
) y la cantidad correspondiente de consultas realizadas durante el período de tiempo para cada métrica.Verifique el valor de la métrica
zonal_dns_risky
.- Si el valor es
0
, entonces el proyecto está listo para la migración al DNS zonal. Puede migrar el proyecto, como se describe en Migrar proyectos que están listos para DNS zonal . - Si el valor es un número distinto de cero, como
0.02k
como se muestra en la captura de pantalla anterior, es posible que algunas consultas no funcionen después de migrar al DNS zonal. El proyecto no está listo para la migración. Continúe con los pasos en Solucionar consultas incompatibles .
- Si el valor es
Haga clic en el botón Usar DNS zonal en la consola de Google Cloud.
Cuando ve la página de instancias de VM de su proyecto, si su proyecto está listo para la migración (es compatible con consultas DNS zonales), el banner incluye una recomendación para Usar DNS zonal . Esta recomendación se basa en el uso de DNS interno en el proyecto, pero está limitada a los últimos 30 días.
Si hace clic en el botón Usar DNS zonal , los metadatos del proyecto se actualizan para usar DNS zonal.
Opcional: vea y consulte los metadatos de la máquina virtual para confirmar el cambio de metadatos.
Cambie manualmente los metadatos del proyecto para usar DNS zonal.
Habilite el DNS zonal para sus instancias configurando la entrada de metadatos
vmDnsSetting
para el proyecto. Después de configurar esta entrada de metadatos, solo se puede acceder a sus instancias informáticas mediante sus nombres DNS zonales ( VM_NAME . ZONE .c. PROJECT_ID .internal) cuando se utilizan rutas de búsqueda. Las instancias aún conservan las rutas de búsqueda zonal y global, pero sus nombres DNS globales, que no incluyen ZONE como parte del nombre DNS interno, ya no funcionan. Solo las instancias de la misma región y del mismo proyecto pueden acceder entre sí utilizando el nombre global cuando esta configuración está implementada.Consola
Para actualizar la configuración a nivel de proyecto, en la consola de Google Cloud, vaya a la página Metadatos de Compute Engine.
Haga clic en
Editar .Si existe una clave con el valor
VmDnsSetting
, cambie su valor aZonalOnly
.Si no existe una clave con el valor
VmDnsSetting
, haga clic en Agregar elemento .- En el campo Clave , ingrese
VmDnsSetting
. - En el campo Valor , ingrese
ZonalOnly
.
- En el campo Clave , ingrese
Para terminar de modificar sus entradas de metadatos personalizados, haga clic en Guardar .
nube de gcloud
Para actualizar la configuración de metadatos para el proyecto actual, use el comando
project-info add-metadata
.gcloud compute project-info add-metadata \ --metadata vmDnsSetting=ZonalOnly
Opcional: para verificar la configuración de metadatos de un proyecto, utilice el siguiente comando:
gcloud compute project-info describe --project=PROJECT_ID --flatten="vmDnsSetting"
Reemplace PROJECT_ID con el nombre del proyecto a consultar.
DESCANSAR
Para actualizar la configuración de metadatos a nivel de proyecto, cree una solicitud
POST
utilizando el método proyectos.setCommonInstanceMetadata .Opcional: Para realizar un bloqueo optimista, opcionalmente puedes proporcionar una huella digital .
Una huella digital es una cadena aleatoria de caracteres generada por Compute Engine. La huella digital cambia después de cada solicitud y, si proporciona una huella digital que no coincide, su solicitud se rechaza.
Si no proporciona una huella digital, no se realiza ninguna verificación de coherencia y la solicitud
projects.setCommonInstanceMetadata
se realiza correctamente. Si utiliza el métodoinstances.setMetadata
, siempre se requiere una huella digital.Para obtener la huella digital actual de un proyecto, llame al método
project.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
El resultado es similar al siguiente:
{ "name": "myproject", "commonInstanceMetadata": { "kind": "compute#metadata", "fingerprint": "FikclA7UBC0=", ... } }
Cree una solicitud
POST
al métodoprojects.setCommonInstanceMetadata
para establecer el par clave-valor de metadatos:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "fingerprint": "FikclA7UBC0=", "items": [ { "key": "vmDnsSetting", "value": "ZonalOnly" } ] }
Reemplace
PROJECT_ID
con el ID de su proyecto.
Después de configurar la entrada de metadatos
vmDnsSetting
para su proyecto, actualice la concesión de DHCP en cada instancia de ese proyecto. Puede actualizar la concesión reiniciando la instancia, esperando a que caduque la concesión o ejecutando uno de los siguientes comandos:Instancias de Linux
sudo dhclient -v -r
Instancias de Windows
ipconfig /renew
- Realizar una llamada a una instancia informática en un proyecto diferente
- Realizar una llamada a una instancia informática en una región diferente
Utilice el Explorador de registros para acceder y consultar el uso global de DNS para las instancias informáticas de su proyecto.
Seleccione el proyecto.
Aplique los filtros de recursos y nombres de registros:
- Haga clic en Recurso .
- En el cuadro de diálogo Seleccionar recurso , seleccione Instancia de VM y luego haga clic en Aplicar .
- Haga clic en Nombre del registro .
En el cuadro de diálogo Seleccionar nombres de registros , seleccione gdnsusage y luego haga clic en Aplicar .
Alternativamente, puede ingresar lo siguiente en el campo de consulta:
resource.type="gce_instance" log_name="projects/PROJECT_ID/logs/compute.googleapis.com%2Fgdnsusage"
En el panel de resultados de la consulta , cada consulta tiene un campo
jsonPayload
. Cada campojsonPayload
contiene la siguiente información:- El nombre de la máquina virtual de origen, su ID de proyecto y el nombre de la zona.
- El nombre de la máquina virtual de destino, su ID de proyecto y el nombre de la zona.
Un mensaje de depuración que proporciona información sobre cómo actualizar la consulta DNS global que no se puede resolver mediante nombres DNS zonales. Estas se consideran consultas de bloqueo de migración que debe depurar y corregir.
"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 recuento de consultas que muestra cuántas consultas de bloqueo de migración envía la máquina virtual de origen a la máquina virtual de destino para ese día.
La siguiente captura de pantalla muestra la información del campo
jsonPayload
en la página de la consola de Logs Explorer.Utilice la información en
jsonPayload
que obtuvo en el paso anterior para determinar qué FQDN usar para actualizar manualmente sus consultas de DNS globales para usar DNS zonal y preparar el proyecto para la migración. Los casos de uso más comunes sobre dónde actualizar el FQDN y resolver la compatibilidad son los siguientes:- Nombres DNS internos del servidor de metadatos: no se requiere ninguna acción porque el nombre DNS devuelto cambiará a un FQDN zonal inmediatamente después de la migración a DNS zonal. Si el nombre DNS está almacenado en caché, solo necesita realizar una llamada más para actualizar el valor de la caché.
- Nombres DNS internos utilizados para acceder a máquinas virtuales en otra región: si tiene una aplicación que usa los nombres DNS internos para máquinas virtuales en diferentes regiones, puede modificar la política DHCP o el archivo de configuración para incluir la zona en la otra región.
- FQDN global codificado: si tiene una aplicación que utiliza nombres FQDN globales codificados para máquinas virtuales, puede actualizar la llamada dentro de la aplicación para usar el nombre DNS interno o el FQDN zonal. Puede realizar este cambio mediante un cambio de código o cambio de configuración en Terraform.
- Máquinas virtuales en proyectos de servicio que usan una red de VPC compartida: para resolver nombres DNS de máquinas virtuales en proyectos de servicio que usan una red de VPC compartida, debe usar los FQDN zonales de las máquinas virtuales.
Después de haber actualizado las consultas DNS globales para usar DNS zonal, haga lo siguiente:
Utilice la página Explorador de registros para consultar nuevamente el uso de DNS global. Después de corregir todas las consultas de DNS globales que bloquean, no deberían aparecer registros de depuración en los resultados de la consulta.
Vuelva a verificar la métrica de monitoreo para ver si se han eliminado todas las consultas de DNS incompatibles.
- Cree paneles : visualice sus patrones de consulta DNS globales incompatibles para obtener información sobre el comportamiento de comunicación de su aplicación.
- Registros agregados : analice los registros de DNS en toda su organización para identificar tendencias más amplias y áreas potenciales de mejora.
Comunicación de instancia de línea de comandos
Tarea : intenta hacer ping a una instancia desde otra mediante la CLI de gcloud.
gcloud compute ssh VM-A --command "ping VM-B"
Posible error : "No se pudo resolver el host": esto significa que
VM-A
no puede encontrar la dirección IP paraVM-B
.Resolución : actualice el nombre de host que está utilizando para
VM-B
a su nombre de dominio completo (FQDN), que incluye el nombre de zona:INSTANCE_NAME . ZONE .c. PROJECT_ID .internal
Comunicación de instancia dentro de los servicios de Compute Engine
Tarea : si utiliza comprobaciones de estado para grupos de instancias administrados (MIG) que dependen de nombres DNS internos, verifique si las comprobaciones de estado pasan.
Posible error : "Error en la comprobación de estado": esto indica que la comprobación de estado no puede alcanzar su objetivo debido a problemas de resolución de DNS.
Resolución : asegúrese de que la verificación de estado utilice el FQDN de la instancia de destino, incluido el nombre de la zona.
Casos de uso específicos de la aplicación
Muchas aplicaciones dependen del DNS interno para tareas como las siguientes:
- Conexión a bases de datos (por ejemplo, Cloud SQL)
Interactuar con colas de mensajes (por ejemplo, Pub/Sub)
Posibles errores : varían según la aplicación, pero pueden incluir:
- "No se puede conectar con SERVICE_NAME "
- "Se agotó el tiempo de conexión"
- "No se conoce tal anfitrión"
Resolución : verifique la configuración de su aplicación para asegurarse de que esté usando el FQDN (incluido el nombre de la zona) al hacer referencia a los servicios.
Agregue lo siguiente a los metadatos del proyecto:
vmDnsSetting=GlobalDefault
.Para obtener información sobre cómo configurar valores de metadatos del proyecto, consulte Establecer y eliminar metadatos personalizados .
Verifique que ninguna de las instancias del proyecto tenga el valor de metadatos
vmDnsSetting
establecido enZonalOnly
.gcloud compute instances describe INSTANCE_NAME --flatten="metadata[]"
Reemplace INSTANCE_NAME con el nombre de la instancia a verificar.
Actualice la concesión de DHCP en cada instancia. Puede actualizar la concesión reiniciando la instancia, esperando a que caduque la concesión o ejecutando uno de los siguientes comandos en el sistema operativo invitado:
- Instancias de Linux:
sudo dhclient -v -r
- Instancia de Windows Server:
ipconfig /renew
- Instancias de Linux:
Actualice los metadatos de la instancia para incluir
vmDnsSetting=GlobalDefault
.Para obtener información sobre cómo configurar valores de metadatos de instancia informática, consulte Establecer y eliminar metadatos personalizados .
Para forzar el cambio de configuración de DNS, reinicie la red de la instancia usando uno de los siguientes comandos:
Para sistemas operativos optimizados para contenedores o Ubuntu:
sudo systemctl restart systemd-networkd
Para CentOS, RedHat EL, Fedora CoreOS o Rocky Linux:
sudo systemctl restart network
o
sudo systemctl restart NetworkManager.service
Para Debian:
sudo systemctl restart networking
Para sistemas Linux con
nmcli
:sudo nmcli networking off sudo nmcli networking on
Para ventanas:
ipconfig /renew
Establezca la configuración de metadatos del proyecto
vmDnsSetting
enGlobalDefault
en los proyectos que poseen los contenedores y las máquinas virtuales.Reinicie los contenedores para que su configuración de DNS vuelva al estado original.
- Revisa el Google Cloud Jerarquía de recursos para obtener información sobre la relación entre organizaciones, carpetas y proyectos.
- Obtén más información sobre DNS interno para Compute Engine .
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de 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.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Roles requeridos
Para obtener los permisos que necesita para migrar proyectos para usar DNS zonal, solicite a su administrador que le otorgue las siguientes funciones de IAM:
Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .
Estos roles predefinidos contienen los permisos necesarios para migrar proyectos para usar DNS zonal. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :
Permisos requeridos
Se requieren los siguientes permisos para migrar proyectos para usar DNS zonal:
Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .
Migra tu proyecto a DNS zonal
Para migrar un proyecto para usar DNS zonal, complete las siguientes tareas:
Compruebe si su proyecto utiliza DNS global de forma predeterminada
Verifique sus proyectos para ver si necesitan migrar del uso de DNS global a DNS zonal. Solo necesita migrar proyectos que estén configurados para usar DNS global como predeterminado para cualquier nombre DNS interno creado dentro del proyecto.
Consola
nube de gcloud
Ejecute el siguiente comando CLI de gcloud para verificar el valor de
vmDnsSetting
.gcloud compute project-info describe --project=PROJECT_ID --flatten="vmDnsSetting"
Reemplace PROJECT_ID con el nombre del proyecto.
El valor devuelto indica si el proyecto utiliza DNS global de forma predeterminada.
DESCANSAR
Verifique el valor de
vmDnsSetting
utilizando el métodoprojects.get
. Este ejemplo utiliza un parámetro de consultafields
para incluir solo los campos que desea ver.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID?fields=id,name,vmDnsSetting
Reemplace PROJECT_ID con el ID del proyecto.
El valor de
vmDnsSetting
indica si el proyecto utiliza DNS global de forma predeterminada.Utilice el análisis de consultas para determinar la preparación para la migración de un proyecto.
Para evaluar si un proyecto se puede migrar a DNS zonal sin cambios de código ni alterar la forma en que se usa el DNS global, Google Cloud analiza su historial de consultas DNS. Este análisis proporciona las siguientes métricas que indican la compatibilidad del proyecto con el DNS zonal:
Para ver estas métricas, utilice el Explorador de métricas en la consola de Google Cloud.
Migrar proyectos que sean compatibles con DNS zonal
Utilice cualquiera de las siguientes opciones para migrar proyectos que estén listos para cambiar a DNS zonal:
Corregir consultas incompatibles
Un proyecto que no está listo para migrar significa que se realizó al menos una consulta de DNS incompatible dentro de un período de tiempo determinado, como los últimos 30 días. Las consultas incompatibles pueden tener los siguientes atributos:
Si su proyecto tiene consultas incompatibles, aparece el siguiente banner en la página de instancias de VM de la consola de Google Cloud:
Para corregir todas las consultas incompatibles, le recomendamos que utilice el nombre de dominio completo (FQDN) zonal de la instancia de origen en la consulta. Este enfoque garantiza que la resolución de consultas permanezca sin interrupciones después de migrar el proyecto al DNS zonal.
Para resolver consultas incompatibles, haga lo siguiente:
Ver registros DNS globales en el Explorador de registros
Logs Explorer muestra principalmente registros de DNS globales para proyectos con consultas que son incompatibles con el DNS zonal. Estos registros le ayudan a identificar y analizar esas consultas problemáticas antes de migrar.
También puede utilizar Logs Explorer para estas consultas incompatibles para hacer lo siguiente:
Compruebe si un cambio en el DNS zonal está afectando su proyecto
Después de migrar al DNS zonal, es fundamental verificar que sus aplicaciones y servicios sigan funcionando correctamente. Dado que el DNS zonal cambia la forma en que se resuelven los nombres DNS internos, algunas aplicaciones pueden experimentar problemas si dependen de nombres DNS globales.
La siguiente sección describe cómo verificar posibles impactos y cómo resolverlos:
Volver a usar DNS global
Puede deshacer la migración a DNS zonal cambiando el tipo de DNS interno predeterminado a DNS global. Puede hacer esto a nivel de organización, proyecto, instancia o contenedor.
Volver a usar DNS global para un proyecto
Para revertir un proyecto al uso de DNS global, complete los siguientes pasos.
Volver a usar DNS global para una instancia
Para revertir una instancia específica al uso de DNS global, complete los siguientes pasos.
Volver a usar DNS global para un contenedor
Si ejecuta su aplicación o carga de trabajo en contenedores, en Google Kubernetes Engine o en el entorno flexible de App Engine, es posible que la configuración de DNS en la configuración de su contenedor no se actualice automáticamente hasta que reinicie los contenedores. Para deshabilitar el DNS zonal en estas aplicaciones de contenedor, complete los siguientes pasos.
Solucionar problemas del proceso de migración de DNS global a DNS zonal
Si tiene problemas con el proceso de migración, consulte la guía de solución de problemas .
¿Qué sigue?
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-04-17 (UTC).
-