Как создать кластер в Ubuntu

Обновлено: 04.07.2024

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

Кластер Beowulf – это группа обычно идентичных имеющихся в продаже компьютеров, работающих под управлением бесплатного программного обеспечения с открытым исходным кодом (FOSS), Unix-подобной операционной системы, такой как BSD, GNU/Linux или Солярис. Они объединены в небольшую локальную сеть TCP/IP, и в них установлены библиотеки и программы, позволяющие распределять обработку между ними. [1]

Это означает, что кластер Beowulf можно легко построить из готовых компьютеров под управлением GNU/Linux в простой домашней сети. Таким образом, создание кластера, похожего на Беовульф, вполне достижимо, если у вас уже есть небольшая локальная сеть TCP/IP дома с настольными компьютерами под управлением Ubuntu Linux или любого другого дистрибутива GNU/Linux.

Существует множество способов установки и настройки кластера. Существует OSCAR [2], который позволяет любому пользователю, вне зависимости от опыта, легко установить кластер типа Beowulf на поддерживаемых дистрибутивах Linux. Он устанавливает и настраивает все необходимое программное обеспечение в соответствии с пользовательским вводом.

Также существует набор инструментов NPACI Rocks [3], который включает последний дистрибутив Red Hat и программное обеспечение для кластера. Rocks устраняет трудности развертывания управляемых кластеров. Rocks упрощает развертывание, управление, обновление и масштабирование кластеров.

Оба упомянутых выше набора инструментов для развертывания кластеров были сделаны простыми в использовании и требующими от пользователя минимальных знаний. Но цель этого урока — объяснить, как вручную построить кластер, подобный Беовульфу. По сути, упомянутые выше наборы инструментов выполняют большую часть установки и настройки за вас, делая процесс обучения бесполезным. Поэтому не имеет особого смысла использовать какой-либо из этих наборов инструментов, если вы хотите изучить основы работы кластера. Поэтому в этом руководстве объясняется, как вручную создать кластер, вручную установив и настроив необходимые инструменты. В этом руководстве я предполагаю, что у вас есть базовые знания об операционной системе на базе Linux и вы знаете, как работать с командной строкой. Однако я попытался сделать это как можно более простым для понимания. Имейте в виду, что для меня это тоже новая территория, и есть большая вероятность, что в этом руководстве показаны методы, которые могут быть не самыми лучшими.

Учебное пособие по кластеризации от SCFBio [4] дает хорошее представление о кластерах Beowulf. В нем описываются предварительные условия для создания кластера Beowulf и зачем они нужны.

1. Что такое кластер Беовульф?

В книге Разработка вычислительного кластера в стиле Beowulf автор [brown2004] дает более подробный ответ на этот вопрос. Согласно этой книге, существует общепринятое определение скопления Беовульфа. В этой книге настоящий Беовульф описывается как кластер компьютеров, объединенных в сеть со следующими характеристиками:

Узлы выделены для кластера beowulf.

Сеть, в которой находятся узлы, выделена для кластера beowulf.

Узлы представляют собой серийные компьютеры для массового рынка (M2COTS).

Сеть также является объектом COTS.

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

Полученный кластер используется для высокопроизводительных вычислений (HPC).

2. Создание виртуального кластера Beowulf

Неплохо начать с создания виртуального кластера с помощью программного обеспечения для виртуализации, такого как VirtualBox. Я просто использовал свой ноутбук под управлением Ubuntu в качестве главного узла, а в VirtualBox были созданы два виртуальных вычислительных узла под управлением Ubuntu Server Edition. Виртуальный кластер позволяет создавать и тестировать кластер без необходимости в дополнительном оборудовании. Однако этот метод предназначен только для тестирования и не подходит для повышения производительности.

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

3. Создание фактического кластера

