Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Сценарии использования
  • Веб-сервис
    • Все сценарии
    • Cтатический сайт в Object Storage
    • Cайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Yandex Load Balancer
    • Отказоустойчивый сайт с использованием DNS-балансировки
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Веб-сайт на базе 1С-Битрикс
  • Интернет-магазины
    • Все сценарии
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на Opencart
  • Архив данных
    • Все сценарии
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage через CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage через Bacula
    • Резервное копирование в Object Storage через Veritas Backup Exec
    • Оцифровка архива в Yandex Vision
  • Тестовая среда
    • Все сценарии
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых виртуальных машинах
  • Управление инфраструктурой
    • Все сценарии
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Создание кластера Windows-серверов «1С:Предприятия» с базой данных MS SQL Server
    • Миграция в Yandex.Cloud с помощью Hystax Acura
    • Аварийное восстановление в Yandex.Cloud с помощью Hystax Acura
    • Настройка отказоустойчивой архитектуры в Yandex.Cloud
  • Windows в Yandex.Cloud
    • Все сценарии
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
  • Сетевая маршрутизация
    • Все сценарии
    • Маршрутизация с помощью NAT-инстанса
    • Создание VPN-туннеля
    • Установка виртуального роутера Cisco CSR1000v
    • Установка виртуального роутера Mikrotik CHR
    • Создание VPN-соединения с помощью OpenVPN
  • Визуализация и анализ данных
    • Все сценарии
    • Визуализация данных из CSV-файла
    • Визуализация данных из базы данных ClickHouse
    • Визуализация данных из Метрики
    • Визуализация данных из Metriсa Logs API
    • Публикация в DataLens Public диаграммы с картой на основе CSV-файла
    • Визуализация данных из AppMetrica
    • Визуализация геоданных из CSV-файла
    • Визуализация данных из базы данных ClickHouse с геослоями из Marketplace
    • Визуализация данных из статистики подкастов Яндекс.Музыки
  • Интернет вещей
    • Сценарии работы с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
  1. Тестовая среда
  2. Высокопроизводительные вычисления на прерываемых виртуальных машинах

Высокопроизводительные вычисления (HPC) на прерываемых виртуальных машинах

  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте основную виртуальную машину в облаке
    • Создайте виртуальную машину
    • Настройте виртуальную машину
  • Подготовьте кластер виртуальных машин
    • Создайте кластер
    • Проверьте работу кластера
    • Настройте NFS
  • Подготовьте задачу для вычислений в кластере
  • Запустите и проанализируйте вычисления
  • Как удалить созданные ресурсы

HPC-кластеры используются в вычислительных целях, в частности в научных исследованиях и расчетных задачах. Вычислительный кластер представляет собой массив серверов (вычислительных узлов), объединенных сетью. Каждый вычислительный узел имеет несколько многоядерных процессоров, свою оперативную память и работает под управлением независимой операционной системы. Наиболее распространено использование однородных кластеров, где все узлы одинаковы по своей архитектуре и производительности.

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

Для создания кластера и запуска вычислительной задачи:

  1. Подготовьте облако к работе.
  2. Подготовьте основную виртуальную машину в облаке.
    1. Создайте виртуальную машину.
    2. Настройте виртуальную машину.
  3. Подготовьте кластер виртуальных машин.
  4. Создайте кластер.
    1. Проверьте работу кластера.
    2. Настройте NFS.
    3. Смонтируйте директории на ВМ из группы.
  5. Подготовьте задачу для вычислений в кластере.
  6. Запустите и проанализируйте вычисления.
  7. Как удалить созданные ресурсы.

Подготовьте облако к работе

Перед работой нужно зарегистрироваться в Yandex.Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex.Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

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

Подробнее об облаках и каталогах.

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

В стоимость поддержки серверов входит:

  • плата за несколько запущенных виртуальных машин (см. тарифы Yandex Compute Cloud);
  • плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud);

Подготовьте основную виртуальную машину в облаке

Создайте виртуальную машину

