Definir políticas de ubicación de instancias

Puedes controlar la ubicación física de las instancias de máquina virtual (VM) en relación con las demás dentro de una zona. Las siguientes políticas de posición se encuentran disponibles:

  • Políticas de posiciones. Usa políticas de distribución cuando quieras que las VM se separen para reducir el impacto de las fallas del sistema host.
  • Políticas de posición compactas. Usa políticas de compactación cuando quieras que las VM estén cerca para obtener una baja latencia de red entre las VM.

Antes de comenzar

Asistencia y restricciones

Las políticas de posición tienen los siguientes recursos y asistencia:

  • Políticas de posición de distribución:
  • Políticas de posición compactas:
    • Admite hasta 22 VM en cada política.
    • Aplica a una cantidad fija de VM.
    • Compatibilidad solo con tipos de máquinas C2
    • No admite la migración en vivo.
    • Se aplica a las VM que se configuran como TERMINATE para los eventos de mantenimiento del host.
    • No se puede aplicar a las VM existentes.
  • Políticas de posición dispersas y de compactación:

Crea una política de posició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 posición de distribución o compactación con la configuración de ubicación que necesiten tus VM.
    • Las políticas de posición de distribución colocan tus instancias de VM de forma estricta en la infraestructura subyacente del centro de datos para que las VM no compartan el mismo host o sistema de energía. Esto reduce el impacto de las fallas del host o la 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 herramienta 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 Cloud Console.

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 posició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 compacta

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 y la cantidad de instancias de VM que planeas incluir en esa política.

gcloud

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

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

Reemplaza lo siguiente:

  • POLICY_NAME: Es el nombre de la política nueva.
  • VM_COUNT: Es la cantidad de VM que se incluirán en esa política.

    Para las políticas de compactación, debes aplicar la política a esta cantidad exacta de 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 Cloud Console.

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 posición:

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "vmCount": VM_COUNT,
    "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.
  • VM_COUNT: Es la cantidad de VM que se incluirán en esa política.

    Para las políticas de compactación, debes aplicar la política a esta cantidad exacta de las VM.

Aplica políticas de posició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 instancia, debes incluir la marca --resource-policies cuando crees una instancia nueva. Si ejecutas varios comandos de instances create, usa la marca --async para evitar que los comandos agoten el tiempo de espera mientras Compute Engine crea las VM según la política de posición.

Para las políticas de posiciones compactas, debes incluir las marcas --maintenance-policy=TERMINATE y --no-restart-on-failure.

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 posició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, debes incluir la propiedad resourcePolicies cuando crees una VM nueva.

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 posiciones compactas, 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 posición a una VM.

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

Si creas una política de posición de distribución, puedes aplicarla a una o más VM existentes sin reiniciarla.

gcloud

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

Para las políticas de posiciones compactas, 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 posició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 posiciones compactas, 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 posición a una VM.

Visualiza las políticas de posición

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

Ver la política de posición de una VM

gcloud

Para ver la política de posició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 posició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 posició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 hay una política de posición disponible, el campo resourcePolicies muestra las políticas de recursos de la 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 posició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 posición.

Si la política de posición está disponible, el resultado contiene los detalles de la política de posició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 posició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 posición está disponible, el cuerpo de la respuesta contendrá detalles de la siguiente política:

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

Próximos pasos