Работа с указаниями по размещению в виртуальной машине Оператора Azure Nexus

В этой статье вы узнаете, как использовать указания для размещения виртуальных машин в среде Оператора Azure Nexus. Эти указания по размещению можно использовать для создания сходства или защиты от сходства между виртуальными машинами, компьютерами без операционной системы или стойкими. Используйте указания по размещению, чтобы убедиться, что виртуальные машины запланированы соответствующим образом в среде Оператора Azure Nexus.

Правила сходства позволяют указать, что виртуальные машины должны размещаться на одной физической машине или стойке. И наоборот, правила защиты от сходства обеспечивают размещение виртуальных машин на разных физических машинах или стойких.

Вы можете повысить общую устойчивость приложения с помощью правил защиты от сходства для распространения виртуальных машин по разным доменам сбоев (стойки, физические машины и т. д.). Вы можете повысить экономичность приложения с помощью правил сходства для упаковки виртуальных машин на меньшее количество физических машин.

Необходимые компоненты

Прежде чем продолжить работу с этим руководством, убедитесь, что вы выполнили все действия, описанные в кратком руководстве по работе с виртуальными машинами Оператора Azure Nexus.

Настройка подсказок размещения

В этом разделе описывается концепция подсказок размещения и принцип работы каждого поля в API, что полезно при настройке виртуальных машин и управлении ими.

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

Тип подсказки

Аргумент hintType используется в указаниях размещения, чтобы указать, поддерживает ли указание размещения сходство или анти-сходство с указанными ресурсами.

Аргумент hintType имеет два возможных значения: Affinity или AntiAffinity.

  • Сходство. Если для параметра hintType задано значение Affinity, то для создания правила сходства между виртуальной машиной и ссылочными ресурсами используется указание размещения. В результате виртуальная машина планируется на определенном компьютере без операционной системы, стойке или близко к экземпляру виртуальной машины в качестве указанного ресурса.
  • AntiAffinity: если для параметра HintType задано значение AntiAffinity, то для создания правила защиты от сходства между виртуальной машиной и ссылочными ресурсами используется указание размещения. В результате виртуальная машина планируется на другом компьютере без операционной системы, стойке или экземпляре виртуальной машины из указанного ресурса.

ИД ресурса

Аргумент resourceId в подсказках размещения указывает целевой объект, для которого проверка указания размещения. Целевой объект может быть любым из следующих.

  • Виртуальная машина: если целевой объект является виртуальной машиной, указание размещения проверка для конкретного экземпляра виртуальной машины.
  • BareMetalMachine: если целевой объект является компьютером без операционной системы, указание размещения проверка против конкретной машины без операционной системы.
  • Стойка: если целевой объект является стойкой, указание размещения проверка против всех компьютеров без операционной системы, работающих на этой стойке.

Важно!

Аргумент resourceId должен быть указан в виде идентификатора ARM, и он должен быть допустимым идентификатором ресурса для целевого объекта. Если идентификатор ресурса неверный или недопустимый, указание размещения не будет работать правильно, а планирование виртуальной машины может завершиться ошибкой.

Область

Аргумент scope используется в подсказках размещения, чтобы указать область сходства виртуальной машины или подсказки размещения сходства. Аргумент область применяется только в том случае, если resourceId аргумент предназначен для виртуальной машины.

Аргумент область имеет два возможных значения: Machine или Rack.

  • Компьютер. Если для область задано значение Machine, указание размещения применяется к той же виртуальной машине без операционной системы, что и указанная виртуальная машина. Например, если указание размещения указывает, что виртуальная машина должна размещаться на том же компьютере без операционной системы, что и указанная виртуальная машина, область будет иметь значение Machine.
  • Стойка: если для область задано значение Rack, указание размещения применяется к стойке, к которой принадлежит указанная виртуальная машина. Например, если указание размещения указывает, что виртуальная машина должна размещаться на той же стойке, что и указанная виртуальная машина, область будет иметь значение Rack.

Важно!

Этот аргумент нельзя оставить пустым.

Планирование выполнения

Аргумент schedulingExecution используется в указаниях размещения, чтобы указать, является ли указание размещения жестким или мягким требованием во время планирования.

Аргумент schedulingExecution имеет два возможных значения: Hard или Soft.

  • Трудно. Если для расписания Задано значение Hard, указание размещения считается строгим требованием во время планирования. В результате планировщик помещает виртуальную машину только в указанный ресурс, указанный в указании размещения. Если не существует ресурсов, удовлетворяющих жесткому требованию, планирование виртуальной машины завершается сбоем.
  • Soft: если для параметра schedulingExecution задано значение Soft, указание размещения считается предпочтениями во время планирования. В результате планировщик пытается разместить виртуальную машину на указанном ресурсе, указанном в указании размещения, но если это невозможно, планировщик может разместить виртуальную машину на другом ресурсе.

Пример сходства стоек и подсказок по размещению сходства

