Поделиться через


Автоматическое увеличение и сжатие ресурсов кластера пакета HPC в Azure в соответствии с рабочей нагрузкой кластера

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

С помощью пакета HPC 2016 или более поздней версии вы можете автоматически увеличивать и уменьшать вычислительные узлы пакета HPC, работающие под управлением облака Azure, включая узлы Windows PaaS, узлы виртуальных машин IaaS Azure, узлы пакетного пула Azure и узлы масштабируемого набора виртуальных машин Azure. Но для разных типов узлов автоматическое увеличение логики сжатия отличается. И вот сводка:

Тип узла включение предпосылка Мониторинг
Узлы Azure PaaS командлета PowerShell
Set-HpcClusterProperty -EnableGrowShrink 1
1. Шаблон узла для узлов PaaS Azure
2. Узлы, добавленные в кластер
"Автоматически увеличивать отчет о сокращении" в ClusterManager — управление ресурсами> —> операции —> AzureOperations
Узлы IaaS Azure командлета PowerShell
Set-HpcClusterProperty -EnableGrowShrink 1
1. Настроенный субъект-служба Azure
2. Узлы, добавленные в кластер
"Автоматически увеличивать отчет о сокращении" в ClusterManager — управление ресурсами> —> операции —> AzureOperations
Узлы масштабируемого набора виртуальных машин Azure командлета PowerShell
Set-HpcClusterProperty -EnableGrowShrink 1
1. Настроенный субъект-служба Azure
2. Узлы, добавленные в кластер
"Автоматически увеличивать отчет о сокращении" в ClusterManager — управление ресурсами> —> операции —> AzureOperations
Пул пакетной службы Azure Шаблон узла пула пакетной службы Azure Необходимо запустить пул пакетной службы Azure портал Azure или обозреватель пакетной службы Azure

Примечание.

Эта функция просто автоматически увеличивает или сжимает ресурсы Azure, запуская или остановив существующие вычислительные узлы HPC в Azure, он не будет автоматически создавать новые вычислительные узлы HPC или удалять существующие узлы.

Автоматическое масштабирование узлов масштабируемого набора виртуальных машин Azure поддерживается из пакета HPC 2016 с обновлением 2.

Автоматическое масштабирование узлов виртуальных машин IaaS Azure или узлов масштабируемого набора виртуальных машин Azure

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

После настройки субъекта-службы Azure можно включить автоматическое сжатие с помощью командлета AutoGrowShrink пакета HPC .

Примечание.

По умолчанию субъект-служба Azure, созданный пакетом HPC, предоставляет роль участника на уровне подписки, вы можете ссылаться на управление доступом для ресурсов Azure в кластере пакетов HPC, чтобы вручную настроить разрешения доступа для субъекта-службы Azure в соответствии с вашим пользовательским сценарием.

Настройка субъекта-службы Azure с помощью PowerShell

  1. После развертывания кластера подключитесь удаленного рабочего стола к одному головному узлу.

  2. Отправьте сертификат (PFX-формат с закрытым ключом) на каждый головной узел и установите его в Cert:\LocalMachine\My. Этот сертификат используется для создания субъекта-службы Azure. Если у вас нет сертификата, вы можете создать самозаверяющий сертификат.

  3. Запустите Azure PowerShell от имени администратора и выполните следующие команды на одном головном узле:

    cd $env:CCP_HOME\bin
    
    Connect-AzureRmAccount
    

    Если ваша учетная запись находится в нескольких клиентах Azure Active Directory или подписке Azure, можно выполнить следующую команду, чтобы выбрать правильный клиент и подписку:

    Connect-AzureRmAccount -TenantId <TenantId> -SubscriptionId <subscriptionId>
    

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

    Get-AzureRMContext
    
  4. Выполните следующий скрипт.

    .\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName "YourHpcPackAppName" -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -CertificateThumbprint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -TenantId xxxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxxxx
    

    где

    displayName — отображаемое имя приложения Azure Active. Если приложение не существует, он создается в Azure Active Directory.

    HomePage — домашняя страница приложения. Вы можете настроить фиктивный URL-адрес, как показано в предыдущем примере.

    IdentifierUri — идентификатор приложения. Вы можете настроить фиктивный URL-адрес, как показано в предыдущем примере.

    CertificateThumbprint — отпечаток сертификата, установленного на головном узле на шаге 2.

    TenantId — идентификатор клиента Azure Active Directory. Идентификатор клиента можно получить на портале Azure Active Directory странице свойств.

    Дополнительные сведения о ConfigARMAutoGrowShrinkCert.ps1выполните Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailed.

  5. После настройки можно проверить параметр раздела реестра (включая ApplicationId, TenantId, Thumbprint) с помощью команды HPC PowerShell

    Get-HpcClusterRegistry
    

