Usa las políticas de posición de instancia de VM

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Cada instancia de máquina virtual (VM) se ejecuta en un servidor físico, o host, en un bastidor que se ubica en un clúster en un centro de datos. Puedes usar las siguientes políticas de posición para controlar en qué ubicación se encuentran físicamente las VMs entre sí dentro de una zona:

  • Políticas de ubicación dispersa. Usa políticas dispersas cuando quieras que las VMs se dispersen entre sí para reducir el impacto de las fallas del sistema host.
  • Políticas de ubicación compacta. Usa políticas compactas cuando quieras que las VM se ubiquen cerca unas de las otras para obtener una baja latencia de red entre las VMs.

Antes de comenzar

Compatibilidad y restricciones

Las políticas de ubicación tienen las siguientes restricciones y compatibilidad:

  • Políticas de posición de distribución:
    • Admiten hasta 8 VM por política.
    • Se aplican a una cantidad dinámica de VM.
    • Compatibilidad solo con tipos de máquinas N1, N2, N2D y C2.
    • Admiten la migración en vivo.
    • No se puede usar con la API de topología de posición de VM.
  • Políticas de ubicación compacta:
    • Admiten hasta 150 VM en cada política.
    • Compatibilidad solo con los tipos de máquinas A2, C2, C2D, N2 y N2D.
    • No admiten la migración en vivo.
    • Se aplican a las VM configuradas como TERMINATE para los eventos de mantenimiento del host.
    • No se pueden aplicar a las VM existentes.
  • Políticas de ubicación dispersa y compacta:

Crea una política de ubicación

Para controlar dónde se encuentran ubicadas las VM una respecto de la otra, usa el siguiente proceso:

  1. Crea una política de ubicación dispersa o compacta con la configuración de ubicación que necesiten tus VM.
    • Las políticas de ubicación dispersa colocan estrictamente las instancias de VM en la infraestructura del centro de datos subyacente de manera que las VM no compartan el mismo host o sistema de energía. Esto reduce el impacto de las fallas del host o los cortes de energía.
    • Las políticas de posición de compactación acercan las instancias de VM entre sí para lograr una latencia de red baja entre las VM.
  2. Aplica la política de posición a una o más instancias. Las VM que comparten la misma política se ubican una respecto de la otra en función de cómo definiste la política.

Crea una política de posición de distribución

A fin de crear una política de posición de distribución en la que las instancias se encuentren en varios dominios de disponibilidad diferentes, especifica la cantidad de dominios de disponibilidad que esta política debe usar para separar las instancias.

gcloud

Usa la CLI de gcloud para crear la política.

gcloud compute resource-policies create group-placement POLICY_NAME \
    --availability-domain-count DOMAIN_COUNT \
    --region REGION \
    --project PROJECT_ID

Reemplaza lo siguiente:

  • POLICY_NAME: Es el nombre de la política nueva.
  • DOMAIN_COUNT: Es la cantidad de conjuntos distintos del hardware de host y redes físicas que esta política usará para separar las VM.
  • REGION: Es la región en la que planeas crear instancias de VM que usen esta política.
  • PROJECT_ID: Es el ID de tu proyecto.

API

Crea una política de posiciones de distribución con el método resourcePolicies.insert en las API y los servicios de la consola de Google Cloud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

En el cuerpo de la solicitud, proporciona detalles de la política de ubicación:

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "availabilityDomainCount": DOMAIN_COUNT
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto.
  • REGION: Es la región en la que planeas crear instancias de VM que usen esta política.
  • POLICY_NAME: Es el nombre de la política nueva.
  • DOMAIN_COUNT: Es la cantidad de conjuntos distintos del hardware de host y redes físicas que esta política usará para separar instancias.

Crea una política de posición de compactación

Para crear una política de posición de compactación en la que las instancias se encuentren más cerca entre sí y en la misma infraestructura de red, especifica una política COLLOCATED.

gcloud

Usa la CLI de gcloud para crear la política.

gcloud compute resource-policies create group-placement POLICY_NAME \
    --collocation COLLOCATED \
    --region REGION \
    --project PROJECT_ID

Reemplaza lo siguiente:

  • POLICY_NAME: Es el nombre de la política nueva.
  • REGION: Es la región en la que planeas crear instancias de VM que usen esta política.
  • PROJECT_ID: Es el ID de tu proyecto.

API

Crea una política de posición de compactación con el método resourcePolicies.insert en las API y los servicios de la consola de Google Cloud.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

En el cuerpo de la solicitud, proporciona detalles de la política de ubicación:

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "collocation": "COLLOCATED"
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto.
  • REGION: Es la región en la que planeas crear instancias de VM que usen esta política.
  • POLICY_NAME: Es el nombre de la política nueva.

Aplica políticas de ubicación a las instancias

Usa los siguientes procedimientos para aplicar políticas de posición a instancias nuevas y existentes.

Aplica una política de posición a una instancia nueva

Después de crear la política de posición, aplícala a una o más instancias. Las VM que comparten la misma política se ubican una respecto de la otra en función de cómo definiste la política.

