Definir políticas de ubicación de instancias

Puedes controlar dónde se ubica cada instancia respecto de las demás dentro de una zona. Las siguientes políticas de posición se encuentran disponibles:

  • Distribución: Usa políticas de distribución cuando quieras que las instancias se separen para reducir el impacto de posibles fallas del sistema host.
  • Compactación: Usa políticas de compactación cuando quieras que las instancias estén cerca para obtener una baja latencia de red entre las instancias.

Antes de comenzar

Restricciones

Las políticas de posición tienen las siguientes restricciones:

  • Distribución:
    • Hasta 8 instancias por política
    • Se puede aplicar a una cantidad dinámica de instancias
    • Compatibilidad solo con tipos de máquinas N1, N2, N2D y C2
  • Compactación:
    • Hasta 22 instancias en cada política
    • Se aplica a una cantidad fija de instancias
    • Compatibilidad solo con tipos de máquinas C2
    • No admite la migración en vivo y las instancias con políticas de ubicación se deben configurar como TERMINATE en el mantenimiento del host.
    • No se puede aplicar a instancias existentes
  • De distribución y compactación:

Define y aplica una política de posición

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

  1. Crea una política de posición con la configuración de ubicación que necesiten las instancias. Puedes crear uno de los siguientes tipos de políticas:
    • Las políticas de posición de distribución colocan las instancias de VM en la infraestructura del centro de datos subyacente de forma estricta a fin de que las instancias 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 instancias.
  2. Aplica la política de posición a una o más instancias. Las instancias 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 instancias.
  • 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

{
  "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 instancias 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 instancias.
  • 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

{
  "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 instancias 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 instancias.

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 instancias 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. Para las políticas de posiciones compactas, debes incluir --maintenance-policy=TERMINATE --no-restart-on-failure: 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.

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: Es el nombre de la instancia nueva.
  • ZONE: Es la zona en la que deseas crear la instancia nueva. Esta zona debe estar en la misma región en la que se encuentra la política de posición.
  • POLICY_NAME: Es el nombre de la política de posiciones que deseas aplicar a esta instancia. Puedes aplicar más de una política de posición a una instancia.
  • IMAGE_FAMILY: Es una de las familias de imágenes disponibles.
  • IMAGE_PROJECT: Es el proyecto de imagen al que pertenece la imagen.
  • PROJECT_ID: Es el ID de tu proyecto.

API

Para aplicar una política de posición a una instancia, debes incluir la propiedad resourcePolicies cuando crees una instancia nueva. Para las políticas de posiciones compactas, debes incluir "onHostMaintenance": "TERMINATE" y "automaticRestart": false:

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

{
  "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: Es el ID de tu proyecto.
  • ZONE: Es la zona en la que deseas crear la instancia nueva. Esta zona debe estar en la misma región en la que se encuentra la política de posición.
  • VM_NAME: Es el nombre de la instancia nueva.
  • MACHINE_TYPE: Es el tipo de máquina de la instancia.
  • IMAGE_PROJECT: Es el proyecto de imagen al que pertenece la imagen.
  • IMAGE_FAMILY: Es una de las familias de imágenes disponibles.
  • REGION: Es la región en la que creaste la política de posición.
  • POLICY_NAME: Es el nombre de la política de posiciones que deseas aplicar a esta instancia. Puedes aplicar más de una política de posición a una instancia.

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 instancias existentes.

gcloud

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

gcloud compute instances add-resource-policies VM_NAME \
        --zone ZONE \
        --resource-policies POLICY_NAME \
        --project PROJECT_ID

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la instancia.
  • ZONE: La zona de la instancia. Esta zona debe estar en la misma región en la que se encuentra la política de posición.
  • POLICY_NAME: Es el nombre de la política de posiciones que deseas aplicar a esta instancia. Puedes aplicar más de una política de posición a una instancia.
  • PROJECT_ID: el ID de tu proyecto

API

Aplica una política de posición a una instancia existente mediante el método addResourcePolicies. Incluye la marca --resource-policies:

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

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto.
  • ZONE: Es la zona en la que deseas crear la instancia nueva. Esta zona debe estar en la misma región en la que se encuentra la política de posición.
  • VM_NAME: Es el nombre de la instancia nueva.
  • 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 de posiciones que deseas aplicar a esta instancia. Puedes aplicar más de una política de posición a una instancia.

Próximos pasos