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


Начало работы с вычислительными узлами Linux в кластере пакета HPC в Azure

Важно!

1 марта 2023 г. мы прекратим поддержку классических виртуальных машин.

Если вы используете ресурсы IaaS из ASM, выполните миграцию до 1 марта 2023 г. Рекомендуем осуществить этот переход как можно раньше, чтобы воспользоваться различными улучшенными функциями в Azure Resource Manager.

Дополнительные сведения см. в статье Перенесите свои ресурсы IaaS в Azure Resource Manager до 1 марта 2023 г.

В этой статье описывается, как настроить в Azure кластер пакета Microsoft HPC, содержащий головной узел под управлением Windows Server и несколько вычислительных узлов под управлением поддерживаемого дистрибутива Linux. Кроме того, вы ознакомитесь с несколькими вариантами перемещения данных между узлами Linux и головным узлом Windows кластера, а также узнаете, как отправлять задания Linux HPC в кластер.

Примечание

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

На следующей обобщенной схеме показан кластер пакета HPC, который вы создадите для работы.

HPC Pack cluster with Linux nodes

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

Развертывание кластера пакета HPC с вычислительными узлами Linux

В этой статье описаны два варианта развертывания кластера пакета HPC в Azure с вычислительными узлами на основе Linux. В обоих методах для создания головного узла используется образ Windows Server с пакетом HPC из Azure Marketplace.

  • Шаблон Azure Resource Manager. Чтобы автоматизировать процесс создания кластера в модели развертывания с помощью Resource Manager, используйте шаблон из Azure Marketplace или шаблон для быстрого начала работы от сообщества. Например, шаблон кластера пакета HPC для рабочих нагрузок Linux из Azure Marketplace создает полную инфраструктуру кластера пакета HPC для рабочих нагрузок высокопроизводительных вычислительных систем Linux.
  • Скрипт PowerShell. Используйте скрипт развертывания IaaS пакета Microsoft HPC (New-HpcIaaSCluster.ps1) для автоматизации полного развертывания кластера в рамках классической модели развертывания. Этот скрипт Azure PowerShell использует образ виртуальной машины пакета HPC в Azure Marketplace для быстрого развертывания и предоставляет исчерпывающий набор параметров конфигурации для развертывания вычислительных узлов Linux.

Общие сведения о вариантах развертывания кластера пакета HPC в Azure см. в статье Варианты создания кластера высокопроизводительных вычислений (HPC) в Azure и управления им с помощью пакета Microsoft HPC.

Предварительные требования

  • Подписка Azure. Вы можете использовать подписку на глобальную службу Azure или Azure для Китая. Если ее нет, можно создать бесплатную учетную запись всего за несколько минут.

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

  • Дистрибутивы Linux. В настоящее время пакет HPC поддерживает следующие дистрибутивы Linux для вычислительных узлов. Можно использовать версии этих дистрибутивов, доступные в Marketplace, или создать собственные.

    • Выпуски на основе CentOS: 6.5, 6.6, 6.7, 7.0, 7.1, 7.2, 6.5 HPC, 7.1 HPC

    • Red Hat Enterprise Linux: 6.7, 6.8, 7.2

    • SUSE Linux Enterprise Server: SLES 12, SLES 12 (Premium), SLES 12 SP1, SLES 12 SP1 (Premium), SLES 12 для HPC, SLES 12 для HPC (Premium)

    • Ubuntu Server: 14.04 LTS, 16.04 LTS

      Совет

      Чтобы использовать сеть Azure RDMA с виртуальной машиной, размер которой поддерживает RDMA, укажите образ SUSE Linux Enterprise Server 12 HPC или образ CentOS для HPC из каталога Azure Marketplace. Дополнительные сведения см. в статье Размеры виртуальных машин Linux, оптимизированных для HPC.

Ниже перечислены дополнительные компоненты, необходимые для развертывания кластера с помощью скрипта развертывания IaaS пакета HPC.

  • Клиентский компьютер. Для запуска скрипта развертывания кластера вам потребуется клиентский компьютер под управлением Windows.
  • - Azure PowerShell Install и настройте Azure PowerShell (версия 0.8.10 или более поздняя) на клиентском компьютере.
  • Сценарий развертывания IaaS из пакета HPC — скачайте и распакуйте последнюю версию сценария из Центра загрузки Майкрософт. Вы можете проверить версию скрипта, выполнив команду .\New-HPCIaaSCluster.ps1 –Version. В этой статье используется скрипт версии 4.4.1 или более поздней версии.

Вариант развертывания 1. Использование шаблона Resource Manager

  1. Выберите в Azure Marketplace шаблон кластера пакета HPC для рабочих нагрузок Linux и нажмите кнопку Развернуть.

  2. На портале Azure проверьте данные и щелкните Создать.

    Portal creation

  3. В колонке Основные данные введите имя кластера, которое также является именем виртуальной машины на головном узле. Для развертывания можно указать существующую группу ресурсов или создать новую в доступном вам расположении. Расположение влияет на доступность определенных размеров виртуальных машин и других служб Azure (см. статью Доступность продуктов по регионам).

  4. В колонке Параметры головного узла при первом развертывании обычно можно принять параметры по умолчанию.

    Примечание

    URL-адрес скрипта пост-конфигурации — это необязательный параметр, который указывает общедоступный скрипт Windows PowerShell, выполняемый на головном узле виртуальной машины после ее запуска.

  5. В колонке Compute node settings (Параметры вычислительных узлов) выберите шаблон имени для узлов, их количество и размер, а также дистрибутив Linux для развертывания.

  6. В колонке Параметры инфраструктуры введите имена виртуальной сети и домена Active Directory, учетные данные администратора домена и виртуальной машины, а также формат имени для учетных записей хранения.

    Примечание

    Пакет HPC использует домен Active Directory для проверки подлинности пользователей кластера.

  7. После выполнения проверок и ознакомления с условиями использования щелкните Приобрести.

Вариант развертывания 2. Использование скрипта развертывания IaaS

Ниже перечислены дополнительные компоненты, необходимые для развертывания кластера с помощью скрипта развертывания IaaS пакета HPC:

  • Клиентский компьютер. Для запуска скрипта развертывания кластера вам потребуется клиентский компьютер под управлением Windows.
  • - Azure PowerShell Install и настройте Azure PowerShell (версия 0.8.10 или более поздняя) на клиентском компьютере.
  • Сценарий развертывания IaaS из пакета HPC — скачайте и распакуйте последнюю версию сценария из Центра загрузки Майкрософт. Вы можете проверить версию скрипта, выполнив команду .\New-HPCIaaSCluster.ps1 –Version. В этой статье используется скрипт версии 4.4.1 или более поздней версии.

XML-файл конфигурации

Сценарий развертывания IaaS пакета HPC использует XML-файл конфигурации в качестве входных данных для описания кластера HPC. В следующем примере в файле конфигурации определен небольшой кластер, состоящий из головного узла пакета HPC и двух вычислительных узлов CentOS 7.0 Linux размера A7.

Измените этот файл в соответствии с параметрами своей среды и необходимой конфигурацией кластера. Сохраните его, например, как HPCDemoConfig.xml. Например, вам нужно указать имя подписки, уникальное имя учетной записи хранения и имя облачной службы. Кроме того, для вычислительных узлов может потребоваться выбрать другой поддерживаемый образ Linux. Дополнительные сведения об элементах файла конфигурации см. в файле Manual.rtf в папке скрипта или в статье Создание кластера HPC с помощью скрипта развертывания IaaS из пакета HPC.

<?xml version="1.0" encoding="utf-8" ?>
<IaaSClusterConfig>
  <Subscription>
    <SubscriptionName>Subscription-1</SubscriptionName>
    <StorageAccount>allvhdsje</StorageAccount>
  </Subscription>
  <Location>Japan East</Location>  
  <VNet>
    <VNetName>centos7rdmavnetje</VNetName>
    <SubnetName>CentOS7RDMACluster</SubnetName>
  </VNet>
  <Domain>
    <DCOption>HeadNodeAsDC</DCOption>
    <DomainFQDN>hpc.local</DomainFQDN>
  </Domain>
  <Database>
    <DBOption>LocalDB</DBOption>
  </Database>
  <HeadNode>
    <VMName>CentOS7RDMA-HN</VMName>
    <ServiceName>centos7rdma-je</ServiceName>
  <VMSize>ExtraLarge</VMSize>
  <EnableRESTAPI />
  <EnableWebPortal />
  </HeadNode>
  <LinuxComputeNodes>
    <VMNamePattern>CentOS7RDMA-LN%1%</VMNamePattern>
    <ServiceName>centos7rdma-je</ServiceName>
    <VMSize>A7</VMSize>
    <NodeCount>2</NodeCount>
    <ImageName>5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-70-20150325</ImageName>
  </LinuxComputeNodes>
</IaaSClusterConfig>

Запуск скрипта развертывания IaaS из пакета HPC

  1. Откройте Windows PowerShell на клиентском компьютере от имени администратора.

  2. Перейдите в каталог, в котором установлен скрипт (в данном случае E:\IaaSClusterScript).

    cd E:\IaaSClusterScript
    
  3. Выполните следующую команду, чтобы развернуть кластер пакета HPC. В этом примере предполагается, что путь к файлу конфигурации — E:\HPCDemoConfig.xml.

    .\New-HpcIaaSCluster.ps1 –ConfigFile E:\HPCDemoConfig.xml –AdminUserName MyAdminName
    

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

    b. Затем скрипт начинает проверку файла конфигурации. Это занимает до нескольких минут, в зависимости от сетевого подключения.

    Validation

    c. Завершив проверки, скрипт выводит на экран список ресурсов кластера, которые необходимо создать. Введите Y , чтобы продолжить.

    Resources

    d. Скрипт начинает развертывание кластера пакета HPC и завершает настройку без дальнейшего участия пользователя. Выполнение скрипта может занять несколько минут.

    Deploy

    Примечание

    В этом примере сценарий создает файл журнала автоматически, так как параметр -LogFile не указан. Хотя журналы не ведутся в режиме реального времени, они будут собраны в конце проверки и развертывания. Если процесс PowerShell остановлен во время выполнения скрипта, некоторые журналы будут утеряны.

Подключение к головному узлу

После развертывания кластера пакета HPC в Azure подключитесь к виртуальной машине головного узла с помощью учетных данных домена, указанных при развертывании кластера (например, hpc\clusteradmin). Управление кластером осуществляется из головного узла.

На головном узле запустите диспетчер кластеров HPC, чтобы проверить состояние кластера пакета HPC. Вы можете управлять вычислительными узлами Linux и отслеживать их так же, как и вычислительными узлами Windows. Например, в разделе Управление ресурсами вы видите узлы Linux (эти узлы развернуты с использованием шаблона LinuxNode).

Node Management

Вы также видите узлы Linux в представлении Тепловая карта .

Heat map

Перемещение данных в кластере с узлами Linux

Существует несколько вариантов перемещения данных между узлами Linux и головным узлом Windows кластера. Ниже приведены три распространенных метода, которые более подробно описаны в следующих разделах:

  • Файл Azure предоставляет управляемую общую папку SMB для хранения файлов с данными в службе хранилища Azure. Узлы Windows и Linux могут подключить общую папку Azure одновременно как диск или папку, даже если они развертываются в разных виртуальных сетях.
  • Общая папка SMB головного узла подключает расположенную на головном узле стандартную общую папку Windows к узлам Linux.
  • Головной узел NFS-сервер — предоставляет решение для совместного использования файлов для смешанной среды Windows и Linux.

Хранилище файлов Azure

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

Подробное описание создания и подключения общей папки Azure на головном узле см. в статье Приступая к работе с хранилищем файлов Azure в Windows. Сведения о подключении общей папки Azure на узлах Linux см. в статье " Использование хранилища файлов Azure с Linux". Чтобы настроить сохраняемые подключения, см. статью Сохраняемые подключения к файлам Microsoft Azure.

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

cmdkey /add:allvhdsje.file.core.windows.net /user:allvhdsje /pass:<storageaccountkey>

net use Z: \\allvhdje.file.core.windows.net\rdma /persistent:yes

В этом примере allvhdsje — это имя учетной записи хранения, storageaccountkey — ключ этой учетной записи, а rdma — имя файлового ресурса папки Azure. Общая папка Azure подключается на диск Z: головного узла.

Чтобы подключить общую папку Azure на узлах Linux, выполните команду clusrun на головном узле. Clusrun — это удобное средство в составе пакета HPC для выполнения административных задач на нескольких узлах. (См. также раздел Clusrun для узлов Linux в этой статье.)

Откройте окно Windows PowerShell и введите следующие команды:

clusrun /nodegroup:LinuxNodes mkdir -p /rdma

clusrun /nodegroup:LinuxNodes mount -t cifs //allvhdsje.file.core.windows.net/rdma /rdma -o vers=2.1`,username=allvhdsje`,password=<storageaccountkey>'`,dir_mode=0777`,file_mode=0777

Первая команда создает папку под названием /rdma на всех узлах в группе LinuxNodes. Вторая команда монтирует общую папку Azure allvhdsjw.file.core.windows.net/rdma в папку /rdma и задает для битов каталога и режима файлов значение 777. Во второй команде allvhdsje — это имя учетной записи хранения, а storageaccountkey — ее ключ.

Примечание

Символ "'" во второй команде является escape-символом для PowerShell. "," означает, что "," (символ запятой) является частью команды.

Общая папка головного узла

Вы также можете монтировать общую папку головного узла на узлы Linux. Общая папка — это самый простой способ предоставления доступа к файлам, но головной узел и все узлы Linux должны быть развернуты в одной виртуальной сети. Это делается следующим образом.

  1. Создайте папку на головном узле и сделайте ее доступной всем для чтения и записи. Например, совместное использование D:\OpenFOAM на головном узле как \CentOS7RDMA-HN\OpenFOAM. Здесь CentOS7RDMA-HN — это имя головного узла.

    File share permissions

    File sharing

  2. Откройте окно Windows PowerShell и выполните следующие команды:

    clusrun /nodegroup:LinuxNodes mkdir -p /openfoam
    
    clusrun /nodegroup:LinuxNodes mount -t cifs //CentOS7RDMA-HN/OpenFOAM /openfoam -o vers=2.1`,username=<username>`,password='<password>'`,dir_mode=0777`,file_mode=0777
    

Первая команда создает папку /openfoam на всех узлах в группе LinuxNodes. Вторая команда подключает общую папку //CentOS7RDMA-HN/OpenFOAM и задает для битов режима каталогов и папок значение 777. В команде должны быть указаны имя пользователя и пароль пользователя кластера на головном узле. (См. раздел Добавление и удаление пользователей кластера.)

Примечание

Символ "'" во второй команде является escape-символом для PowerShell. "," означает, что "," (символ запятой) является частью команды.

Сервер NFS

Служба NFS позволяет пользователям обмениваться файлами и перемещать их между компьютерами под управлением операционной системы Windows Server 2012 с помощью протокола SMB, а также между компьютерами под управлением Linux с помощью протокола NFS. Сервер NFS и все остальные узлы должны быть развернуты в одной виртуальной сети. Он обеспечивает большую совместимость с узлами Linux, чем общая папка SMB. Например, он поддерживает ссылки на файлы.

  1. Чтобы установить и настроить сервер NFS, следуйте указаниям из статьи Сервер для общей папки сетевой файловой системы.

    К примеру, создайте общую папку NFS под названием nfs со следующими свойствами:

    NFS authorization

    NFS share permissions

    NFS NTFS permissions

    NFS management properties

  2. Откройте окно Windows PowerShell и выполните следующие команды:

    clusrun /nodegroup:LinuxNodes mkdir -p /nfsshare
    
    clusrun /nodegroup:LinuxNodes mount CentOS7RDMA-HN:/nfs /nfsshared
    

    Первая команда создает папку под названием /nfsshared на всех узлах в группе LinuxNodes. Вторая команда подключает общую папку NFS CentOS7RDMA-HN:/nfs к папке. Здесь CentOS7RDMA-HN:/nfs — это удаленный путь к общей папке NFS.

Отправка заданий

Есть несколько способов отправки заданий в кластер пакета HPC.

  • Пользовательский интерфейс диспетчера кластеров HPC или диспетчера заданий HPC
  • Веб-портал HPC
  • REST API

Отправка заданий в кластер в Azure с помощью пользовательского интерфейса пакета HPC и веб-портала HPC аналогична отправке заданий для вычислительных узлов Windows. См. статьи, посвященные диспетчеру заданий пакета HPC и отправке заданий с локального клиентского компьютера.

Сведения об отправке заданий с помощью REST API см. в статье Создание и отправка заданий с помощью REST API в пакете Microsoft HPC. Чтобы узнать, как отправлять задания с клиента Linux, см. пример на языке Python в пакете SDK для пакета HPC.

Clusrun для узлов Linux

Средство clusrun пакета HPC можно использовать для выполнения команд на узлах Linux с помощью командной строки или диспетчера кластеров HPC. Ниже приводится несколько простых примеров.

  • Отобразите имена текущих пользователей на всех узлах кластера.

    clusrun whoami
    
  • Установите средство отладки gdb с помощью команды yum на всех узлах в группе linuxnodes и перезапустите узлы через 10 минут.

    clusrun /nodegroup:linuxnodes yum install gdb –y; shutdown –r 10
    
  • Создайте сценарий оболочки, который отображает каждое число в диапазоне от 1 до 10 в течение секунды на каждом узле Linux в кластере, запустите его и сразу же отобразите выходные данные с этих узлов.

    clusrun /interleaved /nodegroup:linuxnodes echo \"for i in {1..10}; do echo \\\"\$i\\\"; sleep 1; done\" ^> script.sh; chmod +x script.sh; ./script.sh
    

Примечание

Возможно, в командах clusrun потребуется использовать определенные escape-символы. Как показано в этом примере, используйте ^в командной строке для экранирования символа ">".

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