gcloud

Para aplicar una política de posición a una VM, incluye la marca --resource-policies cuando crees VM de forma individual o de de forma masiva.

Para las políticas de ubicación compacta, debes incluir las marcas --maintenance-policy=TERMINATE y --no-restart-on-failure.

Por ejemplo, para crear una VM que use una política de posición de compactación, usa el siguiente comando:

gcloud compute instances create VM_NAME \
    --zone ZONE \
    --resource-policies POLICY_NAME \
    --image-family IMAGE_FAMILY \
    --image-project IMAGE_PROJECT \
    --project PROJECT_ID \
    --maintenance-policy=TERMINATE \
    --no-restart-on-failure \
    --async

Reemplaza lo siguiente:

  • VM_NAME: el nombre de la VM nueva
  • ZONE: la zona en la que deseas crear la VM nueva

    Esta zona debe estar en la misma región en la que se encuentra la política de posición.

  • POLICY_NAME: el nombre de la política de posición que deseas aplicar a esta VM

    Puedes aplicar más de una política de ubicación a una VM.

  • IMAGE_FAMILY: una de las familias de imágenes disponibles

  • IMAGE_PROJECT: el proyecto de imagen al que pertenece la imagen

  • PROJECT_ID: El ID de tu proyecto

API

Para aplicar una política de posición a una VM, incluye la marca --resource-policies cuando crees VM de forma individual o de de forma masiva.

Por ejemplo, para crear una sola VM, usa el siguiente comando:

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

En el cuerpo de la solicitud, proporciona la política de recursos. Para las políticas de posición de compactación, debes incluir los argumentos "onHostMaintenance": "TERMINATE" y "automaticRestart": false:

{
  "name": "VM_NAME",
  "machineType": "machineTypes/MACHINE_TYPE"
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT"
    }],
    "network": "global/networks/default"
  }],
  "scheduling": {
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": false
  },
  "disks": [{
     "autoDelete": "true",
     "boot": "true",
     "type": "PERSISTENT",
     "initializeParams": {
       "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
     }
  }],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID de tu proyecto
  • ZONE: la zona en la que deseas crear la VM nueva

    Esta zona debe estar en la misma región en la que se encuentra la política de posición.

  • VM_NAME: el nombre de la VM nueva

  • MACHINE_TYPE: el tipo de máquina de la VM nueva

  • IMAGE_PROJECT: el proyecto de imagen al que pertenece la imagen

  • IMAGE_FAMILY: una de las familias de imágenes disponibles

  • REGION: la región en la que creaste la política de posición

  • POLICY_NAME: el nombre de la política de posición que deseas aplicar a esta VM

    Puedes aplicar más de una política de ubicación a una VM.

Aplica una política de posición a una instancia existente

Si creas una política de ubicación dispersa, puedes aplicarla a una o más VM existentes sin reiniciar la VM.

gcloud

Aplica una política de posición a una instancia existente con el comando add-resource-policies.

Para las políticas de ubicación compacta, debes incluir las marcas --maintenance-policy=TERMINATE y --no-restart-on-failure.

gcloud compute instances add-resource-policies VM_NAME \
    --zone ZONE \
    --resource-policies POLICY_NAME \
    --project PROJECT_ID
    [--maintenance-policy=TERMINATE] \
    [--no-restart-on-failure]

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM
  • ZONE: La zona de la VM

    Esta zona debe estar en la misma región en la que se encuentra la política de posición.

  • POLICY_NAME: el nombre de la política de posición que deseas aplicar a esta VM

    Puedes aplicar más de una política de ubicación a una VM.

  • PROJECT_ID: El ID de tu proyecto

API

Aplica una política de posición a una instancia existente mediante el método addResourcePolicies.

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

En el cuerpo de la solicitud, proporciona la política de recursos. Para las políticas de posición de compactación, debes incluir los argumentos "onHostMaintenance": "TERMINATE" y "automaticRestart": false:

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
   "scheduling": {
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": false
  },
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID de tu proyecto
  • ZONE: la zona en la que deseas crear la VM nueva

    Esta zona debe estar en la misma región en la que se encuentra la política de posición.

  • VM_NAME: el nombre de la VM nueva

  • REGION: Es la región en la que planeas crear instancias de VM que usen esta política.

  • POLICY_NAME: el nombre de la política de posición que deseas aplicar a esta VM

    Puedes aplicar más de una política de ubicación a una VM.

Visualiza las políticas de posición

Puedes ver las políticas de ubicación que se aplican a una VM y los detalles de una política de ubicación específica mediante la CLI de gcloud y la API de Compute Engine.

Consulta la política de ubicación de una VM

gcloud

Para ver la política de ubicación de recursos de una VM, usa el comando gcloud compute instances describe:

gcloud compute instances describe VM_NAME

Reemplaza VM_NAME por el nombre de tu VM.

Si hay una política de ubicación disponible, el resultado contiene el campo resourcePolicies:

resourcePolicies:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGIONS/resourcePolicies/POLICY_NAME

API

