Share via


Trabajar con sugerencias de selección de ubicación en la máquina virtual Azure Operator Nexus

En este artículo, aprenderá a usar sugerencias para guiar la colocación de máquinas virtuales en el entorno de Azure Operator Nexus. Estas sugerencias de colocación se pueden usar para crear afinidad o antiafinidad entre máquinas virtuales, máquinas sin sistema operativo o bastidores. Use sugerencias de selección de ubicación para asegurarse de que las máquinas virtuales están programadas de la manera deseada en el entorno de Azure Operator Nexus.

Las reglas de afinidad permiten especificar que las máquinas virtuales deben hospedarse en la misma máquina física o bastidor. Por el contrario, las reglas antiafinidad garantizan que las máquinas virtuales se hospeden en diferentes máquinas físicas o bastidores.

Puede aumentar la resistencia general de la aplicación mediante reglas de antiafinidad para distribuir máquinas virtuales entre distintos dominios de error (bastidores, máquinas físicas, etc.). Puede aumentar la rentabilidad de la aplicación mediante reglas de afinidad para empaquetar máquinas virtuales en menos máquinas físicas.

Requisitos previos

Antes de continuar con esta guía paso a paso, asegúrese de que ha completado todos los pasos de la guía de inicio rápido de la máquina virtual Nexus del operador de Azure.

Configuración de sugerencias de selección de ubicación

En esta sección se explica el concepto de sugerencias de selección de ubicación y cómo funciona cada campo de la API, lo que resulta útil al configurar y administrar máquinas virtuales.

{
 "hintType": "Affinity/AntiAffinity",
 "resourceId": "ARM ID of the virtual machine, bare-metal machine, or rack",
 "schedulingExecution": "Hard/Soft",
 "scope": "Rack/Machine"
}

Tipo de sugerencia

El hintType argumento se usa en sugerencias de selección de ubicación para especificar si la sugerencia de selección de ubicación admite afinidad o antiafinidad con los recursos a los que se hace referencia.

El argumento hintType tiene dos valores posibles: Affinity o AntiAffinity.

  • Affinity: si hintType se establece en Affinity, la sugerencia de selección de ubicación se usa para crear una regla de afinidad entre la máquina virtual y los recursos a los que se hace referencia. Como resultado, la máquina virtual se programa en la máquina completa específica, bastidor o cerca de la instancia de máquina virtual como recurso al que se hace referencia.
  • AntiAffinity: si hintType se establece en AntiAffinity, la sugerencia de colocación se usa para crear una regla de antiafinidad entre la máquina virtual y los recursos a los que se hace referencia. Como resultado, la máquina virtual se programa en una máquina sin sistema operativo, un bastidor o una instancia de máquina virtual diferente del recurso al que se hace referencia.

Id. de recurso

El resourceId argumento de las sugerencias de selección de ubicación especifica el objeto de destino en el que se comprueban las sugerencias de selección de ubicación. El objeto de destino puede ser cualquiera de los siguientes.

  • Una máquina virtual: si el objeto de destino es una máquina virtual, la sugerencia de selección de ubicación se comprueba con esa instancia de máquina virtual específica.
  • Un bareMetalMachine: si el objeto de destino es una máquina sin sistema operativo, la sugerencia de colocación se comprueba en esa máquina sin sistema operativo específica.
  • Un rack: si el objeto de destino es un bastidor, la sugerencia de colocación se comprueba en todas las máquinas sin sistema operativo que se ejecutan en ese bastidor.

Importante

El argumento resourceId debe especificarse en forma de identificador de ARM y debe ser un identificador de recurso válido para el objeto de destino. Si el valor de resourceId es incorrecto o no es válido, la sugerencia de selección de ubicación no funcionará correctamente y es posible que se produzca un error en la programación de la máquina virtual.

Ámbito

El scope argumento se usa en sugerencias de selección de ubicación para especificar el ámbito de la afinidad de máquina virtual o la sugerencia de selección de ubicación antiafinidad. El argumento scope solo es aplicable cuando el resourceId argumento tiene como destino una máquina virtual.