Получение доступных идентификаторов стоек

  1. Задайте необходимые переменные.

    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. Получите идентификатор стойки.

    az networkcloud rack list -g $NEXUS_CLUSTER_MANAGED_RG --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query [].id
    
  3. Пример выходных данных.

    $ 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>"
    ]
    

Размещение виртуальной машины на определенной стойке

В этом примере мы рассмотрим понятия мягких и жестких сопоставлений, особенно о размещении виртуальных машин на определенных стойках.

Примечание.

В этом и следующих примерах предоставляются только варианты аргумента --placement-hints . Для фактического создания виртуальной машины с указаниями по размещению необходимо добавить --placement-hints в интерфейс командной строки, показанный в руководстве по краткому руководству по виртуальной машине.

Строгое планирование (сходство стоек)

Это указание размещения использует подсказкуType Affinity , чтобы убедиться, что виртуальная машина запланирована только на указанной стойке с указанным идентификатором стойки. Если стойка недоступна или не хватает емкости, планирование завершается сбоем. Это указание размещения может оказаться полезным в ситуациях, когда необходимо убедиться, что определенные виртуальные машины размещены на определенных стойких для обеспечения производительности, безопасности или других причин.

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

Примечание.

Текущая конфигурация указания размещения с указанием affinityType гарантирует, что виртуальная машина запланирована исключительно на указанной стойке с указанным идентификатором стойки. Однако важно отметить, что сопоставление стоек невозможно указать для нескольких стоек с Hard планированием выполнения. Это ограничение может повлиять на стратегию развертывания, особенно если вы рассматриваете возможность размещения виртуальных машин на нескольких стойках и позволяет планировщику выбирать из них.

Предпочтительное планирование (сходство стоек)

Это указание размещения использует подсказкуType Affinity для установления правила сходства между виртуальной машиной и указанной стойкой. Она также использует Soft планировщикExecution, чтобы виртуальная машина была помещена на альтернативную стойку в случае, если указанная стойка недоступна или не хватает емкости.

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

Запрет размещения виртуальной машины на определенной стойке

В этом примере мы рассмотрим понятия мягкой и жесткой защиты от сходства, особенно о предотвращении размещения виртуальных машин на определенных стойких.

Строгое планирование (защита от сходства стойки)

Это указание размещения использует подсказкуType AntiAffinity и Hard планированиеExecution, чтобы предотвратить планирование виртуальной машины на указанной стойке, определяемой идентификатором стойки. В этой конфигурации планировщик строго следует этим указаниям размещения. Однако если идентификатор стойки неверный или недостаточно емкости на других стойках, размещение виртуальной машины может завершиться ошибкой из-за строгого Hard применения правила планирования.

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

Предпочтительное планирование (защита от сходства стойки)

Это указание размещения использует подсказкуType AntiAffinity с намерением избежать определенной стойки для размещения виртуальной машины. Однако важно отметить, что, несмотря на это предпочтение, виртуальная машина по-прежнему может быть помещена на эту ненудимую стойку, если другие стойки не имеют достаточной емкости. Это размещение происходит из-за того, что для расписанияExecution задано Softзначение , что позволяет виртуальной машине размещаться на первоначальной стойке, если другие варианты не являются возможными.

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

Пример сходства компьютеров без операционной системы и подсказок по размещению сходства

Получение доступных идентификаторов компьютеров без операционной системы

  1. Задайте необходимые переменные.

    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. Получите идентификатор стойки.

    az networkcloud baremetalmachine list -g $NEXUS_CLUSTER_RG --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query "sort_by([].{ID: id, RackID: rackId}, &RackID)"
    
  3. Пример выходных данных.

    $ 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>"
      }
    ]
    

Размещение виртуальной машины на определенном компьютере без операционной системы

В этом примере мы рассмотрим понятия мягких и жестких сопоставлений, особенно о размещении виртуальных машин на определенных компьютерах без операционной системы.

Строгое планирование (сходство компьютеров без операционной системы)

Это указание размещения использует подсказкуType Affinity , чтобы убедиться, что виртуальная машина запланирована только на указанном компьютере без операционной системы с заданным идентификатором компьютера без операционной системы. Если компьютер без операционной системы недоступен или не имеет емкости, планирование завершается сбоем. Это указание размещения может оказаться полезным в ситуациях, когда необходимо убедиться, что определенные виртуальные машины размещаются на определенной виртуальной машине без операционной системы для обеспечения производительности, безопасности или других причин.

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

Предпочтительное планирование (сходство компьютеров без операционной системы)

Это указание размещения использует подсказкуType Affinity для установления правила сходства между виртуальной машиной и назначенной машиной без операционной системы. Она также использует Soft планировщикExecution, чтобы позволить виртуальной машине размещаться на альтернативном компьютере без операционной системы в случае, если указанный компьютер без операционной системы недоступен или не хватает емкости.

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

Запрет размещения виртуальной машины на определенном компьютере без операционной системы

В этом примере мы рассмотрим понятия мягкой и жесткой защиты от сходства, особенно о предотвращении размещения виртуальных машин на определенных компьютерах без операционной системы.

Строгое планирование (компьютер без операционной системы, антиконфинитет)

Это указание размещения использует подсказкуType AntiAffinity и Hard планированиеExecution, чтобы предотвратить планирование виртуальной машины на указанном компьютере без операционной системы, определяемом идентификатором компьютера без операционной системы. В этой конфигурации планировщик строго следует этим указаниям размещения. Однако если идентификатор компьютера без операционной системы неверный или на других компьютерах без операционной системы недостаточно емкости, размещение виртуальной машины может завершиться ошибкой из-за строгого Hard применения правила планирования.

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

Предпочтительное планирование (компьютер без сходства)

Это указание размещения использует подсказкуType AntiAffinity с намерением избежать конкретной виртуальной машины без операционной системы для размещения виртуальной машины. Однако важно отметить, что, несмотря на это предпочтение, виртуальная машина по-прежнему может быть помещена на эту неизбежную машину без операционной системы, если другие компьютеры без операционной системы не имеют достаточной емкости. Это размещение происходит из-за того, что задано Softзначение schedulingExecution, что позволяет разместить виртуальную машину на первоначальном компьютере без операционной системы, если другие варианты не являются возможными.

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

Пример сходства виртуальной машины с сопоставлением и указаниями по размещению сходства виртуальных машин

Получение доступных идентификаторов виртуальных машин

  1. Задайте необходимые переменные.

    RESOURCE_GROUP=<Target VM resource group>
    NEXUS_CLUSTER_SUBSCRIPTION="$(az account show -o tsv --query id)"
    
  2. Получите идентификатор виртуальной машины.

    az networkcloud virtualmachine list -g $RESOURCE_GROUP --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query [].id
    
  3. Пример выходных данных.

    $ 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>"
    ]
    

Размещение виртуальной машины рядом с определенной виртуальной машиной

В этом разделе рассматривается размещение виртуальных машин рядом с определенными виртуальными машинами, подчеркивая важную роль scope параметра в конфигурации подсказок размещения. Планировщик через определенный область направляет размещение виртуальных машин на том же компьютере без операционной системы или в той же стойке, что и указанный ресурс виртуальной машины. Важно отметить, что хотя приведенные здесь примеры иллюстрируют Hard выполнение планирования, вы можете использовать Soft планирование по мере необходимости в зависимости от конкретного варианта использования.

Размещение виртуальных машин на одной виртуальной машине (сходство виртуальных машин)

В этом примере, указав Affinity тип подсказки и как область, конфигурация приводит к тому, что конфигурация помещается на тот же компьютер без операционной системы, что и Machine виртуальная машина, определяемая указанным идентификатором ресурса. В результате новая виртуальная машина использует тот же компьютер без операционной системы, что и ссылаемая виртуальная машина, что приводит к снижению задержки между виртуальными машинами и повышению производительности.

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

Размещение виртуальных машин в одной стойке (сходство виртуальных машин)

В этом примере конфигурация с Affinity типом указания и как область приводит к размещению виртуальных машин в той же стойке, что и Rack виртуальная машина, определяемая указанным идентификатором ресурса. В результате новые виртуальные машины размещаются в физическом расположении к эталонной виртуальной машине, что может снизить задержку сети и повысить производительность.

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

Запрет размещения виртуальных машин рядом с определенной виртуальной машиной (защита от сопоставления виртуальных машин)

В этом разделе AntiAffinity тип подсказки используется для предотвращения размещения виртуальных машин рядом с некоторыми другими виртуальными машинами. Параметр scope решает, происходит ли это разделение на уровне компьютера или на уровне стойки. Эта конфигурация полезна, если виртуальные машины должны распространяться по разным оборудованию, чтобы избежать сбоев или проблем с производительностью.

Запрет размещения виртуальных машин на одной виртуальной машине без операционной системы (защита от сходства виртуальных машин)

В этом примере при установке область Machineне позволяет размещать виртуальные машины на том же компьютере без операционной системы. Такой подход повышает отказоустойчивость, уменьшая риск сбоя одного компьютера, влияющего на рабочую нагрузку, поэтому повышает общую надежность.

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

Запрет размещения виртуальных машин в одной стойке (защита от сопоставления виртуальных машин)

В этом примере настройте область, чтобы Rack гарантировать, что виртуальные машины не помещаются в одну стойку. Эта конфигурация помогает повысить отказоустойчивость, гарантируя сбой одной стойки не влияет на рабочую нагрузку.

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

Следующие шаги

Хотя примеры, приведенные в этой статье, демонстрируют некоторые распространенные варианты использования, API можно использовать для реализации широкого спектра сценариев размещения, что делает его гибким и адаптируемым решением для управления размещением виртуальных машин. scopeschedulingExecutionНастройте параметры и hintType параметры в разных сочетаниях, чтобы понять, как они влияют на размещение виртуальных машин. Правильное использование подсказок размещения может повысить доступность и устойчивость приложений и служб, работающих в экземпляре Оператора Azure Nexus.