Para ver la política de ubicación de recursos 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 ID de tu proyecto
  • ZONE: la zona que contiene la VM
  • VM_NAME: el nombre de tu VM

Si una política de ubicación está disponible, el campo resourcePolicies muestra las políticas de recursos de tu VM.

"resourcePolicies": [
"https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/VM_NAME"
],

Visualiza los detalles de una política de posición

gcloud

Para ver los detalles de una política de ubicación, usa el comando gcloud compute resource-policies describe:

gcloud compute resource-policies describe POLICY_NAME

Reemplaza POLICY_NAME por el nombre de la política de ubicación.

Si la política de ubicación está disponible, el resultado contiene los detalles de la política de ubicación:

...
groupPlacementPolicy:
  availabilityDomainCount: 2
kind: compute#resourcePolicy
name: POLICY_NAME
region: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION
...

API

Para ver los detalles de una política de ubicación, usa el método resourcePolicies.get:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: El ID de tu proyecto
  • REGION: la región que contiene la VM
  • POLICY_NAME: el nombre de la política de posición

Si la política de ubicación está disponible, el cuerpo de la respuesta contiene detalles de la política de ubicación:

...
"region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION",
"name": "POLICY_NAME",
"groupPlacementPolicy": {
  "availabilityDomainCount": 2
},
"kind": "compute#resourcePolicy"
...

Ver la topología de posición de VM

Puedes ver información sobre dónde se encuentra una VM en relación con otra VM. Esta información te ayuda a compilar una topología para las VMs de un proyecto y te ayuda a determinar qué VMs están más cerca entre sí y cuáles comparten la menor cantidad de hardware.

gcloud

  1. Visualiza los detalles de resource de una VM que se creó con una política de posición:

    gcloud compute instances describe VM_NAME \
    --format="table[box,title=VM-Topology](resourcePolicies.scope():sort=1,resourceStatus.physicalHost:label=location)"
    

    Reemplaza VM_NAME por el nombre de la instancia de VM que usa una política de posición.

    El resultado debería ser similar al siguiente ejemplo:

    VM-Topology

    RESOURCE_POLICIES: us-central1/resourcePolicies/policy_name'] PHYSICAL_HOST: /xxxxxxxx/xxxxxx/xxxxx

    El valor de PHYSICAL_HOST se compone de tres campos. Estos campos contienen valores de hash que representan el clúster, el rack de servidores y la máquina anfitrión donde se encuentra la VM. Cuando se compara este valor con otras VMs, mientras más campos haya con la misma string, más cerca están las VMs entre sí. Por ejemplo, dos VMs que pertenecen al mismo proyecto, clúster y se ejecutan en el mismo rack si tienen el mismo valor para las dos primeras partes del campo PHYSICAL_HOST.

API

  1. Consulta los detalles de una VM que se creó con una política de posición de compactación. Realiza una solicitud GET al 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 ID del proyecto para esta consulta
  • ZONE: La zona de la instancia que deseas consultar
  • VM_NAME: Es el nombre de la VM que usa una política de posición.

El cuerpo de la respuesta contiene un fragmento similar al siguiente:

{
  ...
  resourcePolicies:
  - https://www.googleapis.com/compute/v1/projects/
  PROJECT_ID/regions/ZONE/resourcePolicies/POLICY_NAME
  resourceStatus:
      physical_host: /xxxxxxxx/xxxxxx/xxxxx

  ...
}

El valor de physical_host se compone de tres campos que contienen valores con hash que representan el clúster, el bastidor del servidor y la máquina anfitrión donde se encuentra la VM. Cuando se compara este valor con otras VMs, mientras más campos haya con la misma string, más cerca están las VMs entre sí. Por ejemplo, dos VMs que pertenecen al mismo proyecto, clúster y se ejecutan en el mismo rack si tienen el mismo valor para las dos primeras partes del campo physicalHost.

Si la VM no usa una política de posición de compactación, el valor de la propiedad aparece en el resultado de la siguiente manera:

resourceStatus: {}

Borra una política de posición

Puedes borrar una política de posición que no necesitas.

gcloud

Usa la CLI de gcloud para eliminar la política.

gcloud compute resource-policies delete POLICY_NAME \
    --region REGION \
    --project PROJECT_ID

Reemplaza lo siguiente:

  • POLICY_NAME: Es el nombre de la política nueva que se quitará
  • REGION: Es la región en la que creaste las instancias de VM que usan esta política.
  • PROJECT_ID: El ID de tu proyecto

API

Para crear una política de posiciones de distribución, usa el método resourcePolicies.insert en APIs y servicios de la consola de Google Cloud:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies

En el cuerpo de la solicitud, proporciona detalles de la política de ubicación:

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "availabilityDomainCount": DOMAIN_COUNT
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto.
  • REGION: Es la región en la que planeas crear instancias de VM que usen esta política.
  • POLICY_NAME: Es el nombre de la política nueva.
  • DOMAIN_COUNT: Es la cantidad de conjuntos distintos del hardware de host y redes físicas que esta política usará para separar instancias.

Próximos pasos