Рекомендуется сначала создать и протестировать виртуальный кластер, как описано выше. Если у вас есть запасные компьютеры и сетевые компоненты, вы можете использовать их для создания настоящего кластера. Узлы (компьютеры, являющиеся частью кластера) и сетевое оборудование обычно доступны для широкой публики (требования beowulf 3 и 4). В этом руководстве мы будем использовать операционную систему Ubuntu для питания машин и программное обеспечение с открытым исходным кодом для обеспечения распределенных параллельных вычислений (требование beowulf 5).Мы протестируем кластер с помощью специальных версий инструментов биоинформатики, которые выполняют сложные вычисления (требование Беовульфа 6).

Кластеры высокой доступности (также известные как кластеры высокой доступности, отказоустойчивые кластеры или Metroclusters Active/Active) — это группы компьютеров, которые поддерживают серверные приложения, которые можно надежно использовать с минимальным временем простоя.< /p>

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

Без кластеризации, если сервер, на котором выполняется определенное приложение, выходит из строя, приложение будет недоступно до тех пор, пока не будет исправлен сбой сервера. Кластеризация высокой доступности исправляет эту ситуацию, обнаруживая аппаратные/программные сбои и немедленно перезапуская приложение в другой системе без вмешательства администратора. Этот процесс известен как отработка отказа.

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

Кластеры высокой доступности часто используются для критически важных баз данных, совместное использование файлов в сети, бизнес-приложения и службы поддержки клиентов, такие как веб-сайты электронной коммерции.

Пульс кластера высокой доступности

Реализации кластера HA пытаются создать избыточность в кластере, чтобы устранить единые точки отказа, включая множественные сетевые подключения и хранилище данных, которое избыточно подключено через сети хранения данных.

Кластеры HA обычно используют соединение с частной сетью пульса, которое используется для мониторинга работоспособности и состояния каждого узла в кластере. Одно тонкое, но серьезное условие, с которым должно быть в состоянии справиться все программное обеспечение для кластеризации, — это разделение мозгов, когда все частные каналы отключаются одновременно, но узлы кластера все еще работают.

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

Кворум кластера высокой доступности

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

Пример

2nodeHAcluster

Фехтование

Ограждение защищает ваши данные от повреждения, а ваше приложение — от недоступности из-за непреднамеренного одновременного доступа мошеннических узлов.

Тот факт, что узел не отвечает, не означает, что он прекратил доступ к вашим данным. Единственный способ быть на 100 % уверенным в безопасности ваших данных — использовать ограждение, чтобы гарантировать, что узел действительно отключен, прежде чем разрешать доступ к данным с другого узла.

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

.

Ограждение также известно как STONITH, аббревиатура от «Стреляйте в другой узел в голове», поскольку наиболее популярным видом ограждения является отключение питания хоста.

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

НАИБОЛЕЕ ВАЖНАЯ часть кластера, использующая SAN или другую технологию общего хранилища (Кластеры высокой доступности Ubuntu могут поддерживаться только в том случае, если настроен механизм ограждения).

Требуется для OCFS2, GFS2, cLVMd (до Ubuntu 20.04), lvmlockd (начиная с 20.04 и выше).

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

В последней версии Ubuntu LTS присутствуют следующие пакеты:

Основные пакеты Ubuntu HA

Пакеты в этом списке поддерживаются так же, как и любые другие пакеты, доступные в [основном] репозитории.

Пакет URL
libqb Ubuntu | Upstream
kronosnet Ubuntu | Upstream
corosync Ubuntu | Upstream
pacemaker Ubuntu | Upstream
ресурс-агенты Ubuntu | Upstream
fence-агенты Ubuntu | Upstream
crmsh Ubuntu | Upstream
cluster-glue Ubuntu | Upstream
drbd-utils Ubuntu | Upstream
dlm Ubuntu | Upstream
gfs2-utils Ubuntu | Upstream
keepalived Ubuntu | Восходящий поток

Kronosnet. Kronosnet, часто называемый knet, представляет собой уровень сетевой абстракции, разработанный для обеспечения высокой доступности. Corosync использует Kronosnet для предоставления нескольких сетей для своего межсоединения (заменяя старый протокол Totem Redundant Ring) и добавляя поддержку некоторых дополнительных функций, таких как горячее подключение межсетевых сетей.