Для того, чтобы создать виртуальную машину:

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

  2. В поле Имя введите имя виртуальной машины. Для наглядности примера укажите master-node.

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

  4. В блоке Образы из Cloud Marketplace выберите образ Ubuntu.

  5. В блоке Диски выберите жесткий диск размером 13 ГБ. Тип диска выберите SSD, поскольку он будет использоваться для сетевого доступа другими виртуальными машинами.

  6. В блоке Вычислительные ресурсы:

    • Выберите платформу виртуальной машины.
    • Для решения текущих вычислительных задач укажите конфигурацию:
    • Платформа — Intel Cascade Lake.
    • Гарантированная доля vCPU — 100%.
    • vCPU — 4.
    • RAM — 4 ГБ.
    • Дополнительно — «Прерываемая».
  7. В блоке Сетевые настройки:

    • Выберите Сеть и Подсеть, к которым нужно подключить виртуальную машину. Если нужной сети или подсети еще нет, вы можете создать их прямо на странице создания ВМ.
    • В поле Публичный адрес оставьте значение Автоматически, чтобы назначить виртуальной машине случайный внешний IP-адрес из пула Yandex.Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
  8. В блоке Доступ укажите данные для доступа к виртуальной машине:

    • В поле Логин введите предпочтительное имя пользователя, который будет создан на виртуальной машине.
    • В поле SSH-ключ скопируйте ваш открытый SSH-ключ. Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к виртуальным машинам по SSH.
  9. Нажмите кнопку Создать ВМ.

Настройте виртуальную машину

  1. Зайдите по SSH на виртуальную машину и перейдите в режим администратора в консоли:

    $ sudo -i
    
  2. Выполните обновление репозитория и поставьте требуемые утилиты:

    $ apt update
    $ apt install -y net-tools htop libopenmpi-dev nfs-common
    
  3. Выйдите из режима администратора и сгенерируйте RSA-ключи для доступа между виртуальными машинами:

    $ exit
    $ ssh-keygen
    
  4. Добавьте сгенерированный ключ в список разрешенных:

    $ cd ~/.ssh
    $ cat id_rsa.pub >> authorized_keys
    

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

Создайте кластер

  1. В консоли управления перейдите в раздел Диски и нажмите Создать снимок у диска ВМ master-node. Задайте имя master-node-snapshot. После того, как снимок будет создан, он появится в разделе Снимки дисков.
  2. Перейдите в раздел Группы виртуальных машин и нажмите Создать группу.
  3. Создайте группу виртуальных машин:
    • В поле Имя укажите имя будущей группы, например compute-group.
    • В поле Сервисный аккаунт добавьте сервисный аккаунт к данной группе. Если у вас нет сервисного аккаунта, нажмите Создать новый, укажите его имя и нажмите на кнопку Создать.
    • Выберите ту же Зону доступности в которой находится ВМ master-node. Зона должна совпадать у виртуальных машин, чтобы минимизировать задержки при их взаимодействии.
    • В блоке Шаблон виртуальной машины нажмите кнопку Задать. Откроется экран создания шаблона.
      • В блоке Диски выберите Добавить диск. В открывшемся окне укажите:

        • Назначение диска — загрузочный.
        • Тип диска — SSD.
        • Наполнение — из созданного снимка master-node-snapshot.
      • В блоке Вычислительные ресурсы задайте конфигурацию, аналогичную конфигурации основной виртуальной машины:

        • Платформа — Intel Cascade Lake.
        • Гарантированная доля vCPU — 100%.
        • vCPU — 4.
        • RAM — 4 ГБ.
        • Дополнительно — «Прерываемая».
      • В блоке Сетевые настройки укажите те же сеть и подсеть, что и у основной машины. Тип адреса оставьте Автоматически.

      • В блоке Доступ укажите данные для доступа к виртуальной машине:

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

  4. В блоке Масштабирование выберите количество создаваемых виртуальным машин. Укажите 3 виртуальные машины.
  5. Нажмите кнопку Создать.

Проверьте работу кластера

Зайдите по SSH на каждую из виртуальных машин в группе compute-group и убедитесь, что с них есть доступ к ВМ master-node по SSH.

$ ping master-node
$ ssh master-node

Настройте NFS

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

  1. Зайдите на ВМ master-node по SSH и установите NFS-сервер:

    $ ssh <Публичный IP-адрес ВМ master-node>
    $ sudo apt install nfs-kernel-server
    
  2. Создайте директорию shared, которая будет общей для всех виртуальных машин:

    $ mkdir ~/shared
    
  3. Откройте файл /etc/exports любым текстовым редактором, например, nano:

    $ sudo nano /etc/exports
    
  4. Добавьте запись для доступа к директории shared в файл:

    /home/<имя пользователя>/shared *(rw,sync,no_root_squash,no_subtree_check)
    

    Сохраните файл.

  5. Примените настройки и перезагрузите сервис:

    $ sudo exportfs -a
    $ sudo service nfs-kernel-server restart
    

Смонтируйте директории на ВМ из группы

На каждой ВМ из группы compute-group смонтируйте созданную директорию:

  1. Создайте директорию shared и смонтируйте туда директорию с ВМ master-node:

    $ mkdir ~/shared
    $ sudo mount -t nfs master-node:/home/<имя пользователя>/shared ~/shared
    
  2. Убедитесь, что директория была успешно смонтирована:

    $ df -h
    Filesystem                            Size  Used Avail Use% Mounted on
    ...
    master-node:/home/<имя пользователя>/shared   13G  1.8G   11G  15% /home/<имя пользователя>/shared
    

Подготовьте задачу для вычислений в кластере

  1. Зайдите по SSH на ВМ master-node, перейдите в директорию shared и скачайте исходный файл task.c с вычислительной задачей:

    $ cd ~/shared
    $ wget https://raw.githubusercontent.com/cloud-docs-writer/examples/master/hpc-on-preemptible/task.c
    

    Этот код решает систему линейных алгебраических уравнений с помощью метода Якоби. Задача имеет одну из распределенных реализаций с помощью MPI.

  2. Скомпилируйте исходный файл в исполняемый:

    $ mpicc task.c -o task
    

    В директории shared должен был появиться исполняемый файл task.

Запустите и проанализируйте вычисления

Совет

Для проверки загрузки ядер виртуальных машин можно выполнять команду htop в отдельной SSH-сессии на каждой виртуальной машине.

  1. Запустите выполнение задачи на 2 ядрах, используя ресурсы только ВМ master-node:

    $ mpirun -np 2 task
    

    После выполнения задачи программа выведет затраченное на решение время:

    JAC1 STARTED
    1: Time of task=45.104153
    0: Time of task=45.103931
    
  2. Запустите выполнение задачи на 4 ядрах, используя ресурсы только ВМ master-node и получите соответствующие результаты:

    $ mpirun -np 4 task
    JAC1 STARTED
    1: Time of task=36.562328
    2: Time of task=36.562291
    3: Time of task=36.561989
    0: Time of task=36.561695
    
  3. Запустите выполнение задачи на 4 ядрах, используя ресурсы двух виртуальных машин, по 2 ядра на каждой машине. Для этого запустите выполнение задачи с ключом -host, который принимает параметры вида <IP-адрес ВМ>:<количество ядер>[,<ip>:<cores>[,...]]. После вычисления задачи программа выведет результат:

    $ mpirun -np 4 -host localhost:2,<IP-адрес ВМ>:2 task
    JAC1 STARTED
    0: Time of task=24.539981
    1: Time of task=24.540288
    3: Time of task=24.540619
    2: Time of task=24.540781
    
  4. По аналогии можно продолжать увеличивать число используемых виртуальных машин и ядер и убедиться, что распределенные вычисления позволяют значительно увеличивать скорость выполнения задачи.

Как удалить созданные ресурсы

Чтобы перестать платить за развернутый сервер и группу виртуальных машин, достаточно удалить ВМ master-node и группу compute-group.

Если вы зарезервировали статический публичный IP-адрес специально для этой ВМ:

  1. Откройте сервис Virtual Private Cloud в вашем каталоге.
  2. Перейдите на вкладку IP-адреса.
  3. Найдите нужный адрес, нажмите значок и выберите пункт Удалить.
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте основную виртуальную машину в облаке
  • Создайте виртуальную машину
  • Настройте виртуальную машину
  • Подготовьте кластер виртуальных машин
  • Создайте кластер
  • Проверьте работу кластера
  • Настройте NFS
  • Подготовьте задачу для вычислений в кластере
  • Запустите и проанализируйте вычисления
  • Как удалить созданные ресурсы
Language / Region
Вакансии
Политика конфиденциальности
Условия использования
Брендбук
© 2021 ООО «Яндекс.Облако»