Настройка субъекта-службы Azure с помощью графического интерфейса Диспетчера кластеров

  1. Откройте диспетчер кластеров пакетов HPC на одном головном узле.

  2. конфигурации goto — страница списка действий развертывания.

  3. Щелкните Задать конфигурацию развертывания Azure.

  4. В этом мастере вы сможете настроить субъект-службу Azure, группу ресурсов Azure и виртуальную сеть, где будет подготовлена виртуальная машина Azure, а также сертификат, используемый для связи с кластером. Мастер будет выполняться следующим образом:

    мастере настройки развертывания Azure

Проверка конфигурации

После успешной настройки субъекта-службы Azure вы сможете запускать и останавливать узлы виртуальных машин Azure IaaS с помощью пакета HPC.

Если вы используете пакет HPC 2016 с обновлением 2 или более поздней версии, узлы виртуальных машин Azure IaaS или узлы масштабируемого набора виртуальных машин Azure должны быть уже в группе узлов AzureIaaSNodes, вы можете выполнить запустить или остановить действия с ними из диспетчера кластеров HPC. При выполнении действия вы увидите или запуск операции виртуальных машин Azure в операций AzureOperations.

Если у вас есть виртуальные машины, которые вручную установлены с пакетом HPC с обновлением 1 или более ранней версией в Azure, по умолчанию они не находятся в группе узлов AzureIaaSNod es, так как они обрабатываются как локальный узел. В этом случае необходимо выполнить остановить действия, которые помогут службе поместить их в группу узлов AzureIaaSNodes, а затем службу сможет расти и сжимать их.

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

Автоматическое масштабирование узлов Azure PaaS

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

Служба автоматического сжатия пакета HPC никогда не добавит новый ресурс в кластер. Таким образом, в любом случае после создания шаблона узла PaaS azure необходимо сначала добавить узлы в кластер следующим образом:

  1. Запустите диспетчер кластеров HPC, перейдите в область управления ресурсами
  2. Щелкните Добавить узел... действие из области действий в мастере выберите пункт "Добавить узлы Windows Azure".
  3. В мастере нажмите кнопку Готово, в кластер будет добавлено несколько узлов в состоянии не развернутых
  4. Включение автоматического сжатия с помощью командлета AutoGrowShrink пакета HPC

Примечание.

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

Автоматическое масштабирование пула пакетной службы Azure

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

Команды HPC PowerShell для задания автоматического увеличения и сжатия свойства кластера

Ниже приведены примеры команд HPC PowerShell для задания AutoGrowShrink и настройки его поведения с дополнительными параметрами. Полный список параметров см. в параметрах AutoGrowShrink, далее в этой статье.

Чтобы выполнить эти команды, запустите HPC PowerShell на головном узле кластера от имени администратора.

Просмотр текущего параметра autoGrowShrink

Get-HpcClusterProperty –AutoGrowShrink

Включение свойства AutoGrowShrink

Set-HpcClusterProperty –EnableGrowShrink 1

Отключение свойства AutoGrowShrink

Set-HpcClusterProperty –EnableGrowShrink 0

Изменение интервала роста в минутах

Set-HpcClusterProperty –GrowInterval <interval>

Изменение интервала сжатия в минутах

Set-HpcClusterProperty –ShrinkInterval <interval>

Просмотр текущей конфигурации автогружа