Corosync, или уровень членства в кластере, обеспечивает надежный обмен сообщениями, информацию о членстве и кворуме в кластере. В настоящее время Pacemaker поддерживает Corosync в качестве этого слоя.

Агенты ресурсов — сценарии или компоненты операционной системы, которые запускают, останавливают или контролируют ресурсы с учетом набора параметров ресурсов. Они обеспечивают единый интерфейс между кардиостимулятором и управляемыми службами.

Агенты ограждения — скрипты, выполняющие действия по ограждению узла с заданными параметрами цели и ограждающего устройства.

Pacemaker — или Диспетчер ресурсов кластера — представляет собой мозг, который обрабатывает события, происходящие в кластере, и реагирует на них. Событиями могут быть: узлы, присоединяющиеся к кластеру или покидающие его, события ресурсов, вызванные сбоями, обслуживанием или запланированными действиями. Для достижения желаемой доступности Pacemaker может запускать и останавливать ресурсы и ограничивать узлы.

DRBD — распределенное реплицированное блочное устройство. DRBD — это распределенная реплицированная система хранения данных для платформы Linux. Он реализован в виде драйвера ядра, нескольких приложений управления пользовательским пространством и некоторых сценариев оболочки. DRBD традиционно используется в кластерах высокой доступности (HA).

DLM. Распределенный диспетчер блокировок (DLM) работает на каждом компьютере в кластере с идентичной копией базы данных блокировок на уровне кластера. Таким образом, DLM предоставляет программным приложениям, распределенным по кластеру на нескольких компьютерах, средства для синхронизации их доступа к общим ресурсам.

Keepalived — Keepalived предоставляет простые и надежные средства для балансировки нагрузки и обеспечения высокой доступности для системы Linux и инфраструктур на основе Linux. Инфраструктура балансировки нагрузки основана на хорошо известном и широко используемом модуле ядра Linux Virtual Server (IPVS), обеспечивающем балансировку нагрузки уровня 4. Keepalived реализует набор средств проверки для динамического и адаптивного обслуживания и управления пулом серверов с балансировкой нагрузки в соответствии с их работоспособностью. С другой стороны, высокая доступность достигается протоколом VRRP.

Пакеты сообщества Ubuntu HA

Пакеты в этом списке поддерживаются так же, как и любые другие пакеты, доступные в репозитории [universe].

Пакет URL
pcs* Ubuntu | Восходящий поток
csync2 Ubuntu | Восходящий поток
corosync-qdevice Ubuntu | Upstream
fence-virt Ubuntu | Upstream
sbd Ubuntu | Upstream
стенд Ubuntu | Восходящий поток

Corosync-Qdevice. Его основное использование для кластеров с четными узлами, работает на уровне corosync (кворума). Corosync-Qdevice — независимый арбитр для решения ситуаций с разделенным мозгом. (qdevice-net поддерживает несколько алгоритмов).

Блочное устройство SBD - STONITH может быть особенно полезным в средах, где традиционные механизмы ограждения невозможны. SBD интегрируется с Pacemaker, сторожевым устройством и общим хранилищем, чтобы обеспечить надежное самозавершение узлов, когда требуется ограждение.

Примечание: pcs, скорее всего, заменит crmsh в [основном] репозитории в будущих версиях Ubuntu.

Устаревшие пакеты Ubuntu HA

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

Пакеты, связанные с Ubuntu HA

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

Пакет URL
multipath-tools Ubuntu | Upstream
open-iscsi Ubuntu | Upstream
sg3-utils Ubuntu | Upstream
tgt ИЛИ targetcli-fb* Ubuntu | Upstream
lvm2 Ubuntu | Восходящий поток

  • LVM2 в сценарии кластера с общим хранилищем:

CLVM — поддерживается до Ubuntu 20.04.
Диспетчер распределенных блокировок (DLM) используется для одновременного доступа к метаданным LVM. Всякий раз, когда узлу кластера необходимо изменить метаданные LVM, он должен получить разрешение от своего локального clvmd, который находится в постоянном контакте с другими демонами clvmd в кластере и может сообщить о желании получить блокировку определенного набора объектов.

