Configura una política de mantenimiento del host de VM


En este documento, se describe cómo configurar la política de mantenimiento del host de una instancia de máquina virtual (VM) para controlar el comportamiento de la VM cuando se produce un evento de host.

Antes de empezar

  • Configura la autenticación si aún no lo hiciste. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña sobre cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    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.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Limitaciones

  • No puedes cambiar la política de mantenimiento del host de una VM interrumpible. Cuando hay un evento de mantenimiento, la VM interrumpible se detiene y no se migra. Debes reiniciar de forma manual la VM interrumpida.
  • Después de crear una VM mediante un tipo de máquina E2, no podrás cambiar la configuración de mantenimiento del host de la VM de MIGRATE a TERMINATE, ni viceversa.

Propiedades de mantenimiento del host disponibles

Puedes configurar el comportamiento de mantenimiento, el comportamiento de reinicio y el comportamiento después de que se produzca un error de host de una VM con las siguientes propiedades.

Compute Engine configura cada VM con los valores predeterminados, a menos que especifiques lo contrario.

Durante los eventos del host, según la política de mantenimiento del host configurada, las VMs que no admiten la migración en vivo se finalizan o se reinician automáticamente.

  • onHostMaintenance: Determina el comportamiento cuando ocurre un evento de mantenimiento que podría hacer que la VM se reinicie.

    • MIGRATE(Predeterminado): Hace que Compute Engine realice la migración en vivo de una instancia cuando se produce un evento de mantenimiento.
    • TERMINATE: Detiene una VM en lugar de migrarla.
  • automaticRestart: Determina el comportamiento cuando una VM falla o el sistema la detiene.

    • true(Predeterminado): Compute Engine reinicia una instancia si esta falla o se detiene.
    • false: Compute Engine no reinicia la VM si esta falla o se detiene.
  • localSsdRecoveryTimeout: Configura el tiempo de espera de recuperación de SSD local. Esta es la cantidad máxima de tiempo, en horas, que Compute Engine espera para recuperar los datos de los SSD locales después de un error de host. Esta configuración solo se aplica a las VMs con discos SSD locales conectados.

    • Sin establecer (Predeterminado): Compute Engine espera hasta 1 hora para recuperar el disco. Para las VMs Z3 (vista previa), el tiempo de espera predeterminado es de 4 horas.
    • Un número del 0 al 168: especifica cuánto tiempo espera Compute Engine para recuperar el disco. El número debe ser un número entero, en incrementos de 1 hora, con un valor máximo de 7 días. Un valor de 0 significa que Compute Engine no esperará a recuperar los datos.
  • hostErrorTimeoutSeconds (Vista previa): Configura la cantidad máxima de tiempo, en segundos, que Compute Engine espera para reiniciar o finalizar una VM después de detectar que esta no responde.

    • Sin establecer (Predeterminado): Compute Engine espera hasta 5.5 minutos (330 segundos) antes de reiniciar una VM que no responde.
    • Número del 90 al 330: especifica la cantidad de segundos, en incrementos de 30, que Compute Engine espera antes de reiniciar una VM que no responde.

Configura la política de mantenimiento del host de una VM

Puedes cambiar la política de mantenimiento del host de una VM la primera vez que creas la VM o después de crearla.

Configura la política de mantenimiento del host durante la creación de la VM

La información de esta sección se centra en cómo configurar la política de mantenimiento del host cuando creas una VM. Para ver más ejemplos de creación de VM, consulta Crea y, luego, inicia una instancia de VM.

Puedes configurar la política de mantenimiento del host de una VM durante la creación de la VM con la consola de Google Cloud, gcloud CLI o la API de Compute Engine.

Consola

  1. En la consola de Google Cloud, ve a la página Crea una instancia.

    Ir a Crear una instancia

  2. Especifica un Nombre para la VM.

  3. Selecciona una región y una zona para la VM.

  4. En la sección Configuración de la máquina, haz lo siguiente:

    1. Especifica los detalles del tipo de máquina para la VM.
    2. Expande el menú Configuración avanzada del modelo de aprovisionamiento de VM.
    3. En el menú Mantenimiento en el host, selecciona uno de los siguientes pasos:
    4. Para migrar VMs durante eventos de mantenimiento, selecciona Migrar instancia de VM.
    5. Para detener las VMs durante los eventos de mantenimiento, elige Finalizar instancia de VM.
  5. Para crear la VM, haz clic en Crear.

