Часто задаваемые вопросы о Azure Масштабируемые наборы виртуальных машин

Получите ответы на часто задаваемые вопросы о Масштабируемые наборы виртуальных машин в Azure.

Наиболее часто задаваемые вопросы о масштабируемых наборах

Сколько виртуальных машин может входить в масштабируемый набор?

В масштабируемый набор может входить от 0 до 1000 виртуальных машин на базе образов платформы или от 0 до 600 виртуальных машин на базе пользовательских образов.

Поддерживаются ли диски данных в масштабируемых наборах?

Да. Масштабируемый набор может определять конфигурацию подключенных дисков с данными, применяемую ко всем виртуальным машинам в наборе. Дополнительные сведения см. в статье Масштабируемые наборы ВМ Azure и подключенные диски данных. Ниже перечислены другие варианты хранения данных.

  • Azure Управляемые диски (премиум версии 2, премиум, цен. категория "Стандартный", "Ультра")
  • Файлы Azure (общие диски SMB или NFS)
  • Azure Netapp Files
  • Общие диски Azure
  • Диск операционной системы
  • временный диск (локальный, не поддерживаемый хранилищем Azure);
  • служба данных Azure (например, Хранилище таблиц Azure или Хранилище BLOB-объектов Azure);
  • Внешняя служба данных (например, удаленная база данных).

Какие регионы Azure поддерживают масштабируемые наборы?

Все регионы Azure поддерживают масштабируемые наборы.

Какие номера SKU поддерживаются для Масштабируемые наборы виртуальных машин?

Все номера SKU поддерживаются для Масштабируемые наборы виртуальных машин.

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

Создайте и запишите образ виртуальной машины, а затем используйте его как источник для масштабируемого набора. Для обучения созданию и использованию пользовательского образа виртуальной машины можно воспользоваться Azure CLI или Azure PowerShell.

В чем разница между обновлением образа ОС и повторной версией?

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

Повторное создание образа — это более немедленное и разрушительное действие, которое влияет только на выбранный экземпляр виртуальной машины, остановив его временно и переустановив ОС.

Узнайте больше о разнице между обновлением образа ОС и повторной версией.

Если уменьшить емкость масштабируемого набора с 20 до 15, какие виртуальные машины будут удалены?

По умолчанию виртуальные машины удаляются из масштабируемого набора равномерно по зонам доступности (если масштабируемый набор развернут в зональной конфигурации) и доменам сбоя, чтобы обеспечить максимальную доступность. Сначала удаляются виртуальные машины с самым высоким уровнем идентификатора.

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

Что будет, если затем увеличить емкость с 15 до 18?

Если увеличить емкость до 18, то будут созданы 3 новые виртуальные машины. При этом идентификатор экземпляра виртуальной машины будет каждый раз увеличиваться, начиная с предыдущего наибольшего значения (например, 20, 21, 22). Виртуальные машины распределяются между доменами сбоя.

Можно ли указать последовательность выполнения при использовании нескольких расширений в масштабируемом наборе?

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

Работают ли масштабируемые наборы с группами доступности Azure?

Региональный (не зональный) масштабируемый набор использует группы размещения, каждая из которых выполняет роль неявной группы доступности с пятью доменами сбоя и пятью доменами обновления. Масштабируемые наборы, содержащие более 100 виртуальных машин, охватывают несколько групп размещения. Дополнительные сведения о группах размещения см. в статье "Работа с большими Масштабируемые наборы виртуальных машин". Группа доступности виртуальных машин может находиться в той же виртуальной сети, что и набор масштабирования виртуальных машин. Типичная конфигурация — это размещение виртуальных машин узла управления (для которых часто требуется уникальная конфигурация) в группе доступности, а узлов данных — в масштабируемом наборе.

Работают ли масштабируемые наборы с зонами доступности Azure?

Да. Дополнительные сведения см. в документации по зонам масштабируемых наборов.

Автомасштабирование

Существуют ли рекомендации по автомасштабированию Azure?

Где можно найти имена метрик на основе узла, используемые в процессе автомасштабирования?

Существуют ли какие-либо образцы автомасштабирования на основе раздела или длины очереди служебной шины Azure?

Да. Такие примеры см. в статье Общие метрики автомасштабирования в Azure Monitor.

Для очереди служебной шины используйте следующий код JSON:

"metricName": "MessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.ServiceBus/namespaces/mySB/queues/myqueue"

Для очереди хранилища используйте следующий код JSON:

"metricName": "ApproximateMessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.ClassicStorage/storageAccounts/mystorage/services/queue/queues/mystoragequeue"

Замените примеры значений соответствующими универсальными кодами ресурсов (URI).

Следует ли выполнять автомасштабирование с использованием метрик на основе узла или с применением расширения диагностики?

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

Список поддерживаемых метрик см. в статье Общие метрики автомасштабирования Azure Monitor.

Полный пример Масштабируемые наборы виртуальных машин см. в статье "Расширенная настройка автомасштабирования" с помощью шаблонов Resource Manager для Масштабируемые наборы виртуальных машин.

В этой конфигурации используется метрика ЦП уровня узла и метрика количества сообщений.

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

Вы можете создавать оповещения о метриках для Масштабируемые наборы виртуальных машин с помощью PowerShell или Azure CLI. Дополнительные сведения см. в статье Примеры для быстрого запуска Azure Monitor с помощью PowerShell и разделе Работа с оповещениями.

Масштабируемый TargetResourceId набор виртуальных машин выглядит следующим образом:

/subscriptions/идентификатор_подписки/resourceGroups/группа_ресурсов/providers/Microsoft.Compute/virtualMachineScaleSets/имя_набора_ВМ

В качестве метрики, для которой будут устанавливаться оповещения, можно выбрать любой счетчик производительности виртуальной машины. Дополнительные сведения см. в разделе Метрики гостевой ОС для виртуальных машин под управлением Windows, развернутых с помощью Resource Manager и Метрики гостевой ОС для виртуальных машин под управлением Linux статьи Общие метрики автомасштабирования Azure Monitor.

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

См . автоматическое масштабирование масштабируемого набора виртуальных машин. Вы можете также настроить автомасштабирование с помощью Azure CLI и шаблонов Azure.

Если я остановил (освободил) виртуальную машину, она будет запущена при операции автоматического масштабирования?

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

Сертификаты

Как осуществляется безопасная отправка сертификата на виртуальную машину?

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

Используйте следующий код JSON:

"secrets": [
    {
        "sourceVault": {
            "id": "/subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1"
        },
        "vaultCertificates": [
            {
                "certificateUrl": "https://mykeyvault1.vault.azure.net/secrets/{secretname}/{secret-version}",
                "certificateStore": "certificateStoreName"
            }
        ]
    }
]

Этот код поддерживает операционные системы Linux и Windows.

Дополнительные сведения см. в статье "Создание или обновление масштабируемого набора виртуальных машин".

Как использовать подготовленные самозаверенные сертификаты для кластеров Azure Service Fabric?

В последнем примере в оболочке Azure используйте следующий оператор Azure CLI, который выведет информацию в stdout:

az sf cluster create -h

Самозаверенные сертификаты нельзя использовать для отношений распределенного доверия, предоставляемых центром сертификации, и для кластеров Service Fabric, предназначенных для размещения корпоративных рабочих решений. Дополнительные рекомендации по безопасности см. в статьях Рекомендации по безопасности Azure Service Fabric и Сценарии обеспечения безопасности кластеров Service Fabric.

Для проверки подлинности SSH с масштабируемым набором виртуальных машин Linux из шаблона Resource Manager можно указать пару ключей SSH?

Да. REST API для osProfile аналогичен REST API для стандартной виртуальной машины.

Включите в свой шаблон osProfile:

"osProfile": {
    "computerName": "[variables('vmName')]",
    "adminUsername": "[parameters('adminUserName')]",
    "linuxConfiguration": {
        "disablePasswordAuthentication": "true",
        "ssh": {
            "publicKeys": [
                {
                    "path": "[variables('sshKeyPath')]",
                    "keyData": "[parameters('sshKeyData')]"
                }
            ]
        }
    }
}

Этот блок JSON используется в этом шаблоне быстрого запуска Azure.

Дополнительные сведения см. в статье "Создание или обновление масштабируемого набора виртуальных машин".

Как удалить устаревшие сертификаты?

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

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

Разделы справки внедрить существующий открытый ключ SSH в уровень SSH масштабируемого набора виртуальных машин во время подготовки?

Если вы устанавливаете на виртуальные машины только открытый ключ SSH, его не нужно отправлять в Azure Key Vault. Открытые ключи не являются секретными.

При создании виртуальной машины Linux открытые ключи SSH можно указать в обычном текстовом формате.