Get-HpcClusterProperty –AutoGrowShrink

Исключение групп узлов из autoGrowShrink

Set-HpcClusterProperty –ExcludeNodeGroups <group1,group2,group3>

Примечание.

Этот параметр поддерживается начиная с пакета HPC 2016

Параметры AutoGrowShrink

Ниже приведены параметры AutoGrowShrink, которые можно изменить с помощью команды Set-HpcClusterProperty.

  • EnableGrowShrink — переключение, чтобы включить или отключить свойство AutoGrowShrink.

  • TasksPerResourceUnit — количество задач для увеличения единицы ресурсов (на основе типа единицы ресурсов задания). По умолчанию для каждой задачи требуется увеличить единицу ресурсов.

  • GrowThreshold — пороговое значение заданий, которые имеют задачи очереди для активации автоматического роста. Значение по умолчанию — 1, что означает, что при наличии 1 или нескольких заданий с задачами в очереди автоматически увеличивается.

  • GrowInterval — интервал в минутах, чтобы активировать автоматический рост. Интервал по умолчанию — 5 минут.

  • ShrinkInterval — интервал в минутах, чтобы активировать автоматическое сжатие. Интервал по умолчанию — 5 минут.|

  • ShrinkIdleTimes — количество непрерывных проверок, чтобы указать, что узлы неактивны. Значение по умолчанию — 3 раза. Например, если ShrinkInterval составляет 5 минут, пакет HPC проверяет, неактивен ли узел каждые 5 минут. Если узлы находятся в состоянии простоя для всех 3 непрерывных проверок (15 минут), пакет HPC решает уменьшить этот узел.

  • ExtraNodesGrowRatio — дополнительный процент узлов для увеличения числа заданий интерфейса передачи сообщений (MPI). Значение по умолчанию равно 1, что означает, что пакет HPC увеличивает узлы 1% для заданий MPI.

  • GrowByMin . Переключитесь на то, основана ли политика автоматического увеличения на основе минимальных ресурсов, необходимых для задания. Значение по умолчанию равно false, что означает, что пакет HPC увеличивает узлы для заданий на основе максимальных ресурсов, необходимых для заданий.

  • SoaJobGrowThreshold — пороговое значение входящих запросов SOA для активации процесса автоматического роста. Значение по умолчанию — 50000.

    Примечание.

    Этот параметр поддерживается начиная с пакета HPC 2012 R2 с обновлением 3.

  • SoaRequestsPerCore -Number входящих запросов SOA для увеличения одного ядра. Значение по умолчанию — 20000.

    Примечание.

    Этот параметр поддерживается начиная с пакета HPC 2012 R2 с обновлением 3.

  • ExcludeNodeGroups — узлы в указанных группах узлов не увеличиваются и сокращаются автоматически.

    Примечание.

    Этот параметр поддерживается начиная с пакета HPC 2016.

Пример MPI

По умолчанию пакет HPC растет на 1% дополнительных узлов для заданий MPI (ExtraNodesGrowRatio имеет значение 1). Причина заключается в том, что MPI может требовать несколько узлов, и задание может выполняться только в том случае, если все узлы будут готовы. Когда Azure запускает узлы, иногда один узел может потребовать больше времени для запуска, чем другие, что приводит к простою других узлов во время ожидания подготовки этого узла. Увеличивая дополнительные узлы, пакет HPC сокращает время ожидания этого ресурса и потенциально экономит затраты. Чтобы увеличить процент дополнительных узлов для заданий MPI (например, до 10%), выполните команду, аналогичную команде

Set-HpcClusterProperty -ExtraNodesGrowRatio 10

Пример SOA

По умолчанию SoaJobGrowThreshold имеет значение 50000, а для SoaRequestsPerCore задано значение 20000. Если вы отправляете одно задание SOA с запросами 70000, существует одна задача очереди и входящие запросы равно 70000. В этом случае пакет HPC растет на 1 ядро для задачи в очереди, а для входящих запросов растет (70000 – 50000)/20000 = 1 ядро, поэтому в общей сложности растет 2 ядра для этого задания SOA.