El argumento scope tiene dos valores posibles: Machine o Rack.

  • Máquina: si el ámbito se establece en Máquina, la sugerencia de colocación se aplica a la misma máquina sin sistema operativo que la máquina virtual especificada. Por ejemplo, si la sugerencia de colocación especifica que la máquina virtual debe colocarse en la misma máquina sin sistema operativo que la máquina virtual especificada, el ámbito se establecería en Máquina.
  • Rack: si el ámbito se establece en Rack, la sugerencia de colocación se aplica al bastidor al que pertenece la máquina virtual especificada. Por ejemplo, si la sugerencia de colocación especifica que la máquina virtual debe colocarse en el mismo bastidor que la máquina virtual especificada actualmente, el ámbito se establecería en Rack.

Importante

Este argumento no se puede dejar en blanco.

Programación de la ejecución

El schedulingExecution argumento se usa en sugerencias de selección de ubicación para especificar si la sugerencia de colocación es un requisito duro o flexible durante la programación.

El argumento schedulingExecution tiene dos valores posibles: Hard o Soft.

  • Hard: cuando la programaciónExecution se establece en Hard, la sugerencia de colocación se considera un requisito estricto durante la programación. Como resultado, el programador solo coloca la máquina virtual en el recurso especificado en la sugerencia de selección de ubicación. Si no hay ningún recurso disponible que cumpla el requisito difícil, se produce un error en la programación de la máquina virtual.
  • Soft: cuando la programaciónExecution se establece en Soft, la sugerencia de colocación se considera una preferencia durante la programación. Como resultado, el programador intenta colocar la máquina virtual en el recurso especificado en la sugerencia de colocación, pero si no es posible, el programador puede colocar la máquina virtual en un recurso diferente.

Ejemplo de sugerencias de colocación de afinidad de bastidor y antiafinidad

Obtención de los identificadores de bastidor disponibles

  1. Establezca las variables necesarias.

    NEXUS_CLUSTER_NAME=<Operator Nexus cluster name>
    NEXUS_CLUSTER_RG=<Operator Nexus cluster resource group>
    NEXUS_CLUSTER_SUBSCRIPTION="$(az account show -o tsv --query id)"
    NEXUS_CLUSTER_MANAGED_RG="$(az networkcloud cluster show -n $NEXUS_CLUSTER_NAME -g $NEXUS_CLUSTER_RG --query managedResourceGroupConfiguration.name | tr -d '\"')"
    
  2. Obtenga el identificador del bastidor.

    az networkcloud rack list -g $NEXUS_CLUSTER_MANAGED_RG --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query [].id
    
  3. Ejemplo de salida.

    $ az networkcloud rack list -g $NEXUS_CLUSTER_MANAGED_RG --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query [].id    
    [
      "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<network-aggregation-rack>",
      "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-1>",
      "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>",
      "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-3>",
      "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-4>",
      "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-n>"
    ]
    

Colocar una máquina virtual en un bastidor específico

En este ejemplo, se exploran los conceptos de afinidades suaves y duras, especialmente sobre la colocación de máquinas virtuales en bastidores específicos.

Nota:

En este y en los ejemplos siguientes, solo se proporcionan variaciones del --placement-hints argumento . Para la creación real de la máquina virtual con sugerencias de selección de ubicación, debe agregarla --placement-hints a la CLI que se muestra en la guía de inicio rápido de la máquina virtual.

Programación estricta (afinidad de bastidor)

Esta sugerencia de colocación usa hintType Affinity para asegurarse de que la máquina virtual solo está programada en el bastidor especificado con el identificador de bastidor especificado. Si el bastidor no está disponible o carece de capacidad, se produce un error en la programación. Esta sugerencia de colocación puede ser útil en situaciones en las que desea asegurarse de que determinadas máquinas virtuales se colocan en bastidores específicos por motivos de rendimiento, seguridad u otros motivos.

--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>","schedulingExecution":"Hard","scope":"Rack"}]'