"linuxConfiguration": {
    "ssh": {
        "publicKeys": [
            {
                "path": "path",
                "keyData": "publickey"
            }
        ]
    }
}
Имя элемента linuxConfiguration Обязательное поле Type Описание
ssh No Коллекция Указывает конфигурацию ключа SSH для операционной системы Linux.
path Да Строка Указывает путь к файлу Linux, где должны храниться ключи SSH или сертификат.
keyData Да Строка Указывает открытый ключ SSH в кодировке Base64.

Пример см. в шаблоне быстрого запуска vm-sshkey на сайте GitHub.

Почему при выполнении команды Update-AzVmss после добавления нескольких сертификатов из одного хранилища ключей отображается сообщение об ошибке?

Эта ошибка может произойти, если вы попытаетесь повторно добавить то же хранилище вместо использования нового сертификата хранилища для существующего исходного хранилища. Команда Add-AzVmssSecret не работает должным образом при добавлении дополнительных секретов.

Чтобы добавить дополнительные секреты из того же хранилища ключей, обновите следующий список: $vmss.properties.osProfile.secrets[0].vaultCertificates.

Ожидаемую структуру входных данных см. в разделе о создании и обновлении масштабируемого набора виртуальных машин.

Найдите секрет в объекте масштабируемого набора виртуальных машин, который находится в хранилище ключей. Затем добавьте ссылку на сертификат (URL-адрес и имя хранилища секретов) в список, связанный с хранилищем.

Примечание.

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

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

Можно ли отправлять сертификаты в масштабируемый набор виртуальных машин, не предоставляя пароль, когда сертификат находится в хранилище секретов?

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

Как работает свойство Secret объекта VirtualMachineProfile.osProfile для масштабируемого набора виртуальных машин? Зачем нужно указывать значение sourceVault (исходное хранилище) при определении абсолютного URI сертификата с использованием свойства certificateUrl?

В свойстве Secrets профиля ОС должна находиться ссылка на сертификат службы удаленного управления Windows (WinRM).

Указав исходное хранилище, вы сможете применить политики списка управления доступом (ACL), определенные в модели Облачных служб Azure пользователя. Если его не указать, пользователи без необходимых разрешений смогут развертывать или использовать секреты в хранилище ключей с помощью поставщика вычислительных ресурсов (CRP). Списки управления доступом существуют даже для несуществующих ресурсов.

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

Если добавить секреты в существующий масштабируемый набор виртуальных машин, секреты внедряются в существующие виртуальные машины или только в новые?

Сертификаты добавляются на все виртуальные машины, в том числе на имеющиеся. Если для свойства масштабируемого набора upgradePolicy виртуальных машин задано manualзначение, сертификат добавляется на виртуальную машину при выполнении ручного обновления на виртуальной машине.

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

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

Как добавить новый сертификат хранилища в новый объект сертификата?

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

$newVaultCertificate = New-AzVmssVaultCertificateConfig -CertificateStore MY -CertificateUrl https://sansunallapps1.vault.azure.net:443/secrets/dg-private-enc/55fa0332edc44a84ad655298905f1809

$vmss.VirtualMachineProfile.OsProfile.Secrets[0].VaultCertificates.Add($newVaultCertificate)

Update-AzVmss -VirtualMachineScaleSet $vmss -ResourceGroup $rg -Name $vmssName

Что происходит с сертификатами после пересоздания образа виртуальной машины?

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

Что происходит в случае удаления сертификата из хранилища ключей?

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

Компонент CRP не сохраняет секреты клиента. При запуске stop deallocate для всех виртуальных машин в масштабируемом наборе виртуальных машин кэш удаляется. В этом случае секреты извлекаются из хранилища ключей.

При горизонтальном увеличении масштаба эта проблема не возникает, так как в Azure Service Fabric хранится кэшированная копия секрета (в модели с одним клиентом Fabric).

Почему при использовании Key Vault необходимо указать версию сертификата?

Это позволяет пользователям четко понять, какой сертификат развернут на их виртуальных машинах.

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

Моя группа работает с несколькими сертификатами, добавленными как файлы сертификата открытого ключа (CER-файлы). Что такое рекомендуемый подход для развертывания этих сертификатов в масштабируемом наборе виртуальных машин?

Чтобы развернуть открытые ключи .cer в масштабируемом наборе виртуальных машин, можно создать PFX-файл, содержащий только .cer файлы. Для этого используйте параметр X509ContentType = Pfx. Например, загрузите CER-файл как объект x509Certificate2 в C# или PowerShell, а затем вызовите метод.

Дополнительные сведения о методе X509Certificate.Export (X509ContentType, String) см. в этой статье.

Как передать сертификаты в виде строк в формате Base64?

Чтобы выполнить эмуляцию передачи сертификата в виде строки в формате Base64, можно извлечь последнюю версию URL-адреса в шаблоне Resource Manager. Включите в шаблон Resource Manager следующее свойство JSON:

"certificateUrl": "[reference(resourceId(parameters('vaultResourceGroup'), 'Microsoft.KeyVault/vaults/secrets', parameters('vaultName'), parameters('secretName')), '2015-06-01').secretUriWithVersion]"

Нужно ли помещать сертификаты в объекты JSON в хранилищах ключей?

В Масштабируемые наборы виртуальных машин и виртуальных машинах сертификаты должны быть упакованы в объекты JSON.

Мы также поддерживаем тип содержимого application/x-pkcs12.

Сейчас мы не поддерживаем CER-файлы. Чтобы использовать CER-файлы, экспортируйте их в PFX-контейнеры.

Соответствие требованиям и безопасность

Соответствуют ли Масштабируемые наборы виртуальных машин PCI?

Масштабируемые наборы виртуальных машин — это тонкий слой API на вершине СРБ. Оба компонента входят в состав вычислительной платформы в дереве службы Azure.

С точки зрения соответствия требованиям Масштабируемые наборы виртуальных машин являются основной частью вычислительной платформы Azure. Они используют те же группы, средства, процессы, методы развертывания, элементы управления безопасностью, JIT-компиляцию, возможности мониторинга и оповещения, что и поставщик вычислительных ресурсов. Масштабируемые наборы виртуальных машин соответствуют стандарту PCI, так как ОНА является частью текущей аттестации стандарта безопасности данных PCI (DSS).

Дополнительные сведения см. в Центре управления безопасностью Майкрософт.

Работают ли управляемые удостоверения для ресурсов Azure с Масштабируемые наборы виртуальных машин?

Да. Дополнительные сведения см. в обзоре управляемых удостоверений. Некоторые примеры шаблонов MSI доступны в шаблонах быстрого запуска Azure для Linux и Windows.

Удаление

Будут ли блокировки, заданные на экземплярах масштабируемого набора виртуальных машин, учитываться при удалении экземпляров?

На портале Azure можно удалить отдельный экземпляр или выполнить групповое удаление, выбрав несколько экземпляров. При попытке удалить один экземпляр, к которому применена блокировка, блокировка будет учтена и вы не сможете удалить этот экземпляр. Однако если выбрать несколько экземпляров и в каком-то из них есть блокировка, она не будет соблюдаться. Все выбранные экземпляры будут удалены.

В Azure CLI есть возможность удаления только отдельного экземпляра. При попытке удалить один экземпляр, к которому применена блокировка, блокировка будет учтена и вы не сможете удалить этот экземпляр.

Расширения

Разделы справки удалить расширение масштабируемого набора виртуальных машин?

Чтобы удалить расширение масштабируемого набора виртуальных машин, используйте следующий пример PowerShell:

$vmss = Get-AzVmss -ResourceGroupName "resource_group_name" -VMScaleSetName "vmssName"

$vmss=Remove-AzVmssExtension -VirtualMachineScaleSet $vmss -Name "extensionName"

Update-AzVmss -ResourceGroupName "resource_group_name" -VMScaleSetName "vmssName" -VirtualMacineScaleSet $vmss

Значение extensionName можно найти в $vmss.

Существует ли пример шаблона масштабируемого набора виртуальных машин, который интегрируется с журналами Azure Monitor?

Пример шаблона масштабируемого набора виртуальных машин, который интегрируется с журналами Azure Monitor, см. второй пример развертывания кластера Azure Service Fabric и включения мониторинга с помощью журналов Azure Monitor.

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

Если политика обновления настроена на автоматическое обновление, при повторном развертывании шаблона новые свойства расширения применяются на всех виртуальных машинах.

Если политика обновления настроена на обновление вручную, сначала обновите расширение, а затем вручную обновите все экземпляры на виртуальных машинах.

Если расширения, связанные с существующим масштабируемым набором виртуальных машин, обновляются, будут ли затронуты существующие виртуальные машины?

Если определение расширения в модели масштабируемого набора виртуальных машин обновляется, а upgradePolicy свойство задано automatic, оно обновляет виртуальные машины. Если для свойства upgradePolicy установлено значение manual, расширения помечаются как не соответствующие модели.

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

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

Разделы справки присоединить масштабируемый набор виртуальных машин к домену Active Directory?

Чтобы присоединить масштабируемый набор виртуальных машин к домену Active Directory, можно определить расширение.

Чтобы определить расширение, используйте свойство JsonADDomainExtension:

"extensionProfile": {
    "extensions": [
        {
            "name": "joindomain",
            "properties": {
                "publisher": "Microsoft.Compute",
                "type": "JsonADDomainExtension",
                "typeHandlerVersion": "1.3",
                "settings": {
                    "Name": "[parameters('domainName')]",
                    "OUPath": "[variables('ouPath')]",
                    "User": "[variables('domainAndUsername')]",
                    "Restart": "true",
                    "Options": "[variables('domainJoinOptions')]"
                },
                "protectedsettings": {
                    "Password": "[parameters('domainJoinPassword')]"
                }
            }
        }
    ]
}

Расширение масштабируемого набора виртуальных машин пытается установить то, что требует перезагрузки. Что делать?

Вы можете использовать расширение Desired State Configuration службы автоматизации Azure. При использовании операционной системы Windows Server 2012 R2 Azure запрашивает установку и перезагрузку Windows Management Framework (WMF) 5.0, а затем выполняет настройку.

Как выполнить настраиваемый скрипт, размещенный в учетной записи частного хранилища?

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

Passwords

Разделы справки сброс пароля для виртуальных машин в масштабируемом наборе виртуальных машин?

Вы можете:

  • Измените модель масштабируемого набора виртуальных машин напрямую. Этот параметр доступен только в API 2017-12-01 и более поздних версиях.

    Обновите учетные данные администратора непосредственно в модели масштабируемого набора (например, с помощью обозревателя ресурсов Azure, PowerShell или CLI). После обновления масштабируемого набора у всех новых виртуальных машин будут новые учетные данные. Для имеющихся виртуальных машин новые данные доступны только в том случае, если они будут пересозданы с использованием нового образа.

  • Сбросьте пароль с помощью расширений доступа к виртуальной машине. Обязательно следуйте требованиям к паролю, как описано в разделе вопросов и ответов .

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

    Примечание.

    Если для политики автоматического обновления задано значение manual, вручную выберите экземпляр для выполнения операции обновления на отдельных экземплярах виртуальных машин. Если для параметра автоматического обновления задано значение Auto, расширение будет автоматически обновлено. Дополнительные сведения приведены в статье Автоматические обновления расширения

    Используйте следующий пример PowerShell для масштабируемого набора виртуальных машин Windows:

    $vmssName = "myvmss"
    $vmssResourceGroup = "myvmssrg"
    $publicConfig = @{"UserName" = "newuser"}
    $privateConfig = @{"Password" = "********"}
    
    $extName = "VMAccessAgent"
    $publisher = "Microsoft.Compute"
    $vmss = Get-AzVmss -ResourceGroupName $vmssResourceGroup -VMScaleSetName $vmssName
    $vmss = Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $publisher -Setting $publicConfig -ProtectedSetting $privateConfig -Type $extName -TypeHandlerVersion "2.0" -AutoUpgradeMinorVersion $true
    Update-AzVmss -ResourceGroupName $vmssResourceGroup -Name $vmssName -VirtualMachineScaleSet $vmss
    

    Используйте следующий пример Azure CLI для масштабируемого набора виртуальных машин Linux:

    az vmss extension set \
      --resource-group myResouceGroup \ 
      --vmss-name myScaleSet \
      --publisher Microsoft.OSTCExtensions \
      --name VMAccessForLinux \
      --version 1.5 \
      --protected-settings "{'username': 'newUser', 'password': 'newPassword'}"
    

Сеть

Можно ли назначить масштабируемому набору группу безопасности сети, чтобы она применялась ко всем сетевым картам виртуальных машин в наборе?

Да. Вы можете применить NSG непосредственно к масштабируемому набору, указав ее в разделе networkInterfaceConfigurations сетевого профиля. Приведем пример:

"networkProfile": {
    "networkInterfaceConfigurations": [
        {
            "name": "nic1",
            "properties": {
                "primary": "true",
                "ipConfigurations": [
                    {
                        "name": "ip1",
                        "properties": {
                            "subnet": {
                                "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('vnetName'), '/subnets/subnet1')]"
                            },
                            "loadBalancerInboundNatPools": [
                                {
                                    "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('lbName'), '/inboundNatPools/natPool1')]"
                                }
                            ],
                            "loadBalancerBackendAddressPools": [
                                {
                                    "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('lbName'), '/backendAddressPools/addressPool1')]"
                                }
                            ]
                        }
                    }
                ],
                "networkSecurityGroup": {
                    "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]"
                }
            }
        }
    ]
}

Разделы справки переключение виртуального IP-адреса для Масштабируемые наборы виртуальных машин в одной подписке и том же регионе?

Если у вас есть два Масштабируемые наборы виртуальных машин с Azure Load Balancer, и они находятся в одной подписке и регионе, вы можете освободить общедоступные IP-адреса от каждого из них и назначить другим. Пример приведен в статье VIP Swap: Blue-green deployment in Azure Resource Manager (Переключение виртуальных IP-адресов: сине-зеленое развертывание в Azure Resource Manager). Однако может возникнуть задержка, так как ресурсы освобождены или выделены на уровне сети. Другой, более быстрый вариант — воспользоваться Шлюзом приложений Azure с двумя серверными пулами и правилом маршрутизации. Также можно разместить приложение в Службе приложений Azure, которая обеспечивает быстрое переключение между промежуточными и рабочими слотами.

Как указать диапазон частных IP-адресов для выделения статических частных IP-адресов?

IP-адреса выбираются из указанной подсети.

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

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

Можно ли использовать масштабируемые наборы с ускорением сети?

Да. Чтобы использовать ускорение сети, в параметрах networkInterfaceConfigurations своего масштабируемого набора задайте для enableAcceleratedNetworkingзначение true. Например:

"networkProfile": {
    "networkInterfaceConfigurations": [
        {
            "name": "niconfig1",
            "properties": {
                "primary": true,
                "enableAcceleratedNetworking" : true,
                "ipConfigurations": [
                ]
            }
        }
    ]
}

Как настроить DNS-серверы, используемые масштабируемым набором?

Чтобы создать масштабируемый набор виртуальных машин с настраиваемой конфигурацией DNS, добавьте dnsSettings пакет JSON в раздел масштабируемого набора networkInterfaceConfigurations . Приведем пример:

    "dnsSettings":{
        "dnsServers":["10.0.0.6", "10.0.0.5"]
    }

Как настроить масштабируемый набор, чтобы назначать общедоступный IP-адрес каждой виртуальной машине?

Чтобы создать масштабируемый набор виртуальных машин, который назначает общедоступный IP-адрес для каждой виртуальной машины, убедитесь, что версия API ресурса Microsoft.Compute/virtualMachineScaleSets — 2017-03-30 и добавьте publicipaddressconfiguration пакет JSON в раздел масштабируемого набора ipConfigurations . Приведем пример:

    "publicipaddressconfiguration": {
        "name": "pub1",
        "properties": {
        "idleTimeoutInMinutes": 15
        }
    }

Можно ли настроить масштабируемый набор для работы с несколькими шлюзами приложений?

Да. Вы можете добавить идентификаторы ресурсов для нескольких пулов серверных адресов шлюза приложений в список applicationGatewayBackendAddressPools в разделе ipConfigurations сетевого профиля своего масштабируемого набора.

Масштабировать

В каком случае я создаю масштабируемый набор виртуальных машин с менее чем двумя виртуальными машинами?

Одна из причин создания масштабируемого набора виртуальных машин с менее чем двумя виртуальными машинами заключается в использовании эластичных свойств масштабируемого набора виртуальных машин. Например, можно развернуть масштабируемый набор виртуальных машин с нулевыми виртуальными машинами, чтобы определить инфраструктуру без оплаты затрат на виртуальную машину. Затем, когда вы будете готовы к развертыванию виртуальных машин, можно увеличить емкость масштабируемого набора виртуальных машин до количества рабочих экземпляров.

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

Разделы справки изменить количество виртуальных машин в масштабируемом наборе виртуальных машин?

Чтобы изменить количество виртуальных машин в масштабируемом наборе виртуальных машин в портал Azure, в разделе "Свойства масштабируемого набора виртуальных машин" выберите область масштабирования и используйте ползунок.

Как настроить пользовательские оповещения, отображающиеся при достижении определенных пороговых значений?

Обработкой оповещений при достижении определенных пороговых значений можно управлять несколькими способами. Например, вы можете определить настраиваемые объекты webhook. Ниже приведен пример объекта webhook из шаблона Resource Manager.

{
    "type": "Microsoft.Insights/autoscaleSettings",
    "apiVersion": "[variables('insightsApi')]",
    "name": "autoscale",
    "location": "[parameters('resourceLocation')]",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachineScaleSets/', parameters('vmSSName'))]"
    ],
    "properties": {
        "name": "autoscale",
        "targetResourceUri": "[concat('/subscriptions/',subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', parameters('vmSSName'))]",
        "enabled": true,
        "notifications": [
            {
                "operation": "Scale",
                "email": {
                    "sendToSubscriptionAdministrator": true,
                    "sendToSubscriptionCoAdministrators": true,
                    "customEmails": [
                        "youremail@address.com"
                    ]
                },
                "webhooks": [
                    {
                        "serviceUri": "<service uri>",
                        "properties": {
                            "key1": "custommetric",
                            "key2": "scalevmss"
                        }
                    }
                ]
            }
        ]
    }
}

Установка исправлений и эксплуатация

Можно ли создать масштабируемый набор в существующей группе ресурсов?

Да, вы можете.

Можно ли переместить масштабируемый набор в другую группу ресурсов?

Да, ресурсы масштабируемого набора можно переместить в новую подписку или группу ресурсов.

Разделы справки обновить масштабируемый набор виртуальных машин до нового образа? и как управлять установкой исправлений?

Сведения об обновлении масштабируемого набора виртуальных машин до нового образа и управлении исправлениями см. в статье Об обновлении масштабируемого набора виртуальных машин.

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

Да. Операцию пересоздания образа можно использовать, чтобы сбросить параметры виртуальной машины, не изменяя образ. Однако если масштабируемый набор виртуальных машин ссылается на образ платформы, version = latestвиртуальная машина может обновиться до последующего образа операционной системы при вызове reimage.

Можно ли интегрировать масштабируемые наборы с журналами Azure Monitor?

Да, это можно сделать, установив расширение Azure Monitor на виртуальных машинах масштабируемого набора. Вот пример использования Azure CLI:

az vmss extension set --name MicrosoftMonitoringAgent --publisher Microsoft.EnterpriseCloud.Monitoring --resource-group Team-03 --vmss-name nt01 --settings "{'workspaceId': '<your workspace ID here>'}" --protected-settings "{'workspaceKey': '<your workspace key here'}"

Необходимые данные workspaceId и workspaceKey можно найти в рабочей области Log Analytics портала Azure. На странице Обзор щелкните плитку Параметры. Откройте расположенную сверху вкладку Подключенные источники.

Примечание.

Если параметру upgradePolicy масштабируемого набора присвоено значение Manual, необходимо применить это расширение для всех виртуальных машин в наборе, вызвав их обновление. В Azure CLI это az vmss update-instances.

Примечание.

Сведения из данной статьи были недавно обновлены. Теперь вместо термина "Log Analytics" используется термин "журналы Azure Monitor". Данные журнала по-прежнему хранятся в рабочей области Log Analytics, собираются и анализируются той же службой Log Analytics. Целью обновления терминологии является лучшее отражение роли журналов в Azure Monitor. Дополнительные сведения см. в статье Изменения фирменной символики Azure Monitor.

Устранение неполадок

Как включить диагностику загрузки?

Чтобы включить диагностику загрузки, сначала создайте учетную запись хранения. Затем поместите этот блок JSON в масштабируемый набор virtualMachineProfileвиртуальных машин и обновите масштабируемый набор виртуальных машин:

"diagnosticsProfile": {
    "bootDiagnostics": {
        "enabled": true,
        "storageUri": "http://yourstorageaccount.blob.core.windows.net"
    }
}

После создания виртуальной машины в ее свойстве InstanceView отобразятся сведения для снимка экрана. Приведем пример:

"bootDiagnostics": {
    "consoleScreenshotBlobUri": "https://o0sz3nhtbmkg6geswarm5.blob.core.windows.net/bootdiagnostics-swarmagen-4157d838-8335-4f78-bf0e-b616a99bc8bd/swarm-agent-9574AE92vmss-0_2.4157d838-8335-4f78-bf0e-b616a99bc8bd.screenshot.bmp",
    "serialConsoleLogBlobUri": "https://o0sz3nhtbmkg6geswarm5.blob.core.windows.net/bootdiagnostics-swarmagen-4157d838-8335-4f78-bf0e-b616a99bc8bd/swarm-agent-9574AE92vmss-0_2.4157d838-8335-4f78-bf0e-b616a99bc8bd.serialconsole.log"
}

Как устранить неполадки, связанные с другими проблемами?

Свойства виртуальной машины

Как получить сведения о свойствах каждой виртуальной машины, не выполняя несколько вызовов? Например, как получить домен сбоя для каждой из 100 виртуальных машин в масштабируемом наборе виртуальных машин?

Вы можете вызвать ListVMInstanceViews, выполнив запрос REST API GET к следующему универсальному коду ресурса:

/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Compute/virtualMachineScaleSets/<scaleset_name/virtualMachines?$expand>=instanceView&$select=instanceView=instanceView

Обратите внимание, что домен сбоя не возвращается, если масштабируемый набор использует максимальное распространение (platformFaultDomainCount = 1), так как нет гарантии относительно того, сколько доменов сбоя будет использоваться с этим параметром.

Можно ли передать разные аргументы расширения разным виртуальным машинам в масштабируемом наборе виртуальных машин?

Нет, нельзя. Но расширения могут действовать на основе уникальных свойств виртуальной машины, на которых они выполняются, таких как имя машины. Кроме того, расширения могут запрашивать метаданные экземпляра на сайте http://169.254.169.254, чтобы получить дополнительные сведения о виртуальной машине.

Почему между именами виртуальных машин масштабируемого набора виртуальных машин и идентификаторами виртуальных машин существуют пробелы (например, 0, 1, 3) ?

Пробелы связаны с тем, что свойство масштабируемого набора overprovision виртуальных машин имеет значение trueпо умолчанию. Если значение избыточной подготовки — true, создается большее количество виртуальных машин, чем запрашивалось. Лишние виртуальные машины удаляются. Это позволит повысить надежность развертывания, но за счет правил непрерывности для преобразования сетевых адресов и именования.

Для этого свойства можно задать значение false. Для небольших Масштабируемые наборы виртуальных машин надежность развертывания не будет существенно затронута.

Какова разница между удалением виртуальной машины в масштабируемом наборе виртуальных машин и удалением виртуальной машины? Как понять, что выбрать в том или ином сценарии?

Основное отличие заключается в том, что при deallocate виртуальные жесткие диски (VHD) не удаляются. При выполнении команды stop deallocate взимается плата за хранение. Причины выбора того или иного варианта заключаются в следующем:

  • Вы хотите прекратить платить за вычислительные ресурсы, но сохранить состояние диска виртуальных машин.
  • Вы хотите быстрее запустить набор виртуальных машин, чем можно масштабировать масштабируемый набор виртуальных машин.
    • Вы создали собственную подсистему автомасштабирования и хотите быстрее выполнить сквозное масштабирование (касательно этого сценария).
  • У вас есть масштабируемый набор виртуальных машин, который неравномерно распределяется между доменами сбоя или доменами обновления. Это неравномерное распределение может быть связано с тем, что вы выборочно удалили виртуальные машины или из-за того, что виртуальные машины были удалены после избыточной подготовки. За stop deallocate которым следует start масштабируемый набор виртуальных машин, равномерно распределяет виртуальные машины между доменами сбоя или доменами обновления.

Разделы справки создать моментальный снимок экземпляра масштабируемого набора виртуальных машин?

Создайте моментальный снимок из экземпляра масштабируемого набора виртуальных машин. Приведем пример:

$rgname = "myResourceGroup"
$vmssname = "myVMScaleSet"
$Id = 0
$location = "East US"

$vmss1 = Get-AzVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssname -InstanceId $Id
$snapshotconfig = New-AzSnapshotConfig -Location $location -AccountType Standard_LRS -OsType Windows -CreateOption Copy -SourceUri $vmss1.StorageProfile.OsDisk.ManagedDisk.id
New-AzSnapshot -ResourceGroupName $rgname -SnapshotName 'mySnapshot' -Snapshot $snapshotconfig

Создайте управляемый диск на основе моментального снимка. Приведем пример:

$snapshotName = "mySnapshot"
$snapshot = Get-AzSnapshot -ResourceGroupName $rgname -SnapshotName $snapshotName
$diskConfig = New-AzDiskConfig -AccountType Premium_LRS -Location $location -CreateOption Copy -SourceResourceId $snapshot.Id
$osDisk = New-AzDisk -Disk $diskConfig -ResourceGroupName $rgname -DiskName ($snapshotName + '_Disk')