lvmlockd — поддерживается после Ubuntu 20.04.
По состоянию на 2017 год — стабильный компонент LVM, предназначенный для замены clvmd и обеспечивающий прозрачность блокировки объектов LVM для остальной части LVM без использования диспетчера распределенных блокировок.< /p>

  • lvmlockd поддерживает два подключаемых модуля блокировки кластера: DLM и SANLOCK. Плагин SANLOCK может поддерживать до ~2000 узлов, что дает преимущества при использовании LVM в большом кластере виртуализации/хранилища, в то время как плагин DLM подходит для кластера высокой доступности.
  • У lvmlockd дизайн лучше, чем у clvmd. clvmd — это система блокировки на уровне командной строки, что означает, что все программное обеспечение LVM зависнет, если какая-либо команда LVM столкнется с проблемой полной блокировки.
  • lvmlockd может работать с lvmetad.

Примечание: targetcli-fb (Linux LIO), скорее всего, заменит tgt в будущих версиях Ubuntu.

Первоначальная документация

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

Выражаем особую благодарность и признательность проекту ClusterLabs Project за всю эту подробную документацию.

Следуйте этим инструкциям, чтобы настроить первый сервер в кластере Striim. При установке будет создана системная учетная запись striim, и все установленные файлы будут принадлежать этой учетной записи.

Убедитесь, что система соответствует системным требованиям . Системные требования

Если вы будете размещать репозиторий метаданных в Oracle или PostgreSQL, следуйте инструкциям в разделе Настройка репозитория метаданных Striim.

Скачать striim-node- 4.0.5-Linux.deb,.

Если вы планируете разместить репозиторий метаданных во внутреннем экземпляре Derby, загрузите striim-dbms-4.0.5-Linux.deb .

При необходимости загрузите примеры приложений, striim-samples- 4.0.5-Linux.deb .

Установите пакет узла:

sudo dpkg -i striim-node- 4.0.5 -Linux.deb

Если вы используете Derby для размещения хранилища метаданных, установите его пакет:

sudo dpkg -i striim-dbms- 4.0.5 -Linux.deb

При необходимости установите образец пакета приложения:

sudo dpkg -i striim-samples- 4.0.5 -Linux.deb

Запустите sudo su - striim /opt/striim/bin/sksConfig.sh и введите пароли для хранилища ключей Striim и пользователей admin и sys. Если вы размещаете репозиторий метаданных в Oracle или PostgreSQL, введите и этот пароль (см. Настройка репозитория метаданных Striim). Если вы используете оболочку Bash или Bourne, символы, кроме букв, цифр и следующих знаков препинания, должны быть экранированы: , . _ + : @ % / -

Если хранилище метаданных размещено в Derby, измените его пароль, как описано в разделе Изменение пароля Derby.

WAClusterName: имя кластера Striim (обратите внимание, что если существующий кластер Striim в сети имеет это имя, Striim попытается присоединиться к нему)

CompanyName: Если вы укажете ключи, они должны точно совпадать с соответствующим названием компании. Если вы используете пробную лицензию, любое имя будет работать.

ProductKey и LicenseKey: если у вас есть ключи, укажите их, в противном случае оставьте поле пустым, чтобы запустить Striim с пробной лицензией. Обратите внимание, что вы не можете создать многосерверный кластер, используя пробную лицензию.

Интерфейсы: если система имеет более одного IP-адреса, укажите тот, который вы хотите использовать Striim, в противном случае оставьте поле пустым, и Striim установит его автоматически.

Если репозиторий метаданных не размещается во внутреннем экземпляре Derby с настройками по умолчанию, см. раздел Настройка startUp.properties для репозитория метаданных .

При необходимости выполните дополнительные задачи, описанные в разделе «Настройка Striim», например, увеличьте максимальный объем памяти, который может использовать сервер.

Перезагрузите систему и убедитесь, что Striim перезапустился автоматически.

Для Ubuntu 14.04 введите sudo start striim-dbms , подождите десять секунд, затем введите sudo start striim-node .

Для Ubuntu 16.04 или более поздней версии введите:

Подождите десять секунд, затем введите:

Затем sudo tail -F /opt/striim/logs/striim-node.log и дождитесь сообщения Пожалуйста, перейдите на . для администрирования или используйте консоль .

Если вы установили несколько версий Striim в одной системе, используйте rpm -qa | grep striim для определения пакетов для 4.0.5, которые необходимо удалить.

После удаления вы можете удалить /opt/striim , /var/striim и /var/log/striim .


Изображение предоставлено: Блас М. Бенито

В этом посте я объясню, как настроить небольшой кластер Beowulf с персональным ПК под управлением Ubuntu 20.04 и парой Intel NUC под управлением Ubuntu Server 20.04 с конечной целью распараллеливания задач R.

  • Необходимый материал
  • Настройки сети
  • Установка протокола защищенной оболочки
  • Установка сервера Ubuntu в NUC
  • Установка R в NUC
  • Управление сетью кластера

Преамбула

У меня есть небольшая, но приятная модель HP ENVY TE01-0008ns с 32 ГБ ОЗУ, 8 ЦП и 3 ТБ жесткого диска под управлением Ubuntu 20.04, которую я использую для выполнения всех своих вычислительных задач (и большинства моего твиттера). Несколько месяцев назад я соединил его с двумя моими ноутбуками (один из них уже умер, RIP мой дорогой skynet), чтобы создать небольшой кластер для выполнения параллельных задач в R.

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

Именно здесь в игру вступают симпатичные INTEL NUC (от Next Unit of Computing). NUC – это полноценные компьютеры в небольших коробках, обычно продаваемые без модулей оперативной памяти и жесткого диска (отсюда и термин barebone). Поскольку они потребляют мало энергии, я подумал, что они идеально подойдут для моего будущего домашнего кластера.

Материал

Я подарил себе:

Весь набор стоил около 530 евро, но обратите внимание, что у меня была четкая цель: «дублировать» мою вычислительную мощность с минимальным количеством NUC, сохраняя при этом долю 4 ГБ ОЗУ на каждый ЦП. кластер (исходя из особенностей моего настольного компьютера). Более базовая настройка с более скромными NUC и меньшей оперативной памятью обойдется вдвое дешевле.

В этом поучительном видеоролике Дэвида Гарри показано, как установить твердотельный накопитель и модули оперативной памяти в Intel NUC. Это действительно занимает максимум 5 минут, нужно только быть немного осторожным с планками RAM, штифты должны полностью войти в свои слоты, прежде чем закрепить палки на месте.

Настройки сети

Перед началом установки операционной системы в NUCS настройка сети выполняется следующим образом:

  • Мой настольный ПК подключен к маршрутизатору через WIFI и динамический IP-адрес (DHCP).
  • ПК и каждый NUC подключены к коммутатору с помощью кабелей Ethernet категории 6.

Схема сети

Чтобы совместно использовать WIFI-соединение моего ПК с NUC, мне нужно подготовить новый профиль подключения с помощью инструмента командной строки NetworkManager Ubuntu с именем nmcli , как показано ниже.

Во-первых, мне нужно найти имя моего интерфейса Ethernet, проверив состояние моих сетевых устройств с помощью командной строки.

Там я вижу, что мой интерфейс Ethernet называется enp2s0 .

Во-вторых, мне нужно настроить общее подключение.

Если ifname enp2s0 — это имя интерфейса, который я хочу использовать для нового подключения, ipv4.method shared — это тип подключения, а con-name cluster — это имя, которое я хочу использовать для подключения. Эта операция добавляет правила брандмауэра для управления трафиком в сети кластера, запускает DHCP-сервер на компьютере, который обслуживает IP-адреса для NUCS, и DNS-сервер, который позволяет NUC преобразовывать интернет-адреса.

После включения переключателя я могу снова проверить состояние подключения с помощью

При проверке IP-адреса устройства с помощью bash ifconfig он должен дать 10.42.0.1 . Любой другой компьютер в сети кластера будет иметь динамический IP-адрес в диапазоне 10.42.0.1/24 .