Nota:

La configuración de sugerencias de colocación actual con affinity hintType garantiza que la máquina virtual se programe exclusivamente en el bastidor especificado con el identificador de bastidor proporcionado. Sin embargo, es importante tener en cuenta que no se puede especificar la afinidad de bastidor para más de un bastidor con Hard ejecución de programación. Esta limitación puede influir en la estrategia de implementación, especialmente si está pensando en colocar máquinas virtuales en varios bastidores y permitir que el programador seleccione entre ellas.

Programación preferida (afinidad de bastidor)

Esta sugerencia de colocación utiliza hintType Affinity para establecer una regla de afinidad entre la máquina virtual y el bastidor designado. También emplea una Soft programaciónExecution para permitir que la máquina virtual se coloque en un bastidor alternativo en caso de que el bastidor especificado no sea accesible o no tenga capacidad.

--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>","schedulingExecution":"Soft","scope":"Rack"}]'

Impedir que la máquina virtual se coloque en un bastidor específico

En este ejemplo, se exploran los conceptos de antiafinidad suave y dura, especialmente sobre la prevención de que las máquinas virtuales se coloquen en bastidores específicos.

Programación estricta (antiafinidad de bastidor)

Esta sugerencia de colocación usa hintType AntiAffinity y Hard schedulingExecution para evitar que la máquina virtual se programe en el bastidor especificado identificado por el identificador del bastidor. En esta configuración, el programador sigue estrictamente estas sugerencias de colocación. Sin embargo, si el identificador del bastidor es incorrecto o no hay suficiente capacidad en otros bastidores, es posible que se produzca un error en la selección de ubicación de la máquina virtual debido a la aplicación estricta de la Hard regla de programación.

--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>","schedulingExecution":"Hard","scope":"Rack"}]'

Programación preferida (antiafinidad de bastidor)

Esta sugerencia de colocación usa hintType AntiAffinity con la intención de evitar un bastidor específico para la colocación de la máquina virtual. Sin embargo, es importante tener en cuenta que, a pesar de esta preferencia, la máquina virtual todavía podría colocarse en este bastidor no deseado si otros bastidores no tienen suficiente capacidad. Esta colocación se produce porque la programaciónExecution se establece Soften , lo que permite que la máquina virtual se admita en el bastidor evitado inicialmente si otras opciones no son factibles.

--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>","schedulingExecution":"Soft","scope":"Rack"}]'

Ejemplo de afinidad de máquina sin sistema operativo y sugerencias de selección de ubicación antiafinidad

Obtener los identificadores de máquina sin sistema operativo disponibles

  1. Establezca las variables necesarias.

    NEXUS_CLUSTER_NAME=<Operator Nexus cluster name>
    NEXUS_CLUSTER_RG=<Operator Nexus cluster resource group>
    NEXUS_CLUSTER_SUBSCRIPTION="$(az account show -o tsv --query id)"
    NEXUS_CLUSTER_MANAGED_RG="$(az networkcloud cluster show -n $NEXUS_CLUSTER_NAME -g $NEXUS_CLUSTER_RG --query managedResourceGroupConfiguration.name | tr -d '\"')"
    
  2. Obtenga el identificador del bastidor.

    az networkcloud baremetalmachine list -g $NEXUS_CLUSTER_RG --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query "sort_by([].{ID: id, RackID: rackId}, &RackID)"
    
  3. Ejemplo de salida.

    $ az networkcloud baremetalmachine list -g $NEXUS_CLUSTER_RG --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query "sort_by([].{ID: id, RackID: rackId}, &RackID)"
    [
      {
        "ID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>",
        "RackID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-1>"
      },
      {
        "ID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>",
        "RackID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>"
      },
      {
        "ID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>",
        "RackID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-3>"
      },
      {
        "ID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>",
        "RackID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-4>"
      },
      {
        "ID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>",
        "RackID": "/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-n>"
      }
    ]
    

Colocar una máquina virtual en una máquina sin sistema operativo específica

