Actualice sus proyectos para usar DNS zonal


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

    1. 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.

    2. Set a default region and zone.
    3. 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:

  • 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

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:

  • 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

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:

  1. Compruebe si su proyecto utiliza DNS global de forma predeterminada
  2. Determine la preparación para la migración de sus proyectos mediante el análisis de consultas
  3. Migrar proyectos que sean compatibles con DNS zonal
  4. Corregir consultas incompatibles
  5. Supervise los registros DNS globales para confirmar la preparación para la migración .
  6. Migrar los proyectos restantes al DNS zonal
  7. Compruebe si un cambio en el DNS zonal está afectando su proyecto

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

  1. En la consola de Google Cloud, vaya a la página Metadatos de Compute Engine.

    Ir a Metadatos

  2. 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 .

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.

  • GLOBAL_DEFAULT : el proyecto tiene DNS global habilitado.
  • ZONAL_ONLY : el proyecto tiene habilitado el DNS zonal. No es necesario migrar este proyecto.

DESCANSAR

Verifique el valor de vmDnsSetting utilizando el método projects.get . Este ejemplo utiliza un parámetro de consulta fields 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.

  • GLOBAL_DEFAULT : el proyecto tiene DNS global habilitado.
  • ZONAL_ONLY : el proyecto tiene habilitado el DNS zonal. No es necesario migrar este proyecto.

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:

  • 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.

Para ver estas métricas, utilice el Explorador de métricas en la consola de Google Cloud.

  1. En la consola de Google Cloud, vaya a la página del explorador de métricas :

    Ir al explorador de métricas

    Si utiliza la barra de búsqueda para encontrar esta página, seleccione el resultado cuyo subtítulo es Monitoreo .

  2. 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 .

  3. 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 .

  4. 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
    
  5. 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 y zonal_dns_risky ) y la cantidad correspondiente de consultas realizadas durante el período de tiempo para cada métrica.

    Captura de pantalla del gráfico de métricas globales de uso de DNS.

  6. 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 .

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:

  • Haga clic en el botón Usar DNS zonal en la consola de Google Cloud.

    1. 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.

      Una captura de pantalla del banner listo para migrar a DNS zonal en la consola.

      Si hace clic en el botón Usar DNS zonal , los metadatos del proyecto se actualizan para usar DNS zonal.

    2. 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.

    1. 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

      1. Para actualizar la configuración a nivel de proyecto, en la consola de Google Cloud, vaya a la página Metadatos de Compute Engine.

        Vaya a la página de metadatos personalizados

      2. Haga clic en Editar .

      3. Si existe una clave con el valor VmDnsSetting , cambie su valor a ZonalOnly .

      4. 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 .
      5. Para terminar de modificar sus entradas de metadatos personalizados, haga clic en Guardar .

      nube de gcloud

      1. 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
        
      2. 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 .

      1. 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étodo instances.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=",
           ...
         }
        }
        
      2. Cree una solicitud POST al método projects.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.

    2. 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
      
    3. Comprueba que tu proyecto utilice 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:

  • 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

Si su proyecto tiene consultas incompatibles, aparece el siguiente banner en la página de instancias de VM de la consola de Google Cloud:

Banner que indica que su proyecto no está listo para migrar a DNS zonal.

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:

  1. Utilice el Explorador de registros para acceder y consultar el uso global de DNS para las instancias informáticas de su proyecto.

    Ir al Explorador de registros

  2. Seleccione el proyecto.

  3. Aplique los filtros de recursos y nombres de registros:

    1. Haga clic en Recurso .
    2. En el cuadro de diálogo Seleccionar recurso , seleccione Instancia de VM y luego haga clic en Aplicar .
    3. Haga clic en Nombre del registro .
    4. 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"
      
  4. En el panel de resultados de la consulta , cada consulta tiene un campo jsonPayload . Cada campo jsonPayload 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.

    Captura de pantalla de jsonPayload en los resultados de la consulta del registro de gdnsusage.

  5. 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.
  6. Después de haber actualizado las consultas DNS globales para usar DNS zonal, haga lo siguiente:

    1. 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.

    2. Vuelva a verificar la métrica de monitoreo para ver si se han eliminado todas las consultas de DNS incompatibles.

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:

  • 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.

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:

  1. 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 para VM-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

  2. 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.

  3. 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.

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.

  1. 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 .

  2. Verifique que ninguna de las instancias del proyecto tenga el valor de metadatos vmDnsSetting establecido en ZonalOnly .

    gcloud compute instances describe INSTANCE_NAME --flatten="metadata[]"
    

    Reemplace INSTANCE_NAME con el nombre de la instancia a verificar.

  3. 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

Volver a usar DNS global para una instancia

Para revertir una instancia específica al uso de DNS global, complete los siguientes pasos.

  1. 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 .

  2. 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
      

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.

  1. Establezca la configuración de metadatos del proyecto vmDnsSetting en GlobalDefault en los proyectos que poseen los contenedores y las máquinas virtuales.

  2. Reinicie los contenedores para que su configuración de DNS vuelva al estado original.

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?