Дополнительные сведения о том, как установить общее подключение с помощью NetworkManager, можно найти в этом замечательном посте Бениамино Гальвани.

Настройка SSH

Моему компьютеру, управляющему кластером, требуется работающий SSH-клиент, а для NUC требуется SSH-сервер. SSH (Secure Shell) — это протокол удаленной аутентификации, который позволяет безопасно подключаться к удаленным серверам, которые я буду постоянно использовать для управления кластером. Чтобы установить, запустить и проверить его статус, мне просто нужно запустить эти строки в консоли:

Теперь необходимо создать безопасный сертификат удостоверения данного компьютера с именем ssh-key , который предоставляет доступ к удаленным серверам и службам ssh.

Здесь замените «метка» на имя компьютера, который будет использоваться в качестве «директора» кластера.Система запросит имя файла и парольную фразу, которые будут использоваться для шифрования ssh-ключа.

Ключ ssh необходимо добавить к агенту ssh .

Чтобы скопировать ssh-ключ в мою учетную запись GitHub, мне нужно скопировать содержимое файла ~/.ssh/id_rsa.pub (это можно сделать, просто открыв его с помощью gedit ~/.ssh/id_rsa.pub + Ctrl + a + Ctrl + c ) и вставьте его в учетную запись GitHub > Настройки > Ключи SSH и GPG > Новый ключ SSH (зеленая кнопка в верхней правой части окна).

Примечание. Если вы не используете GitHub, вам нужно будет скопировать свой ssh-ключ на NUC, как только они будут запущены и запущены, с помощью ssh-copy-id -i ~/.ssh/id_rsa.pub user_name@ nuc_IP .

Установка и подготовка сервера Ubuntu в каждом NUC

NUC не нужно тратить ресурсы на пользовательский графический интерфейс, который я вообще не буду использовать. Поскольку они будут работать в безголовой конфигурации после того, как кластер будет готов, лучше всего использовать дистрибутив Linux без графического пользовательского интерфейса, такой как сервер Ubuntu.

Установка сервера Ubuntu

Во-первых, важно подключить дисплей, клавиатуру и мышь к NUC при подготовке и включить его, нажав F2, чтобы запустить визуальный BIOS. Эти параметры BIOS необходимо изменить:

Чтобы подготовить загрузочное USB-устройство с сервером Ubuntu 20.04, я сначала загружаю .iso отсюда, выбирая «Вариант 3», что приводит к ручной установке. После загрузки файла .iso я использую Ubuntu Startup Disk Creator для подготовки загрузочного USB-накопителя. Теперь мне просто нужно подключить флешку к NUC и перезагрузить ее.

Установка сервера Ubuntu довольно проста, и в процессе нужно решить лишь несколько моментов:

  • В качестве имени пользователя я выбираю то же, что и на своем персональном компьютере.
  • В качестве имени для NUC я выбрал «nuc1» и «nuc2», но подойдет и любой другой вариант.
  • В качестве пароля для удобства я использую тот же, что и на своем персональном компьютере.
  • Во время настройки сети выберите DHCP. Если сеть настроена правильно и коммутатор включен, через несколько секунд NUC получит IP-адрес в диапазоне 10.42.0.1/24, как и любой другой компьютер в сети кластера.
  • При появлении запроса отметьте вариант «Установить на весь диск», если у вас нет других планов для вашего NUC.
  • Отметьте «Установить OpenSSH».
  • Предоставьте ему свое имя пользователя GitHub, если у вас есть ключ ssh, и он сразу же загрузит его, что значительно облегчит настройку ssh.

Перезагрузитесь после завершения установки. Теперь я продолжаю настраивать операционную систему NUC со своего ПК через ssh.

Настройка NUC

Во-первых, чтобы узнать IP NUC:

Другие альтернативы этой команде: arp -a и sudo arp-scan -I enp2s0 --localnet . Как только я узнаю IP-адрес NUC, я добавляю его в файл etc/hosts моего персонального компьютера следующим образом.

Сначала я открываю файл с правами root.