En este ejemplo, se exploran los conceptos de afinidades suaves y duras, especialmente sobre la colocación de máquinas virtuales en máquinas sin sistema operativo específicas.

Programación estricta (afinidad de máquina sin sistema operativo)

Esta sugerencia de colocación usa hintType Affinity para asegurarse de que la máquina virtual solo está programada en la máquina completa especificada con el identificador de máquina sin sistema operativo especificado. Si la máquina sin sistema operativo no está disponible o carece de capacidad, se produce un error en la programación. Esta sugerencia de colocación puede ser útil en situaciones en las que desea asegurarse de que determinadas máquinas virtuales se colocan en una máquina completa específica por motivos de rendimiento, seguridad u otros motivos.

--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>","schedulingExecution":"Hard","scope":"Machine"}]'

Programación preferida (afinidad de máquina sin sistema operativo)

Esta sugerencia de colocación utiliza hintType Affinity para establecer una regla de afinidad entre la máquina virtual y la máquina sin sistema operativo designada. También emplea una Soft programaciónExecution para permitir que la máquina virtual se coloque en una máquina sin sistema operativo alternativa en caso de que la máquina sin sistema operativo especificada no sea accesible o no tenga capacidad.

--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>","schedulingExecution":"Soft","scope":"Machine"}]'

Impedir que la máquina virtual se coloque en una máquina sin sistema operativo específica

En este ejemplo, se exploran los conceptos de antiafinidad suave y dura, especialmente sobre la prevención de que las máquinas virtuales se coloquen en máquinas sin sistema operativo específicas.

Programación estricta (antiafinidad de máquinas sin sistema operativo)

Esta sugerencia de colocación usa hintType AntiAffinity y Hard schedulingExecution para evitar que la máquina virtual se programe en la máquina sin sistema operativo especificada identificada por el identificador de máquina sin sistema operativo. En esta configuración, el programador sigue estrictamente estas sugerencias de colocación. Sin embargo, si el identificador de máquina sin sistema operativo es incorrecto o no hay suficiente capacidad en otras máquinas sin sistema operativo, es posible que se produzca un error en la colocación de la máquina virtual debido a la aplicación estricta de la Hard regla de programación.

--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>","schedulingExecution":"Hard","scope":"Machine"}]'

Programación preferida (antiafinidad de máquinas sin sistema operativo)

Esta sugerencia de colocación usa hintType AntiAffinity con la intención de evitar una máquina sin sistema operativo específica para la colocación de la máquina virtual. Sin embargo, es importante tener en cuenta que, a pesar de esta preferencia, la máquina virtual todavía podría colocarse en esta máquina sin sistema operativo si otras máquinas sin sistema operativo no tienen suficiente capacidad. Esta colocación se produce porque la programaciónExecution se establece Soften , lo que permite que la máquina virtual se acote en la máquina sin sistema operativo inicialmente evitada si otras opciones no son factibles.

--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>","schedulingExecution":"Soft","scope":"Machine"}]'

Ejemplo de sugerencias de ubicación de afinidad de máquina virtual y antiafinidad

Obtención de los identificadores de máquina virtual disponibles

  1. Establezca las variables necesarias.

    RESOURCE_GROUP=<Target VM resource group>
    NEXUS_CLUSTER_SUBSCRIPTION="$(az account show -o tsv --query id)"
    
  2. Obtenga el identificador de la máquina virtual.

    az networkcloud virtualmachine list -g $RESOURCE_GROUP --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query [].id
    
  3. Ejemplo de salida.

    $ az networkcloud virtualmachine list -g $RESOURCE_GROUP --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query [].id
    [
      "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.NetworkCloud/virtualMachines/<vm-1>",
      "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.NetworkCloud/virtualMachines/<vm-2>",
      "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.NetworkCloud/virtualMachines/<vm-3>",
      "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.NetworkCloud/virtualMachines/<vm-n>"
    ]
    

Colocar una máquina virtual cerca de una máquina virtual específica

En esta sección se explora la ubicación de las máquinas virtuales cerca de determinadas máquinas virtuales, lo que resalta el papel importante del parámetro en la scope configuración de sugerencias de selección de ubicación. El programador, a través del ámbito definido, dirige las ubicaciones de máquina virtual en la misma máquina sin sistema operativo o dentro del mismo bastidor que el resourceId de máquina virtual al que se hace referencia. Es importante tener en cuenta que, aunque los ejemplos proporcionados aquí muestran la ejecución de la Hard programación, puede usar Soft la programación según sea necesario, en función de su caso de uso específico.

Colocar máquinas virtuales en una misma máquina sin sistema operativo (afinidad de máquina virtual)

En este ejemplo, especificando Affinity como el tipo de sugerencia y Machine como ámbito, la configuración da como resultado que la máquina virtual se coloque en la misma máquina sin sistema operativo que la máquina virtual identificada por el identificador de recurso especificado. Como resultado, la nueva máquina virtual comparte la misma máquina sin sistema operativo que la máquina virtual a la que se hace referencia, lo que conduce a latencias potencialmente inferiores entre máquinas virtuales y un rendimiento mejorado.

--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.NetworkCloud/virtualMachines/<vm-1>","schedulingExecution":"Hard","scope":"Machine"}]'

Colocar máquinas virtuales en un mismo bastidor (afinidad de máquina virtual)

En este ejemplo, la configuración con Affinity como tipo de sugerencia y Rack como ámbito, conduce a la colocación de máquinas virtuales dentro del mismo bastidor que la máquina virtual identificada por el identificador de recurso especificado. Como resultado, las nuevas máquinas virtuales se colocan en proximidad física a la máquina virtual de referencia, lo que podría reducir la latencia de red y mejorar el rendimiento.

--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.NetworkCloud/virtualMachines/<vm-1>","schedulingExecution":"Hard","scope":"Rack"}]'

Impedir que las máquinas virtuales se coloquen cerca de una máquina virtual específica (antiafinidad de máquina virtual)

En esta sección, el AntiAffinity tipo de sugerencia se usa para evitar que las máquinas virtuales se coloquen cerca de otras máquinas virtuales. El scope parámetro decide si esta separación se produce en el nivel de máquina o en el nivel de bastidor. Esta configuración es útil cuando las máquinas virtuales deben distribuirse entre hardware diferente para evitar errores o problemas de rendimiento.

Impedir que las máquinas virtuales se coloquen en una misma máquina sin sistema operativo (antiafinidad de máquina virtual)

En este ejemplo, al establecer el ámbito Machineen , impide que las máquinas virtuales se coloquen en la misma máquina sin sistema operativo. Este enfoque aumenta la tolerancia a errores al reducir el riesgo de que el error de una sola máquina afecte a la carga de trabajo, lo que aumenta la solidez general.

--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/virtualMachines/<vm-2>","schedulingExecution":"Hard","scope":"Machine"}]'

Impedir que las máquinas virtuales se coloquen en un mismo bastidor (antiafinidad de máquina virtual)

En este ejemplo, establecer el ámbito en Rack garantiza que las máquinas virtuales no se coloquen en el mismo bastidor. Esta configuración ayuda a mejorar la tolerancia a errores al garantizar que un error de un único bastidor no afecte a la carga de trabajo.

--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/virtualMachines/<vm-2>","schedulingExecution":"Hard","scope":"Rack"}]'

Pasos siguientes

Aunque los ejemplos proporcionados en este artículo muestran algunos casos de uso comunes, la API se puede usar para implementar una amplia gama de escenarios de selección de ubicación, lo que lo convierte en una solución flexible y adaptable para administrar la selección de ubicación de máquinas virtuales. Ajuste los scopeparámetros , schedulingExecutiony hintType en diferentes combinaciones para comprender cómo afectan a las ubicaciones de las máquinas virtuales. El uso adecuado de sugerencias de selección de ubicación puede mejorar la disponibilidad y resistencia de las aplicaciones y servicios que se ejecutan en la instancia de Nexus del operador de Azure.