Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете, как использовать указания для размещения виртуальных машин в среде Оператора 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
Аргумент scope используется в подсказках размещения, чтобы указать область действия подсказки размещения сходства или антисходства виртуальной машины. Аргумент области применяется только в том случае, если resourceId аргумент предназначен для виртуальной машины.
Аргумент области имеет два возможных значения: Machine или Rack.
- Если область действия задана как Machine, указание на размещение применяется к той же физической машине, что и указанная виртуальная машина. Например, если указание размещения указывает, что виртуальная машина должна размещаться на том же компьютере без операционной системы, что и указанная виртуальная машина, область будет иметь значение Machine.
- Стойка: если область задана как Стойка, указание размещения применяется к стойке, к которой принадлежит указанная виртуальная машина. Например, если указание размещения указывает, что виртуальная машина должна размещаться на той же стойке, что указанная виртуальная машина в настоящее время размещена, область будет иметь значение Rack.
Это важно
Этот аргумент нельзя оставить пустым.
Планирование выполнения
Аргумент schedulingExecution используется в указаниях размещения, чтобы указать, является ли указание размещения жестким или мягким требованием во время планирования.
Аргумент schedulingExecution имеет два возможных значения: Hard или Soft.
- Если для механизма планирования установлено значение Hard, указание на размещение считается строгим требованием во время планирования. В результате планировщик размещает виртуальную машину только на специфицированном ресурсе, указанном в примечании по размещению. Если не существует ресурсов, удовлетворяющих жесткому требованию, планирование виртуальной машины завершается сбоем.
- Soft: если для параметра schedulingExecution задано значение Soft, указание на размещение учитывается как предпочтение во время планирования. В результате планировщик пытается разместить виртуальную машину на указанном ресурсе, указанном в указании размещения, но если это невозможно, планировщик может разместить виртуальную машину на другом ресурсе.
Пример подсказок по размещению аффинности и анти-аффинности стоек
Получите доступные идентификаторы стоек
Задайте необходимые переменные.
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 '\"')"Получите идентификатор стойки.
az networkcloud rack list -g $NEXUS_CLUSTER_MANAGED_RG --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query [].idПример выходных данных.
$ 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 в интерфейс командной строки, показанный в руководстве по краткому руководству по виртуальной машине.
Строгое планирование (сходство стоек)
Это указание размещения использует тип подсказки Affinity, чтобы убедиться, что виртуальная машина может быть запланирована только на указанной стойке с указанным идентификатором стойки. Если стойка недоступна или не хватает емкости, планирование завершается сбоем. Это указание размещения может оказаться полезным в ситуациях, когда необходимо убедиться, что определенные виртуальные машины размещены на определенных стойких для обеспечения производительности, безопасности или других причин.
--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>","schedulingExecution":"Hard","scope":"Rack"}]'
Замечание
Текущая конфигурация подсказки размещения с типом подсказки Affinity гарантирует, что виртуальная машина назначена исключительно на указанную стойку с данным идентификатором стойки. Однако важно отметить, что привязка к стойке не может быть указана для более чем одной стойки с Hard планированием выполнения. Это ограничение может повлиять на стратегию развертывания, особенно если вы рассматриваете возможность размещения виртуальных машин на нескольких стойках и позволяет планировщику выбирать из них.
Предпочтительное планирование (сходство стоек)
Это указание размещения использует подсказку типа Affinity для установления правила закрепления между виртуальной машиной и указанной стойкой. Она также использует Soft планировщик выполнения, чтобы виртуальная машина была помещена на альтернативную стойку, если указанная стойка недоступна или её ёмкость недостаточна.
--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>","schedulingExecution":"Soft","scope":"Rack"}]'
Запрет размещения виртуальной машины на определенной стойке
В этом примере мы исследуем понятия мягких и жестких анти-аффинитетов, чтобы избежать размещения виртуальных машин на определенных стойках.
Строгое планирование (защита от сходства стойки)
Это указание о размещении использует как тип подсказки AntiAffinity, так и планирование выполнения Hard, чтобы предотвратить планирование виртуальной машины на стойке, идентифицированной по ID стойки. В этой конфигурации планировщик строго следует этим указаниям размещения. Однако если идентификатор стойки неверный или недостаточно ресурсов на других стойках, размещение виртуальной машины может завершиться ошибкой из-за строгого Hard применения правила планирования.
--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>","schedulingExecution":"Hard","scope":"Rack"}]'
Предпочтительное планирование (антимиграция стойки)
Это указание размещения использует подсказку тип AntiAffinity с целью избежать использования определенной стойки для размещения виртуальной машины. Однако важно отметить, что, несмотря на это предпочтение, виртуальная машина по-прежнему может быть помещена на эту ненудимую стойку, если другие стойки не имеют достаточной емкости. Это размещение происходит из-за того, что для schedulingExecution задано значение Soft, что позволяет виртуальной машине размещаться на избегаемой стойке, если другие варианты невозможны.
--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/racks/<compute-rack-2>","schedulingExecution":"Soft","scope":"Rack"}]'
Пример подсказок по размещению машин на голом железе с учетом аффинитета и антиаффинитета
Получение доступных идентификаторов компьютеров без операционной системы
Задайте необходимые переменные.
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 '\"')"Получите идентификатор стойки.
az networkcloud baremetalmachine list -g $NEXUS_CLUSTER_RG --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query "sort_by([].{ID: id, RackID: rackId}, &RackID)"Пример выходных данных.
$ 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>" } ]
Разместить виртуальную машину на конкретном bare-metal сервере
В этом примере мы рассмотрим понятия мягких и жестких привязок, в особенности при размещении виртуальных машин на определенных физических серверах.
Строгое планирование (привязка к физическим машинам)
Это указание размещения использует тип подсказки Affinity, чтобы гарантировать, что виртуальная машина запланирована только на указанной машине без виртуализации с заданным идентификатором машины без виртуализации. Если компьютер без операционной системы недоступен или не имеет емкости, планирование завершается сбоем. Это указание размещения может оказаться полезным в ситуациях, когда необходимо убедиться, что определенные виртуальные машины размещаются на определенной физической машине для обеспечения производительности, безопасности или других причин.
--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>","schedulingExecution":"Hard","scope":"Machine"}]'
Предпочтительное планирование (сходство на уровне аппаратного обеспечения)
Это указание размещения использует hintType Affinity для установления правила соответствия между виртуальной машиной и назначенной физической машиной. Она также использует Soft планирование выполнения, чтобы позволить размещение виртуальной машины на альтернативной физической машине в случае, если указанная физическая машина недоступна или не хватает ресурсов.
--placement-hints '[{"hintType":"Affinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>","schedulingExecution":"Soft","scope":"Machine"}]'
Запрет размещения виртуальной машины на определенном физическом сервере
В этом примере мы рассмотрим понятия мягкой и жесткой антиаффинности, в частности о предотвращении размещения виртуальных машин на определенных физических машинах.
Строгое планирование (компьютер без операционной системы, антиконфинитет)
Это указание размещения использует тип подсказки AntiAffinity и выполнение планирования Hard, чтобы предотвратить назначение виртуальной машины на указанную bare-metal машину, определяемую идентификатором bare-metal машины. В этой конфигурации планировщик строго следует этим указаниям размещения. Однако если идентификатор физической машины неверен или на других физических машинах недостаточно ресурсов, размещение виртуальной машины может завершиться неудачно из-за строгого Hard применения правила планирования.
--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>","schedulingExecution":"Hard","scope":"Machine"}]'
Предпочтительное планирование (анти-аффинность физических машин)
Это указание размещения использует подсказку типа AntiAffinity с намерением избежать размещения виртуальной машины на конкретной физической машине без виртуализации. Однако важно отметить, что, несмотря на это предпочтение, виртуальная машина по-прежнему может быть помещена на эту неизбежную машину без операционной системы, если другие компьютеры без операционной системы не имеют достаточной емкости. Это размещение происходит из-за того, что задано Softзначение schedulingExecution, что позволяет разместить виртуальную машину на первоначальном компьютере без операционной системы, если другие варианты не являются возможными.
--placement-hints '[{"hintType":"AntiAffinity","resourceId":"/subscriptions/<subscription>/resourceGroups/<managed-resource-group>/providers/Microsoft.NetworkCloud/bareMetalMachines/<machine-name>","schedulingExecution":"Soft","scope":"Machine"}]'
Пример рекомендаций по размещению для сходства и антисходства виртуальных машин
Получение доступных идентификаторов виртуальных машин
Задайте необходимые переменные.
RESOURCE_GROUP=<Target VM resource group> NEXUS_CLUSTER_SUBSCRIPTION="$(az account show -o tsv --query id)"Получите идентификатор виртуальной машины.
az networkcloud virtualmachine list -g $RESOURCE_GROUP --subscription $NEXUS_CLUSTER_SUBSCRIPTION --query [].idПример выходных данных.
$ 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 как область действия, конфигурация приводит к размещению виртуальной машины на том же "bare-metal" сервере, что и виртуальная машина, определяемая заданным идентификатором ресурса. В результате новая виртуальная машина использует тот же компьютер без операционной системы, что и ссылаемая виртуальная машина, что приводит к снижению задержки между виртуальными машинами и повышению производительности.
--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 можно использовать для реализации широкого спектра сценариев размещения, что делает его гибким и адаптируемым решением для управления размещением виртуальных машин. Настройте параметры scope, schedulingExecution и hintType в разных сочетаниях, чтобы понять, как они влияют на размещение виртуальных машин. Правильное использование подсказок размещения может повысить доступность и устойчивость приложений и служб, работающих в экземпляре Azure Operator Nexus.