Теперь я подключаюсь к NUC через ssh, чтобы продолжить подготовку без клавиатуры и дисплея. Я делаю это из Tilix, что позволяет открывать разные вкладки командной строки в одном окне, что очень удобно для управления несколькими NUC одновременно.

Tilix показывает htop на моем ПК и двух NUCS< бр />

Еще один отличный вариант для управления NUC через ssh — терминатор, который позволяет транслировать одни и те же команды сразу в несколько сеансов ssh. Я пробовал его, и он намного лучше подходит для целей управления кластером, чем Tilix. На самом деле, его использование значительно упростило бы этот рабочий процесс, потому что после того, как сервер Ubuntu установлен на каждом NUC, остальные команды конфигурации могут быть переданы одновременно на оба NUC. Жаль, что я слишком поздно обнаружил эту возможность!

Операционная система NUC, вероятно, имеет множество ожидающих обновлений программного обеспечения. Чтобы установить их:

Теперь мне нужно установить набор программных пакетов, которые облегчат управление сетью кластера и самим NUC.

Установка системного времени

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

Установка локали

Операционные системы NUC и ПК должны иметь одинаковую локаль. Его можно установить, отредактировав файл /etc/default/locale с помощью nano (в NUCS) или gedit (на ПК) и добавив эти строки, просто заменив en_US.UTF-8 предпочитаемой локалью.

LANG en_US:en”
LC_NUMERIC en_US.UTF-8”
LC_MONETARY en_US.UTF-8”
LC_IDENTIFICATION en_US.UTF-8”
LC_ADDRESS en_US.UTF- 8”
LC_MEASUREMENT Temperature-monitoring">Мониторинг температуры

NUC склонны к перегреву при длительной нагрузке. Поэтому очень важно следить за температурой процессоров NUC. На предыдущем шаге я установил lm-sensors в NUC, который предоставляет инструменты для этого.Чтобы настроить датчики из сеанса ssh в NUC:

Программа запросит разрешение на поиск датчиков в NUC. На все просьбы я отвечал «да». Как только все датчики будут идентифицированы, проверить их

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

Чтобы контролировать перегрев своих NUC, я снял их верхние крышки и установил их в специальную «стойку» LEGO с внешними USB-вентиляторами с регулировкой скорости, как показано на рисунке в начале поста.

Установка R

Чтобы установить R в NUC, я просто действую так же, как при установке на свой персональный компьютер. Подробное руководство здесь.

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

Примечание. Если R не может распознать языковой стандарт системы

добавьте следующие строки, заменив en_US.UTF-8 предпочитаемой локалью

экспорт LANG=en_US.UTF-8 экспорт LC_ALL=en_US.UTF-8

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

Завершение настройки сети

Каждому NUC нужны правила брандмауэра для предоставления доступа другим компьютерам в сети кластера. Чтобы активировать брандмауэр NUC и проверить, какие порты открыты:

Чтобы предоставить доступ с ПК к NUC через ssh, а позже через R для параллельных вычислений, порты 22 и 11000 должны быть открыты для IP ПК ( 10.42.0.1 ).

Наконец, другие члены кластерной сети должны быть объявлены в файле /etc/hosts каждого компьютера.

В каждом NUC отредактируйте файл через ssh с помощью bash sudo nano /etc/hosts и добавьте строки

10.42.0.1 pc_name
10.42.0.XXX name_of_the_other_nuc

На ПК добавьте линии

10.42.0.XXX name_of_one_nuc
10.42.0.XXX name_of_the_other_nuc

На этом этапе, после перезагрузки каждой машины, NUC должны быть доступны через ssh, используя их имена ( ssh username@nuc_name ) вместо их IP-адресов ( ssh username@n10.42.0.XXX ). Просто имейте в виду, что, поскольку кластерная сеть работает с динамическими IP-адресами (и такой параметр нельзя изменить в общем соединении), IP-адреса NUC могут измениться, если в сеть будет добавлено новое устройство. Это то, что вам нужно проверить с ПК с помощью sudo arp-scan 10.42.0.1/24, чтобы соответствующим образом обновить каждый файл /etc/hosts.

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

Читайте также: