En este documento, se explica cómo crear una política de posición dispersa y aplicarla a una o más instancias de máquina virtual (VM) para mejorar la confiabilidad.
Una política de posición dispersa especifica que tus VMs deben colocarse físicamente muy separadas entre sí mediante la colocación en diferentes dominios de disponibilidad. Un dominio de disponibilidad es un hardware aislado y distinto en un centro de datos con alimentación, enfriamiento, y herramientas de redes. Usar una política de posición de distribución ayuda a reducir la el impacto de una falla de hardware subyacente o un evento de mantenimiento que no afecten todas tus VMs.
Antes de comenzar
-
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.
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Para crear políticas de posición:
compute.resourcePolicies.create
en el proyecto -
Para aplicar una política de posición a las VMs existentes:
compute.instances.addResourcePolicies
en el proyecto -
Para crear VMs, sigue estos pasos:
compute.instances.create
en el proyecto- Para usar una imagen personalizada con el fin de crear la VM, sigue estos pasos:
compute.images.useReadOnly
en la imagen - Si deseas usar una instantánea para crear la VM, sigue estos pasos:
compute.snapshots.useReadOnly
en la instantánea - Para usar una plantilla de instancias a fin de crear la VM, haz lo siguiente:
compute.instanceTemplates.useReadOnly
en la plantilla de instancias - Para asignar una red heredada a la VM:
compute.networks.use
en el proyecto - Si deseas especificar una dirección IP estática para la VM;
compute.addresses.use
en el proyecto - Para asignar una dirección IP externa a la VM cuando se usa una red y punto heredado;
compute.networks.useExternalIp
en el proyecto - A fin de especificar una subred para la VM:
compute.subnetworks.use
en el proyecto o en la subred elegida - Para asignar una dirección IP externa a la VM cuando se usa una red de VPC,
compute.subnetworks.useExternalIp
en el proyecto o en la subred elegida - A fin de configurar los metadatos de la instancia de VM para la VM y los puntos, sigue estos pasos:
compute.instances.setMetadata
en el proyecto - A fin de configurar etiquetas para la VM y los puntos;
compute.instances.setTags
en la VM - Si deseas configurar etiquetas para la VM, haz lo siguiente:
compute.instances.setLabels
en la VM - A fin de configurar una cuenta de servicio para que la VM la use
compute.instances.setServiceAccount
en la VM - Si deseas crear un disco nuevo para la VM:
compute.disks.create
en el proyecto - Para conectar un disco existente en modo de solo lectura o de lectura y escritura, haz lo siguiente:
compute.disks.use
en el disco - Para conectar un disco existente en modo de solo lectura y dos puntos, sigue estos pasos:
compute.disks.useReadOnly
en el disco
- Para crear una plantilla de instancias:
compute.instanceTemplates.create
en el proyecto -
Para crear un grupo de instancias administrado (MIG) regional o zonal, sigue estos pasos:
compute.instanceGroupManagers.create
en el proyecto POLICY_NAME
: El nombre de la política de posición dispersa que se creará.DOMAIN_COUNT
: La cantidad distinta de dominios de disponibilidad en los que se colocarán tus VMs. El valor debe ser de entre1
y8
.REGION
: la región en la que se creará la política.PROJECT_ID
: el ID del proyecto en el que deseas crear la política.REGION
: la región en la que deseas crear la política.POLICY_NAME
: El nombre de la política de posición dispersa que se creará.DOMAIN_COUNT
: La cantidad distinta de dominios de disponibilidad en los que se colocarán tus VMs. El valor debe ser de entre1
y8
.- Aplica una política de posición distribuida a una VM existente
- Crea una VM con una política de posición distribuida.
- Crea VMs de forma masiva con una política de posición distribuida.
- Crea una plantilla de instancias con una política de posición distribuida.
- Aplica una política de posición distribuida a las VMs en un MIG.
Si tu política de posición de distribución tiene dos o más dominios de disponibilidad, puedes agregarla a una VM sin detenerla. De lo contrario, si la expansión de posición especifica solo un dominio, primero debes detener la VM antes aplicando la política de posición.
La VM y la política de posición de distribución deben estar ubicadas en la misma región. Por ejemplo, si la política de posición se encuentra en la región
us-central1
, entonces, la VM debe estar ubicada en una zona enus-central1
. Si necesitas migrar una VM a otra región y, luego, consultar Traslada una VM entre zonas o regiones.VM_NAME
: el nombre de una VM existente.POLICY_NAME
: el nombre de una política de posición dispersa existente.ZONE
: la zona donde existe la VM, que debe estar dentro de la región en la que se encuentra la política de posición dispersa.PROJECT_ID
: el ID del proyecto en el que se encuentran la política de posición distribuida y la VM.ZONE
: la zona donde existe la VM, que debe estar dentro de la región en la que se encuentra la política de posición dispersa.VM_NAME
: el nombre de una VM existente.REGION
: la región en la que se encuentra la política de posición dispersa.POLICY_NAME
: el nombre de una política de posición dispersa existente.VM_NAME
: El nombre de la VM que se creará.MACHINE_TYPE
: Es el tipo de máquina de la VM.POLICY_NAME
: el nombre de una política de posición dispersa existente.ZONE
: la zona donde se creará la VM.PROJECT_ID
: el ID del proyecto en el que se encuentra la política de posición distribuida.ZONE
: la zona en la que se creará la VM y en la que se encuentra el tipo de máquina. Solo puedes especificar un tipo de máquina disponibles dentro de la misma región que la política de posición de distribución.VM_NAME
: El nombre de la VM que se creará.MACHINE_TYPE
: Es el tipo de máquina de la VM.REGION
: la región en la que se encuentra la política de posición dispersa.POLICY_NAME
: el nombre de una política de posición dispersa existente.COUNT
: la cantidad de VM que se crearán.MACHINE_TYPE
: Es el tipo de máquina para las VM.NAME_PATTERN
: el patrón de nombre para las VMs que se crearán. Usa el carácter de hash (#
) para reemplazarlo por una secuencia de números. Por ejemplo, si especificasvm-#
, se crean VMs con los nombresvm-1
,vm-2
, etc., hasta el número de VMs especificadas enCOUNT
.POLICY_NAME
: el nombre de una política de posición dispersa existente.ZONE
: Es la zona en la que se crearán las VM de forma masiva.PROJECT_ID
: el ID del proyecto en el que se encuentra la política de posición distribuida.ZONE
: Es la zona en la que se crearán las VM de forma masiva.COUNT
: la cantidad de VM que se crearán.MACHINE_TYPE
: Es el tipo de máquina para las VM.NAME_PATTERN
: el patrón de nombre para las VMs que se crearán. Usa el carácter de hash (#
) para reemplazarlo por una secuencia de números. Por ejemplo, si especificasvm-#
para crear VMs con nombresvm-1
,vm-2
, y así sucesivamente, hasta el número de VMs especificadas enCOUNT
.REGION
: la región en la que se encuentra la política de posición dispersa.POLICY_NAME
: el nombre de una política de posición dispersa existente.Aplica una política de posición dispersa a las VMs en un MIG.
Crea una instancia de VM a partir de una plantilla de instancias.
INSTANCE_TEMPLATE_NAME
: el nombre de la plantilla de instancias.MACHINE_TYPE
: Es el tipo de máquina para las VM creadas. con la plantilla de instancias.POLICY_NAME
: el nombre de una política de posición dispersa existente.Para crear una plantilla de instancias global: método
instanceTemplates.insert
.Para crear una plantilla de instancias regional: método
regionInstanceTemplates.insert
.PROJECT_ID
: el ID del proyecto en el que se encuentra la política de posición distribuida.INSTANCE_TEMPLATE_NAME
: el nombre de la plantilla de instancias.IMAGE
oIMAGE_FAMILY
: especifica una de las siguientes opciones:IMAGE
: una versión específica de la imagen de SO; por ejemplo,debian-10-buster-v20200309
.IMAGE_FAMILY
: Es una familia de imágenes. Esto especifica la imagen de SO no obsoleta más reciente. Por ejemplo, si especificasfamily/debian-10
, se usa la versión más reciente de la familia de imágenes de Debian 10. Para obtener más información sobre el uso de las familias de imágenes, consulta Prácticas recomendadas para las familias de imágenes.
MACHINE_TYPE
: el tipo de máquina para las VMs creadas con la plantilla de instancias.POLICY_NAME
: el nombre de una política de posición distribuida existente.MIG_NAME
: el nombre del MIG que se creará.REGION
: la región en la que se crea el MIG, que debe coincidir con la región en la que se encuentra la política de posición dispersa.SIZE
: el tamaño del MIG.INSTANCE_TEMPLATE_NAME
: el nombre de una plantilla de instancias existente que especifica una política de posición dispersa.PROJECT_ID
: el ID del proyecto en el que se encuentran la política de posición distribuida y la plantilla de instancias que especifica la política de posición.REGION
: la región en la que se crea el MIG, que debe coincidir con la región en la que se encuentra la política de posición dispersa.MIG_NAME
: el nombre del MIG que se creará.INSTANCE_TEMPLATE_NAME
: el nombre de una plantilla de instancias existente que especifica una política de posición dispersa.SIZE
: el tamaño del MIG.MIG_NAME
: el nombre de un MIG existente.REGION
: la región en la que se encuentra el MIG. Solo puedes aplicar la política de posición distribuida a un MIG que se encuentre en la misma región.INSTANCE_TEMPLATE_NAME
: el nombre de una plantilla de instancias existente que especifica una política de posición dispersa.PROJECT_ID
: el ID del proyecto que usaste para crear un MIG existente, la política de posición distribuida y la plantilla de instancias que especifica la política de posición distribuida.REGION
: la región en la que se encuentra el MIG. Solo puedes aplicar la política de posición distribuida a un MIG que se encuentre en la misma región.MIG_NAME
: el nombre de un MIG existente.INSTANCE_TEMPLATE_NAME
: el nombre de una plantilla de instancias existente que especifica una política de posición dispersa.Obtén más información para ver las políticas de posición.
Obtén más información para reemplazar, quitar o borrar políticas de posición.
Obtén información sobre cómo hacer lo siguiente con una VM que especifica una política de posición:
Obtén más información sobre el proceso de migración en vivo durante los eventos de mantenimiento.
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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Roles obligatorios
Para obtener los permisos que necesitas crear y aplicar una política de posición distribuida a las VMs, pídele al administrador que te otorgue el permiso Rol de IAM Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1
) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.Este rol predefinido contiene los permisos necesarios para crear y aplicar una política de posición distribuida a las VMs. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear y aplicar una política de posición dispersa a las VMs:
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos
Crea una política de posición dispersa
Cuando creas una política de posición de distribución, puedes especificar hasta ocho disponibles en los que colocar tus VMs. A menos que quieras probar aplicación de la política de posición distribuida a tus VMs, Google Cloud recomienda que especifica dos o más dominios de disponibilidad. Así, se mitiga el riesgo de que todos Las VMs se ven afectadas por una sola falla de hardware o evento de mantenimiento.
Para crear una política de posición de distribución, selecciona una de las siguientes opciones:
gcloud
Para crear una política de posición dispersa, usa el comando
gcloud compute resource-policies create group-placement
con la marca--availability-domain-count
.gcloud compute resource-policies create group-placement POLICY_NAME \ --availability-domain-count=DOMAIN_COUNT \ --region=REGION
Reemplaza lo siguiente:
REST
Para crear una política de posición distribuida, realiza una solicitud
POST
al métodoresourcePolicies.insert
. En el cuerpo de la solicitud, incluye el campoavailabilityDomainCount
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "availabilityDomainCount": DOMAIN_COUNT } }
Reemplaza lo siguiente:
Aplica políticas de posición dispersa
Puedes aplicar una política de posición dispersa a una VM existente o cuando creas VM, plantillas de instancias o MIGs.
Para crear un recurso de Compute Engine que especifique una política de posición dispersa, o aplicar la política de posición dispersa a una VM existente, elige uno de los siguientes métodos:
Aplica una política de posición dispersa a una VM existente
Antes de aplicar una política de posición de distribución a una VM existente, revisa el lo siguiente:
De lo contrario, la aplicación de la política de posición distribuida a la VM fallará. Si la VM ya especifica una política de posición y quieres reemplazarla, luego consulta Reemplaza una política de posición en una VM en su lugar.
Para aplicar una política de posición de distribución a una VM existente, selecciona una de las siguientes opciones: las siguientes opciones:
gcloud
Para aplicar una política de posición distribuida a una VM existente, usa el comando
gcloud compute instances add-resource-policies
con la marca--resource-policies
.gcloud compute instances add-resource-policies VM_NAME \ --resource-policies=POLICY_NAME \ --zone=ZONE
Reemplaza lo siguiente:
REST
Para aplicar una política de posición distribuida a una VM existente, realiza una solicitud
POST
al métodoinstances.addResourcePolicies
. En el cuerpo de la solicitud, incluye el camporesourcePolicies
.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:
Crea una VM con una política de posición dispersa
Solo puedes crear una VM con una política de posición de distribución en una zona dentro del en la misma región que la política de posición.
Para crear una VM que especifique una política de posición distribuida, selecciona una de las opciones las siguientes opciones:
gcloud
Para crear una VM que especifique una política de posición dispersa, usa el comando
gcloud compute instances create
con la marca--resource-policies
.gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME \ --zone=ZONE
Reemplaza lo siguiente:
REST
Para crear una VM que especifique una política de posición distribuida, realiza una solicitud
POST
al métodoinstances.insert
. En el cuerpo de la solicitud, incluye el camporesourcePolicies
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
Reemplaza lo siguiente:
Si quieres obtener más información sobre las opciones de configuración para crear una VM, consulta Crea y, luego, inicia una instancia de VM.
Crea VMs de forma masiva con una política de posición distribuida
Solo puedes crear VMs de forma masiva con una política de posición distribuida en la misma región como política de posición.
Para crear VMs de forma masiva que especifiquen una política de posición distribuida, selecciona una de las opciones las siguientes opciones:
gcloud
Para crear VMs de forma masiva que especifiquen una política de posición distribuida, usa el comando
gcloud compute instances bulk create
con la marca--resource-policies
.Por ejemplo, para crear VMs de forma masiva en una sola zona y especificar un nombre para las VMs, ejecuta el siguiente comando:
gcloud compute instances bulk create \ --count=COUNT \ --machine-type=MACHINE_TYPE \ --name-pattern=NAME_PATTERN \ --resource-policies=POLICY_NAME \ --zone=ZONE
Reemplaza lo siguiente:
REST
Para crear VMs de forma masiva que especifiquen una política de posición distribuida, realiza una solicitud
POST
al métodoinstances.bulkInsert
. En el cuerpo de la solicitud, incluye el camporesourcePolicies
.Por ejemplo, si deseas crear VMs de forma masiva en una sola zona y especificar un patrón de nombre para las VMs, realiza una solicitud
POST
de la siguiente manera:POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": "COUNT", "machineType": "MACHINE_TYPE", "namePattern": "NAME_PATTERN", "instanceProperties": { "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] } }
Reemplaza lo siguiente:
Si necesitas más información sobre las opciones de configuración para crear VMs de forma masiva, consulta Crea VMs de forma masiva.
Crea una plantilla de instancias con una política de posición distribuida
Si deseas crear una plantilla de instancias regional, debes crear la plantilla en la misma región que la política de posición dispersa. De lo contrario, crear la plantilla de instancias falla.
Después de crear una plantilla de instancias, puedes usarla para hacer lo siguiente:
Para crear una plantilla de instancias que especifique una política de posición distribuida, selecciona una de las siguientes opciones:
gcloud
Para crear una plantilla de instancias que especifique una política de posición dispersa, usa el comando
gcloud compute instance-templates create
con la marca--resource-policies
.Por ejemplo, para crear una plantilla de instancias global que especifique una distribución posición, ejecuta el siguiente comando:
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME
Reemplaza lo siguiente:
REST
Para crear una plantilla de instancias que especifique una política de posición de distribuida, realiza una solicitud
POST
a uno de los siguientes métodos:Especifica el campo
resourcePolicies
en el cuerpo de la solicitud.Por ejemplo, para crear una plantilla de instancias global que especifique una política de posición distribuida, realiza una solicitud
POST
de la siguiente manera:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "POLICY_NAME" ] } }
Reemplaza lo siguiente:
Si quieres obtener más información sobre las opciones de configuración para crear una plantilla de instancias, consulta Crea plantillas de instancias.
Aplica una política de posición a las VMs en un MIG
Después de crear una plantilla de instancias que especifique una política de posición dispersa, puedes usar la plantilla para hacer lo siguiente:
Si deseas aplicar una política de posición a un MIG, se recomienda crear o aplicar la política a un MIG regional con la forma dispersa cualquier zona. De esta manera, cada vez que un MIG regional necesita escalar horizontalmente mediante la creación de VM, elige la zona en la que se crearán las VMs según tus cuotas y requisitos de hardware.
Crea un MIG con una política de posición dispersa
Solo puedes crear VMs que especifiquen una política de posición distribuida si las VMs se ubicados en la misma región que la política de posición.
Para crear un MIG con una plantilla de instancias que especifique una posición de distribución de Compute Engine, selecciona una de las siguientes opciones:
gcloud
Para crear un MIG con una plantilla de instancias que especifique una distribución de posición, usa el Comando
gcloud compute instance-groups managed create
.Por ejemplo, para crear un MIG regional con propiedades de VMs predeterminadas y la forma dispersa cualquier zona, ejecuta el siguiente comando:
gcloud compute instance-groups managed create MIG_NAME \ --region=REGION \ --size=SIZE \ --target-distribution-shape=any-single-zone \ --template=INSTANCE_TEMPLATE_NAME
Reemplaza lo siguiente:
REST
Para crear un MIG mediante una plantilla de instancias que especifique una política de posición distribuida, realiza una solicitud
POST
a los métodosinstanceGroupManagers.insert
oregionInstanceGroupManagers.insert
.Por ejemplo, para crear un MIG regional con propiedades de VM predeterminadas y la forma de distribución de cualquier zona, realiza una solicitud
POST
de la siguiente manera:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "name": "MIG_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "targetSize": SIZE, "distributionPolicy": { "targetShape": "ANY_SINGLE_ZONE" } }
Reemplaza lo siguiente:
Para obtener más información sobre las opciones de configuración para crear MIG, consulta Situaciones básicas para crear MIG.
Aplica una política de posición dispersa a una MIG existente
Solo puedes aplicar una política de posición compacta a un MIG existente si el MIG es ubicados en la misma región que la política de posición o, para los MIG zonales, en una zona dentro de la misma región que la política de posición.
Para actualizar un MIG a fin de usar una plantilla de instancias que especifique una posición de distribución de Compute Engine, selecciona una de las siguientes opciones:
gcloud
Para actualizar un MIG para usar una plantilla de instancias que especifique una política de posición dispersa, usa el comando
gcloud compute instance-groups managed rolling-action start-update
.Por ejemplo, para actualizar un MIG regional para usar una plantilla de instancias que especifique una política de posición dispersa y reemplazar las VMs existentes del MIG con VMs nuevas que especifiquen las propiedades de la plantilla, ejecuta el siguiente comando:
gcloud compute instance-groups managed rolling-action start-update MIG_NAME \ --region=REGION \ --type=proactive \ --version=template=INSTANCE_TEMPLATE_NAME
Reemplaza lo siguiente:
REST
Para actualizar un MIG para usar una plantilla de instancias que especifique una política de posición de expansión y aplicar de forma automática las propiedades de la plantilla y la política de posición a las VMs existentes en el MIG, realiza una solicitud
PATCH
a los métodosinstanceGroupManagers.insert
oregionInstanceGroupManagers.insert
.Por ejemplo, para actualizar un MIG regional para usar una plantilla de instancias que especifique una política de posición dispersa y reemplazar las VMs existentes del MIG con VMs nuevas que especifiquen las propiedades de la plantilla, haz la siguiente solicitud
PATCH
:PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "updatePolicy": { "type": "PROACTIVE" } }
Reemplaza lo siguiente:
Si quieres obtener más información sobre las opciones de configuración para actualizar las VMs en un MIG, ver Actualiza y aplica parámetros de configuración nuevos a las VMs en un MIG.
Próximos pasos
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-11-20 (UTC)
-