gcloud

En la consola de Google Cloud, activa Cloud Shell.

Activar Cloud Shell

En la parte inferior de la consola de Google Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

Para configurar la política de mantenimiento del host de una VM nueva, usa el comando gcloud compute instances create. Incluye uno o más de los siguientes parámetros:

  • --maintenance-policy: Es si la VM se migra o se detiene durante el mantenimiento del host. La VM se migra de manera predeterminada si omites esta propiedad.
  • --no-restart-on-failure o --restart-on-failure: Si la VM se reinicia de forma automática después de un error de host. De forma predeterminada, la VM siempre se reiniciará cuando se detecte una falla.
  • --local-ssd-recovery-timeout: Es el tiempo que Compute Engine dedica a recuperar los discos SSD locales conectados después de un error del host. El valor predeterminado es de 1 hora.

Configura la política de mantenimiento del host de una VM nueva con el siguiente comando. Si omites alguna de las marcas, se usa el valor predeterminado de la marca.

  gcloud compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM.
  • MAINTENANCE_POLICY: La política de mantenimiento de esta VM, ya sea TERMINATE o MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: Comportamiento de reinicio para la VM, establecido en --no-restart-on-failure o --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: la cantidad de horas que se dedicarán a recuperar una SSD local conectado a una VM que no responde. Los valores válidos van desde 0 hasta 168, en incrementos de 1 hora.

Configura el tiempo de espera de detección de errores del host

Para establecer la cantidad máxima de tiempo que Compute Engine espera para reiniciar o finalizar una VM que no responde, usa el comando gcloud compute instances create. Especifica el tiempo de espera con la marca --host-error-timeout-seconds.

  gcloud beta compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM.
  • MAINTENANCE_POLICY: La política de mantenimiento de esta VM, ya sea TERMINATE o MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: Comportamiento de reinicio para la VM, establecido en --no-restart-on-failure o --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: la cantidad de horas que Compute Engine dedica a recuperar una SSD local que se conectó a una VM que no responde. Los valores válidos van desde 0 hasta 168, en incrementos de 1 hora.
  • ERROR_DETECTION_TIMEOUT: La cantidad de segundos que Compute Engine espera antes de reiniciar una VM que no responde, de 90 a 330, en incrementos de 30.

REST

Para configurar la política de mantenimiento del host de una VM nueva mediante la API de Compute Engine, usa el método instances.insert. Incluye una o más de las siguientes propiedades en el objeto scheduling del cuerpo de la solicitud:

  • onHostMaintenance: Es si la VM se migra o se detiene durante el mantenimiento del host. La VM se migra de manera predeterminada.
  • automaticRestart: Si la VM se reinicia de forma automática después de un error de host. Las VMs se reinician de forma automática de forma predeterminada.
  • localSsdRecoveryTimeout: Es el tiempo que Compute Engine dedica a recuperar los discos SSD locales conectados después de que se detecta un error de host. El valor predeterminado es de 1 hora.
      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

      {
        "name": "VM_NAME",

        "scheduling": {
          "onHostMaintenance": "MAINTENANCE_POLICY",
          "automaticRestart": "RESTART_POLICY,
          "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        }
      }

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto de la VM.
  • ZONE: La zona donde deseas crear la VM.
  • VM_NAME: El nombre de la VM.
  • MAINTENANCE_POLICY: La política de mantenimiento de esta VM, ya sea TERMINATE o MIGRATE.
  • RESTART_POLICY: La política de reinicio de esta VM, que puede ser true o false.
  • SSD_RECOVERY_TIMEOUT: Es la cantidad de horas que Compute Engine dedica a recuperar un disco SSD local que se conectó a una VM que no responde. Los valores válidos van desde 0 hasta 168, en incrementos de 1 hora.

Configura el tiempo de espera de detección de errores del host

Para establecer la cantidad máxima de tiempo que Compute Engine espera para reiniciar o finalizar una VM que no responde, usa el método beta instances.insert porque esta opción está disponible en versión preliminar.

Agrega la propiedad hostErrorTimeoutSeconds al objeto scheduling del cuerpo de la solicitud.


   POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

   {
      "name": "VM_NAME",

      "scheduling": {
        "onHostMaintenance": "MAINTENANCE_POLICY",
        "automaticRestart": "RESTART_POLICY,
        "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        "hostErrorTimeoutSeconds": HOST_ERROR_TIMEOUT,
      }
    }

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto de la VM.
  • ZONE: La zona donde deseas crear la VM.
  • VM_NAME: El nombre de la VM.
  • MAINTENANCE_POLICY: La política de mantenimiento de esta VM, ya sea TERMINATE o MIGRATE.
  • RESTART_POLICY: La política de reinicio de esta VM, que puede ser true o false.
  • SSD_RECOVERY_TIMEOUT: Es la cantidad de horas que Compute Engine dedicará a recuperar un disco SSD local que se conectó a una VM que no responde. Los valores válidos van desde 0 hasta 168, en incrementos de 1 hora.
  • HOST_ERROR_TIMEOUT: La cantidad de segundos que Compute Engine espera antes de reiniciar o finalizar una VM que no responde. Los valores válidos van desde 90 hasta 330, en incrementos de 30.

Cómo actualizar la política de mantenimiento del host de una VM existente

Consola

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en la VM en la que deseas cambiar la configuración. Se mostrará la página de detalles de la VM.

  3. En la página de detalles de la VM, completa los siguientes pasos:

    1. Haz clic en el botón Editar en la parte superior de la página.
    2. Ve a la sección Administración. En la sección Políticas de disponibilidad, puedes configurar las opciones de Mantenimiento en el host y Reinicio automático.
    3. Haz clic en Guardar.

gcloud

En la consola de Google Cloud, activa Cloud Shell.

Activar Cloud Shell

En la parte inferior de la consola de Google Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

Actualiza la política de mantenimiento del host de una VM existente con el comando gcloud compute instances set-scheduling. Usa los mismos parámetros descritos en el comando de creación de VM de la sección anterior.

    gcloud compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM.
  • MAINTENANCE_POLICY: La política para esta VM, ya sea TERMINATE o MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: El comportamiento de reinicio de la VM, ya sea --no-restart-on-failure o --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: Es el tiempo, en horas, que Compute Engine dedica a recuperar un disco SSD local conectado a una VM que no responde. Los valores válidos van desde 0 hasta 168.

Cómo actualizar el tiempo de espera de detección de errores del host

Para actualizar la cantidad máxima de tiempo que Compute Engine espera para reiniciar o finalizar una VM que no responde, usa el comando gcloud beta compute instances set-scheduling, porque esta función solo es disponible en versión preliminar.

Actualiza el tiempo de espera con el parámetro --host-error-timeout-seconds. Por ejemplo:

    gcloud beta compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=NUMBER_OF_SECONDS

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM.
  • MAINTENANCE_POLICY: La política de mantenimiento de esta VM, ya sea TERMINATE o MIGRATE.
  • RESTART_ON_FAILURE_BEHAVIOR: Comportamiento de reinicio para la VM, establecido en --no-restart-on-failure o --restart-on-failure.
  • SSD_RECOVERY_TIMEOUT: Es el tiempo, en horas, que Compute Engine dedica a recuperar un disco SSD local que se conectó a una VM que no responde. Los valores válidos van desde 0 hasta 168.
  • NUMBER_OF_SECONDS: La cantidad de segundos que Compute Engine espera antes de reiniciar o finalizar una VM que no responde, de 90 a 330, en incrementos de 30.

REST

Actualiza la política de mantenimiento del host de una VM existente con una solicitud POST al método instances.setScheduling.

Incluye una o más de las siguientes propiedades en el cuerpo de la solicitud:

  • onHostMaintenance: Es si la VM se migra o se detiene durante el mantenimiento del host. La VM se migra de manera predeterminada.
  • automaticRestart: Si la VM se reinicia de forma automática después de un error de host. Las VMs se reinician de forma automática de forma predeterminada.
  • localSsdRecoveryTimeout: Es el tiempo que Compute Engine dedica a recuperar los discos SSD locales conectados después de que se detecta un error de host. Si se omite, el valor predeterminado es 1 hora.
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

    {
      "onHostMaintenance": "MAINTENANCE_POLICY",
      "automaticRestart": RESTART_POLICY,
      "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
    }

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto de la VM.
  • ZONE: la zona donde se ubica la VM.
  • VM_NAME: El nombre de la VM.
  • MAINTENANCE_POLICY: La política de mantenimiento de esta VM, ya sea TERMINATE o MIGRATE.
  • RESTART_POLICY: La política de reinicio de esta VM, que puede ser true o false.
  • SSD_RECOVERY_TIMEOUT: Es el tiempo, en horas, que Compute Engine dedica a recuperar un disco SSD local que se conectó a una VM que no responde. Los valores válidos van desde 0 hasta 168.

Cómo actualizar el tiempo de espera de detección de errores del host

Para actualizar la cantidad máxima de tiempo que Compute Engine espera para reiniciar o finalizar una VM que no responde, debes usar el método beta instances.setScheduling porque esta función está disponible en versión preliminar.

Agrega el parámetro hostErrorTimeoutSeconds al cuerpo de la solicitud.

  POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

  {
    "hostErrorTimeoutSeconds": NUMBER_OF_SECONDS,
  }

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto de la VM.
  • ZONE: la zona donde se ubica la VM.
  • VM_NAME: El nombre de la VM.
  • NUMBER_OF_SECONDS: La cantidad de segundos que Compute Engine espera antes de reiniciar o finalizar una VM que no responde, de 90 a 330, en incrementos de 30.

Visualiza la configuración de la política de mantenimiento del host de una VM

Consola

  1. Ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en el nombre de la VM para la que deseas ver la configuración. Se abrirá la página Detalles de instancia de VM.

  3. Ve a la sección Administración. En la subsección Políticas de disponibilidad, se muestra tu configuración actual para Mantenimiento en el host y Reinicio automático.

gcloud

Consulta la configuración de la opción de mantenimiento del host de una VM con el comando gcloud compute instances describe:

    gcloud compute instances describe VM_NAME --format="yaml(scheduling)"

Reemplaza VM_NAME por el nombre de la VM.

El resultado incluye el tiempo de espera de detección de errores del host de la VM, por ejemplo:

    scheduling:
      automaticRestart: true
      localSsdRecoveryTimeout:
        nanos: 0
        seconds: '10800'
      onHostMaintenance: MIGRATE
      preemptible: false
      provisioningModel: STANDARD

Cómo ver la configuración del tiempo de espera de detección de errores del host

Visualiza el valor actual de hostErrorTimeoutSeconds con el comando gcloud beta compute instances describe, ya que esta opción solo está disponible en versión preliminar.

  gcloud beta compute instances describe VM_NAME --format="yaml(scheduling)"

Reemplaza VM_NAME por el nombre de la VM.

El resultado incluye el tiempo de espera de detección de errores del host de la VM, por ejemplo:

  scheduling:
    automaticRestart: true
    hostErrorTimeoutSeconds: 120
    localSsdRecoveryTimeout:
      nanos: 0
      seconds: '10800'
    onHostMaintenance: MIGRATE
    preemptible: false
    provisioningModel: STANDARD

REST

Para ver la configuración de mantenimiento del host de una VM, usa el método instances.get:

  GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto donde se ubica la VM.
  • ZONE: la zona donde se ubica la VM.
  • VM_NAME: El nombre de la VM.

En el resultado, el objeto scheduling contiene la política de mantenimiento del host de la VM, por ejemplo:

  "scheduling": {
      "onHostMaintenance": "MIGRATE",
      "automaticRestart": true,
      "preemptible": false,
      "provisioningModel": "STANDARD",
      "localSsdRecoveryTimeout": {
        "seconds": "10800",
        "nanos": 0
      }
    }

Cómo ver la configuración del tiempo de espera de errores del host

Visualiza el parámetro de configuración hostErrorTimeoutSeconds actual con una solicitud GET al método beta instances.get, ya que esta opción solo está disponible en versión preliminar.

 GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto de la VM.
  • ZONE: la zona donde se ubica la VM.
  • VM_NAME: El nombre de la VM.

En el resultado, el objeto scheduling incluye el tiempo de espera de detección de errores del host de la VM, por ejemplo:

  "scheduling": {
    "hostErrorTimeoutSeconds": 120
  }

¿Qué sigue?