Назад в библиотеку

Быстрая установка MPI кластера на Amazon EC2

Автор: Glenn K. Lockwood
Перевод с англ.: В.В. Кулаков
Источник: glennklockwood.blogspot.com

Предисловие

Недавно у меня возникла необходимость выполнить некоторые сравнительные тесты MPI на Amazon EC2 с целью получить общее представление о том, какими вычислительными возможностями обладает кластер EC2. Я никогда не использовал EC2 прежде, поэтому огромное количество настроек, необходимых для запуска MPI приложений казался мне просто пугающим. Я понятия не имел в чем различие между AMI и instance, какие AMI и instance использовать, и должен ли я использовать какие-либо автоматические инструменты конфигурирования (как Starcluster) чтобы быстро настроить кластер.

Большинство онлайн-руководств отчасти бесполезно в этом, они лишь пытаются привести некоторое подтверждение концепции о том, как просто получить полностью сконфигурированный кластер в облаке, используя некоторые наборы инструментов для настройки. Они освещают лишь основы, как запустить эти instances и что ожидать до их связи. К счастью, мне потребовалось всего одно утро, чтобы сконфигурировать и запустить MPI. Для тех, кто просто хочет быстро получить приложения MPI, работающие на EC2, вот мои заметки.
Стоит сказать, что далее термины "экземпляр" (instance) и "узел" (или "вычислите узел") будут взаимозаменяемы.

Шаг 1: Подготовьте учетную запись EC2

Перейдите на http://aws.amazon.com/ и выберите "My Account / Console" в правом верхнем углу. После этого перейдите в "AWS Management Console."   Вам будет предложено выполнить вход в систему, и если у вас уже есть аккаунт на Amazon.com, вы сможете его использовать.   Вы должны зарегистрироваться для работы с AWS. Вам потребуется ввести номер свой кредитной карты для того, чтобы иметь возможность расплачиваться за использованные узлы. Также для проверки вашей личности вам придется ответить на тестовый звонок.  После этого перейдите в консоль управления AWS и выберите пункт "EC2":


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

Шаг 2: создание своих узлов

Чтобы запустить мастера, используйте кнопку "Launch Instances".


Я использовал стандартную версию мастера.

Выберите образ виртуальной машины


Первым делом мастер попросит вас указать AMI (Amazon Machine Image).   Выберите из списка Cluster Compute Amazon Linux ABI.


Этот тип образа виртуальной машины содержит распределенную ОС, базовый набор программного обеспечения, и начальный взод пользователя в систему.   Бросается в глаза то, что образы "Amazon Linux" и "Cluster Compute Amazon Linux," имеют одинаковое описание.   На сколько я понимаю, образ "Cluster Compute" слой виртуализации ("HVM") который намного тоньше чем у другого образа. В итоге вы получаете узел, выполняющийся на цельном физическом вычислительном узле, виртуализации подлежат только порты ввода/вывода.   Как видно, при выборе параметра "Cluster Compute Amazon Linux" AMI, ничего не говорится по поводу характеристик аппаратной части узла.

Выбор типа узла


На следующем шаге будем оперировать параметрами аппаратуры.


Узел cc2.8xlarge имеет параметры, близкие к SDSC Gordon: 2 процессора Intel Xeon E5-2670 и ~60 GB ОЗУ на каждому узле.   Естественно, я не хотел запускать тяжелые вычисления для тестов, так как это могло бы мне дорого стоить. Я запустил только 2 узла, чтобы провести необходимое тестирование работы MPI коммуникаций.

Amazon позволяет запустить эти узлы по стандартному тарифу, $2.40 за узел в час, или можно попытаться получить значительную скидку, используя spot-узлы.  Несмотря на возможность того, что мои узлы могут быть в любой момент остановлены, 90% скидка оправдывала риск. Итак, узлы были запущены в spot-режиме и с минимальным предложением стоимости.  Этого оказалось достаточно, чтобы поддерживать работу узлов в течение нескольких часов, и я ни разу не видел предложения платить за узлы больше.  К слову сказать, когда завершилось выполнение на 2-х узлах, я использовал кластер из 4-х узлов. Выполнение теста стоило нам $3.04.

Задание Placement Group


Далее рассмотрим крайне важный аспект - задание Placement Group для узлов.


Экземпляры, которые находятся в одной группе по размещению, совместно используют одну подсеть и в полной мере используют пропускную способность 10 Гигабитного Ethernet, доступного этому кластеру  Задайте группе имя. Добавить узлы в группу вы сможете и позже. Также есть возможность запустить большее число узлов и добавить их в ту же подсеть.

Поле с пользовательскими данными для наших целей не актуально. При выходе не забудьте выбрать опцию "terminate."   Это необходимо для того, чтобы вы не платили за использование узлов, которые имеют статус "stopped" но не "terminated."

Настройка хранилища


На следующем шаге зададим тома для хранилища ваших узлов.


Даже при том, что Кластер AMI, поддерживает EBS (блочное хранение), я не думаю, что это хранение долговременное, так как персистентный EBS обычно стоит дополнительных денег. Я принимаю значения по умолчанию, но Вы можете установить "Удаляются после Завершения" в FALSE. Кластером используются Корневые каталоги, поддерживающие EBS. Быть может возможно сделать диски на этих экземплярах энергонезависимыми, но я не экспериментировал с этим.
Если у вас есть деньги, можете создать постоянное EBS-хранилище и смонтировать его для всех узлов.   Вкратце об этом будет рассказано в конце данного руководства.

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


Следующая форма позволит Вам задать теги, чтобы управлять Вашими узлами.


Это не столь важно для нашего теста, так что не стоит задерживаться на этом.

Создание пар ключей


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


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

Создание группы безопасности


Следующий шаг настройки группы безопасности вашего кластера также очень важен.


По умолчанию мастер предложит вам создать группу безопасности с именем "quick-start-1". Это откроет порт 22 (SSH) но будет блокировать весь остальной траффик.  Вы должны дать возможность всем узлам вашего кластера свободно связываться через MPI. Необходимо создать правило для этой группы безопасности, которое откроет все порты (1-65535) для всех узлов из этой группы безопасности (quick-start-1).  Как только вы введете эти два параметра, вы должны нажать кнопку Add Rule, иначе это правило не будет применено и MPI не будет работать!

Загрузка ваших узлов


На этом работа мастера завершена.


Нажмите кнопку Launch, и ваши узлы начнут загружаться.   Вернитесь в панель управления EC2 и ожидайте пока ваши виртуальные машины не получат статус "Running".