Как создать кластер компьютеров

Обновлено: 21.11.2024

Кластерные вычисления – популярный выбор для ресурсоемких вычислительных приложений. На базовом уровне есть хобби-кластеры, часто построенные с помощью Raspberry Pis, в то время как промышленный уровень включает в себя центры обработки данных, заполненные серверами, работающими на полную мощность. [greg] хотел что-то дешевое, но с поддержкой x86, поэтому приступил к сборке фермы по-своему.

Изобретательная часть сборки [greg] заключается в исходных компьютерах. Он определил, что сменные материнские платы ноутбуков были отличным источником вычислительной мощности по дешевке: плата с процессором i7 с 16 ГБ ОЗУ доступна на eBay примерно за 100 фунтов стерлингов, а модели i5 еще дешевле. Имея под рукой четыре материнские платы для ноутбуков, он приступил к их установке в корпус, включению питания и подключению с минимальными затратами, необходимыми для их работы. Все это было упаковано в старый серверный корпус с некоторыми распечатанными на 3D-принтере деталями, которые скрепляли все это вместе, и он смог запустить и запустить кластер Kubernetes из 4 узлов по абсолютно выгодной цене.

Мы никогда раньше не видели, чтобы запасные материнские платы для ноутбуков использовались таким образом, но мы определенно видим, что в будущем это станет более распространенным явлением. Возможности ящика, полного устаревших материнских плат, заманчивы для тех, кто строит кластеры по дешевке. Конечно, чем больше узлов, тем лучше, поэтому попробуйте этот кластер 120 Pi, чтобы утолить свою жажду чистых FLOP.

25 мыслей на тему “Создание дешевого кластера Kubernetes из старых ноутбуков”

«… в то время как промышленный уровень включает в себя центры обработки данных, заполненные серверами, работающими на полную мощность. ”

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

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

Умные люди покупают машины высотой 2U для лабораторий с домашними серверами, потому что они *существенно* тише.

"Современные" (8 лет или моложе) серверы Tower бесшумны и могут принимать полноразмерные карты.

Даже старые блейд-серверы объединяют охлаждение в 120-мм или более вентиляторы за объединительной панелью, чтобы избежать стены из 40-мм реактивных двигателей, как стойки, заполненные старыми коробками высотой 1U.

Ха-ха, ты не знаешь домашних лабораторий

Можете ли вы представить себе такую ​​группу Беовульфа?

Этот мем достаточно взрослый, чтобы пить.

Добро пожаловать в сегодняшний выпуск цитат Уинстона Черчилля, которые не совсем подходят друг другу, сегодня мы собираемся с двойным заголовком «Но утром я буду трезвым» и «Если бы я был вашим мужем, я бы выпил». ”

Думаю, вместо этого я просто соберу несколько ноутбуков.

Очень аккуратно, прекрасное применение бесполезной технологии. Хотя я бы сделал что-то со стандартными кулерами, можно было бы установить более крупный радиатор ПК, который был бы дешевым, тише и, вероятно, обеспечивал более высокие устойчивые тактовые частоты — не похоже, что он больше не должен быть тонким ноутбуком. Понятно, почему вы сделали бы это именно так, так гораздо меньше усилий, и если вам не нужно сидеть рядом с ним или ставить его в стойку, полную шумных серверов, в любом случае, какой в ​​этом смысл…

Интересно, какова стоимость всего жизненного цикла чего-то подобного по сравнению с решением Pi. Очень разные расчеты на ватт между x86/AMD64 и ARM, поэтому также возможна значительная разница в эксплуатационных расходах.

У них явно разные варианты использования, поэтому ноутбуки вполне могут подойти для ваших нужд. Но ваши 4 платы для ноутбуков, вероятно, имеют энергопотребление в режиме ожидания и максимальное, что во много раз больше, чем у Pi в аналогичных ситуациях. ноутбуки, небольшие коммутаторы кажутся очень похожими, один 16-портовый, похоже, никогда не будет потреблять намного больше, чем один 4- или 8-портовый..

Итак, в качестве учебного упражнения, тестовой среды или для правильного типа рабочей нагрузки игра с в 3 раза большим количеством узлов при той же потребляемой мощности, потому что они Pi, вероятно, лучше и не должна быть дороже (не так, как вам на самом деле нужно 8-гигабайтная модель pi 4 в этой ситуации — хотя больше всегда лучше..).

Для pi и x86 зависимость от рабочей нагрузки всегда должна быть «зависит от того, действительно ли рабочая нагрузка содержит какую-либо работу», потому что, если это неверно, pi выглядят великолепно. Если вы переведете весь аргумент на x86, это будет выглядеть как «Мой Athlon XP-M использует четверть мощности вашего 8-ядерного Threadripper» без осознания того, что вам нужно 16 из них, чтобы сравнять производительность в простой целочисленной задаче, которая почти «на тик» зависит от часов, или что для реальной работы обработка необработанных чисел в 100 раз лучше. Конечно, если вам нужен процессор, чтобы сидеть и ждать, пока что-то произойдет, вам нужен процессор, который делает это максимально эффективно, но способность запускать графический интерфейс так же, как 7-мегагерцовая Amiga в 1985 году, не делает что-то мощным. .

Pi, даже Pi со знаком 1, намного лучше в вычислениях на ватт, чем большинство x86-64, потому что Arm по своей природе более энергоэффективен (по крайней мере, на данный момент), а Pi 4 не отстает в производительности вычислений. либо .. Так что это не так однозначно, поскольку только последний Threadripper быстрее, давайте их побольше! У вас также есть требования к охлаждению и другому вспомогательному оборудованию, потенциальные узкие места* и общая эффективность.

Какова цель этой системы? Поскольку это действительно меняется, если больше узлов или меньше узлов с более высокими характеристиками является лучшим вариантом — это сильно различается в отношении того, что будет «лучшим», не существует единого размера, подходящего для всех.

*Узкие места сильно различаются в зависимости от типа рабочей нагрузки — возможно, эта рабочая нагрузка переполнит ОЗУ/диск на AMD64, поэтому большее количество узлов с аналогичными ОЗУ и скоростью диска может значительно превзойти его, несмотря на более низкие тактовые частоты ЦП, если задача хорошо подразделяется. . Или, возможно, эта задача очень привязана к ЦП и не может быть легко разделена между потоками, и в этом случае вы не увидите реального прироста при работе с последними лучшими тредрипперами по сравнению с предыдущим поколением — производительность одного ядра и тактовые частоты работают чертовски. близко.

Стоит отметить, однако, что предложения AMD удивительно хороши на ватт по сравнению с последними и лучшими продуктами Intel, и о, как бы я хотел позволить себе заменить свою уже довольно старую рабочую станцию, один процессор потребляет всего 65 Вт TDP и имеет больше ядер и быстрее. одно/многоядерная производительность выше, чем у моих процессоров xeon…

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

Это не так просто, Pi 4 — это вычислительный зверь для своей стоимости и размера, и все Pi, являющиеся Arm, лучше вычисляют на ватт, чем большинство всех x86 (ARM просто более эффективен). Также стоит упомянуть Broadcom. графика в Pi на самом деле тоже довольно мощная, хотя, как я подозреваю, менее удобна в использовании…

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

Как я уже сказал, отлично подходит для ожидания чего-то. Затем, если вы видите, что менее 60 % используют ожидание чего-либо, возможно, пришло время перейти от Pi 4 к Pi 2, потому что 4 простаивает на том же уровне, что и 2 при полной нагрузке.

Но производительность на ватт, вы видели слишком много жадных статей о чипах для настольных ПК по сравнению с Pi, старый 6600U 5-го поколения, используемый здесь, обеспечивает ~ 160 Мфлоп с двойной точностью Linpack на ватт, Pi 4 - около 70.

Если вы укажете немного меньше тактовой частоты, вы можете немного снизить тактовую частоту 4 на холостом ходу.. Я особо не напрягался в этом (пока), просто немного повозился ради любопытства, пока бедняги разгоняются до максимума. по крайней мере, до 10,8 — конечно, не довел его до предела в любом направлении, но намного выше того, что он поставляется с максимальными тактовыми частотами и достаточным количеством старого безвентиляторного алюминиевого радиатора, который не может удерживать его ниже 60, когда он больше работает (что казалось хорошим точка, чтобы остановиться - я люблю, чтобы моя электроника работала долго, и поддержание ее в диапазоне 60-70 кажется хорошим балансом), хотя все еще требуется довольно много времени, чтобы нагреться до этого диапазона…

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

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

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

«Кластерные вычисления — это популярный выбор для ресурсоемких вычислительных приложений. На базовом уровне есть хобби-кластеры, которые часто создаются с помощью Raspberry Pi».

>приложения для тяжелых вычислений
>Raspberry Pi

Не то, чтобы фраза "потому что это интересная тема для разговора" не является вполне достаточным оправданием (в конце концов, это Hackaday), особенно если у вас уже завалялась куча таких штук, но я никогда не пойму, почему так много людей настаивают на изо всех сил стараются создавать кластеры k8s (и другое программное обеспечение) из Raspberry Pi.

Было бы дешевле, мощнее и ближе к реальному развертыванию купить старый сервер x86 с большим количеством ядер и оперативной памяти и вместо этого виртуализировать кластер, чтобы изучить программное обеспечение и архитектуру, или сделать что-то похожее на эту статью для это важно. Пис просто кажутся до смешного неподходящими для этой задачи.Черт возьми, за 35 долларов США за каждый pi вы можете получить более 7 месяцев работы VPS на AWS, DigitalOcean или любом другом миллиарде хостов, если вам не хватает места.

А поскольку Pi не является x86, вы не можете адекватно тестировать такие вещи, как загрузка PXE для подготовки, как в «настоящем» кластере, но виртуальные машины также более чем способны выполнять эту задачу.

Я в какой-то степени понимаю физическую сущность этого, но едва ли. Настройка Pis в основном заключается в следующем: создайте образ SD-карты, подключите USB-кабель питания и Ethernet обратно к коммутатору. Я чувствую, что там очень мало чему можно научиться, и нет ничего, что можно было бы сопоставить, подключив старый сервер к тому же коммутатору, что и ваш ноутбук или настольный компьютер, а затем установив на него ОС.

Raspberry pi 4 действительно поддерживает загрузку по сети.

8 гигабайт ОЗУ и 8 ядер — это достаточная мощность для вычислительного узла.

Для высокопроизводительных приложений вы можете подключить диск M.3 через USB и загрузиться с него.

Вы действительно изучили все варианты загрузки в последней версии ПЗУ Raspberry Pi 4?

tldr: майнинг до 10 долларов в день на ноутбуке RTX 3060 :(

Не забудьте эффективно использовать VAAPI на них ;) Благодаря аппаратному ускорению графического процессора для декодирования/кодирования/транскодирования мультимедиа, особенно для h264, это довольно быстро, даже с этим старым графическим процессором Intel.
Я выполняю кодирование таймлапс-видео на материнской плате X230: каждый месяц кодирую пакет из более чем 10 000 jpg в 60fps h264 mp4.
Но для моего круглосуточного медиастримера 7/7 (Jellyfin + TVheadend + сервер Squeezebox) я предпочитаю использовать Intel Compute Stick с процессором Atom x5-Z8330. Устаревшая технология, ограниченный процессор, но четырехъядерный, очень ограниченный объем оперативной памяти, всего 2 ГБ без возможности обновления, но с поддержкой VAAPI и всего 6 Вт TDP (по сравнению с 45 Вт TDP X230). Добавьте 1G подкачки в zram и адаптер USB3-Ethernet, и этого будет достаточно для небольшого сервера с несколькими док-контейнерами, которые экономят оперативную память.

Pi — это круто и дешево для экспериментов, но по показателю FLOP на ватт они проигрывают почти любому серверу x86.

Очистка компонентов ноутбука для высокоинтенсивного кластера, похоже, обречена на провал. (Mega Flop)
Большинство, если не все ноутбуки, не настроены из-за перегрева/потребления тока. (Одно и то же)
Учитывая избыток аварийных рабочих станций здесь, в Лос-Анджелесе, трудно представить себе затраты времени и усилий на кластеры ноутбуков. Хобби? Конечно. Мой NAS имеет двухъядерные процессоры Xeon 6, 64-гигабайтную оперативную память, HP Z800.
Никогда не плачу, как бы я ни злоупотребляла этим.

Никто не говорил, что высокая интенсивность — это домашняя лаборатория

В 2019 году я сделал нечто подобное для своей HomeLab второго поколения.

Я оказался на сайте Craigslist в поисках сломанных ноутбуков для спасения/ремонта.
(Обычно я их ремонтирую и отдаю. Или продаю по дешевке, чтобы финансировать дополнительные покупки/ремонт.)

Как обычно, починить можно было несколько ноутбуков. Но в данном случае 5 из них были плохими кандидатами на раздачу после того, как они были исправлены. Итак, я разделил их и решил, что они идеально подходят для изучения того, как правильно создавать кластер высокой доступности Proxmox.

200 долларов США за партию модулей SODIMM, 64-гигабайтных накопителей mSATA и корпус высотой 4U на Ebay — этого было достаточно, чтобы все это заработало.

Оставить ответ Отменить ответ

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

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

Кластерные вычисления – популярный выбор для ресурсоемких вычислительных приложений. На базовом уровне есть хобби-кластеры, часто построенные с помощью Raspberry Pis, в то время как промышленный уровень включает в себя центры обработки данных, заполненные серверами, работающими на полную мощность. [greg] хотел что-то дешевое, но с поддержкой x86, поэтому приступил к сборке фермы по-своему.

Изобретательная часть сборки [greg] заключается в исходных компьютерах. Он определил, что сменные материнские платы ноутбуков были отличным источником вычислительной мощности по дешевке: плата с процессором i7 с 16 ГБ ОЗУ доступна на eBay примерно за 100 фунтов стерлингов, а модели i5 еще дешевле. Имея под рукой четыре материнские платы для ноутбуков, он приступил к их установке в корпус, включению питания и подключению с минимальными затратами, необходимыми для их работы. Все это было упаковано в старый серверный корпус с некоторыми распечатанными на 3D-принтере деталями, которые скрепляли все это вместе, и он смог запустить и запустить кластер Kubernetes из 4 узлов по абсолютно выгодной цене.

Мы никогда раньше не видели, чтобы запасные материнские платы для ноутбуков использовались таким образом, но мы определенно видим, что в будущем это станет более распространенным явлением. Возможности ящика, полного устаревших материнских плат, заманчивы для тех, кто строит кластеры по дешевке. Конечно, чем больше узлов, тем лучше, поэтому попробуйте этот кластер 120 Pi, чтобы утолить свою жажду чистых FLOP.

Когда мы впервые увидели проект [Аджлитта] Hackaday.io Terrible Cluster, мы подумали, возможно, он имел в виду ужасный в смысле третьего определения:

Однако, взглянув на подзаголовок, мы поняли, что он имел в виду просто ужасно. Подзаголовок, кстати, такой: 5 Raspberry PI Zeros. Один настраиваемый USB-концентратор. Бесконечное разочарование.

Есть четыре платы Raspberry Pi Zero, которые фактически выполняют вычисления, и одна плата Raspberry Pi Zero W служит головным узлом и сетевым маршрутизатором. Общая стоимость составляет около 100 долларов, и половина этой суммы приходится на SD-карты. Есть специальная объединительная плата USB и даже корпус, напечатанный на 3D-принтере.

Поначалу использование пяти крошечных компьютеров в кластере может показаться не таким уж большим делом. Сравнительный анализ показывает, что кластер (с небольшим уговором) может достигать 1,281 GFLOPS при среднем потреблении 4,962 Вт. Это не приведет к установлению каких-либо мировых рекордов. Тем не менее, образовательные возможности создания кластера стоимостью 100 долларов, который умещается на ладони, интересны. Кроме того, это просто симпатичная сборка.

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

[Колин Алстон] смог купить несколько материнских плат Mini ITX по дешевке и собрал мини-суперкомпьютер, который он назвал TinyJaguar. Названный частично в честь гибридного процессора AMD Sempron 2650, TinyJaguar может похвастаться четырьмя, да-да, четырьмя четырьмя материнскими платами MSI AM1I Mini-ITX, каждая с 4 ГБ памяти DDR.

Raspberry Pi со специальным программным обеспечением управляет кластером и, наряду с некоторыми TTL и реле, управляет питанием четырех узлов. Мини-суперкомпьютер находится в изготовленном на заказ акриловом корпусе, скрепленном набором напечатанных на 3D-принтере деталей и крепежных деталей. В нижней части есть даже лицевая панель, похожая на стойку, для размещения RPi, коммутатора Ethernet, массива светодиодов состояния и двух кнопки.

Благодаря 16 вычислительным ядрам (включая GPU) TinyJaguar вполне способен выполнять некоторые довольно интересные задачи, например запускать ноутбук Jupyter с IPyParallel. [Колин] столкнулся с некоторыми проблемами при работе графического процессора с PyOpenCL. Потребовалось немного усилий и времени, но в конце концов он смог запустить графические процессоры и написал небольшую программу передачи сообщений, чтобы показать, что два ядра работают и работают вместе.

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

Если бы вы действительно могли купить 16 Raspberry Pi Zero, вы могли бы создать свой собственный кластер Raspberry Pi всего за 80 долларов! Ну… за вычетом стоимости платы, чтобы связать их все вместе…

Японская компания Idein разрабатывает модуль Actbulb для Raspberry Pi, предназначенный для вычислительного зондирования и анализа данных. Чтобы провести внутреннее тестирование, они решили упростить себе задачу, разработав плату, позволяющую подключать не один, не два, а шестнадцать Raspberry Pi Zero:

Поскольку мы будем использовать графический процессор Pi для обработки изображений, глубокого обучения и т. д., нам нужны настоящие Pi, а не только Linux-машины. Еще одна причина. Его можно использовать для прошивки eMMC наших устройств через USB-порты, когда нам приходится делать это самостоятельно.

В 2004 году любитель и гуру Apple [Майкл Махон] построил кластер основных плат Apple IIe, получивший название AppleCrate, в качестве эксперимента в области параллельных вычислений. Теперь, когда прошло несколько лет, он вернулся с новой итерацией устройства, удачно названной AppleCrate II.

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

Что вы делаете после создания графического калькулятора BeagleBoard? [Мэтт] из Liquidware Antipasto сделал кластер BeagleBoard Elastic R Cluster, который помещается в портфель.Десять BeagleBoards подключены друг к другу через адаптеры USB-Ethernet и пару коммутаторов Ethernet, подключенных к беспроводному маршрутизатору. Стоимость этого кластера составляет около 2000 долларов США, и, потребляя менее 40 Вт энергии, он превосходит ноутбук стоимостью 4500 долларов США. Как вы могли бы использовать этот кластер? Какие улучшения вы бы сделали? Продолжить чтение «Кластер BeagleBoard» →

Мы слышали об идее использования браузеров в качестве распределенных вычислительных узлов уже несколько лет. Только недавно, в связи с гонкой за более быстрыми движками JavaScript в таких браузерах, как Chrome, эта идея кажется полезной. [Antimatter15] сделал доказательство реализации концепции JavaScript для реверсирования хэшей. Plura Processing использует апплет Java для распределенной обработки. Сегодня [Илья Григорик] опубликовал пример использования MapReduce в JavaScript. MapReduce от Google предназначен для поддержки обработки больших наборов данных в вычислительных кластерах. Он хорошо подходит для ситуаций, когда вычислительные узлы могут отключаться случайным образом (например, браузер уходит с вашего сайта). Он включил фрагмент JavaScript и сервер заданий на Ruby. Будет интересно посмотреть, придумает ли кто-нибудь хорошее применение для этого; вам все еще нужно убедить людей оставить вашу страницу открытой в браузере. Мы просто говорим: постарайтесь изобразить удивление, когда поймете, что Hack a Day необъяснимым образом повышает производительность вашего процессора…

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

В этом посте я объясню, как настроить небольшой кластер 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 одновременно.

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

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

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

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

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

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

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

LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8" < br />LC_MONETARY="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_NAME="en_US.UTF-8" ”
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"

Мониторинг температуры

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.

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

<Р> Проблема MagPi 115 Крышка

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

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

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

Концепция компьютерных «кластеров» (множество компьютеров, работающих вместе как один) не нова, но когда у вас есть такое доступное устройство, как Raspberry Pi, вы можете начать конкурировать с гораздо более дорогими системами, используя несколько параллельно. Здесь мы узнаем, как сделать кластерный компьютер из множества маленьких компьютеров.

Вам понадобится

Собрание кластера!

Кластер компьютеров Raspberry Pi может начинаться всего с двух компьютеров и увеличиваться до сотен. Для нашего проекта мы начинаем со скромной четверки. Каждый из них, известный как «узел», будет выполнять часть нашей задачи за нас, и все они работают параллельно, чтобы получить результат намного быстрее, чем когда-либо мог бы один узел. Доступны несколько хороших «кластерных корпусов», и мы начинаем со сборки наших компьютеров Raspberry Pi 4B в четырехместном шасси. Доступно множество различных конфигураций, включая охлаждение с помощью вентилятора.

Включить

Рассмотрите требования к питанию вашего кластера. С нашими четырьмя узлами не будет идеально иметь четыре блока питания, управляющих ими. Кроме того, что это уродливо, это неэффективно. Вместо этого найдите качественное мощное многопортовое зарядное устройство USB, способное питать выбранное вами количество компьютеров. Тогда все, что вам нужно, это кабели для их соединения, и вы используете одну сетевую розетку. Доступны USB-устройства, которые могут работать с восемью компьютерами Raspberry Pi без особых усилий. Будьте осторожны с более высокими требованиями Raspberry Pi 4.

Начать разговор

Кластер работает посредством связи. «Главный» узел отвечает за кластер, а «рабочим» говорят, что делать, и сообщать о результатах по требованию. Для этого мы используем проводной Ethernet в выделенной сети. Не обязательно делать это таким образом, но для приложений, интенсивно использующих данные, желательно, чтобы кластер имел собственное частное соединение, чтобы он мог обмениваться инструкциями, не мешая беспроводной локальной сети или другому сетевому трафику. Таким образом, в дополнение к беспроводной локальной сети мы подключаем каждый узел к изолированному коммутатору Gigabit Ethernet.

Raspbian пульсация

Мы собираемся получить доступ к каждому узлу через беспроводную локальную сеть, чтобы порт Ethernet был доступен для работы кластера. Для каждого «узла» запишите Raspbian Buster Lite на карту microSD, загрузите его и убедитесь, что он обновлен с помощью sudo apt -y update && sudo apt -y upgrade. Затем запустите sudo raspi-config и выполните следующие действия:

• Изменить пароль пользователя «pi».

• В разделе «Сеть» измените имя хоста на nodeX, заменив X уникальным номером (node1, node2 и т. д.). Node1 будет нашим «мастером».

• При необходимости включите Wi-Fi.

• Выйти и перезагрузиться при появлении запроса.

Получите основу

Проводной канал Ethernet называется «магистралью» кластера. Вам нужно вручную включить магистраль, так как нет DHCP-сервера, который мог бы помочь. Мы собираемся использовать подсеть 10.0.0.0. Если это используется в вашей обычной сети, выберите другой адрес, например 192.168.10.0. Для каждого узла из командной строки отредактируйте конфигурацию сети:

sudo nano /etc/dhcpcd.conf Перейдите в конец файла и добавьте следующее:

Для каждого узла замените последнюю цифру «10.0.0.1» новым уникальным значением: 10.0.0.2, 10.0.0.3 и т. д. Перезагружайте каждый узел по ходу работы. Вы должны иметь возможность пропинговать каждый узел, например, с 10.0.0.1:

Новый ключ

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

ssh-keygen -t rsa

Это создает уникальный цифровой идентификатор (и пары ключей) для компьютера. Вам будет задано несколько вопросов; просто нажмите RETURN для каждого и не создавайте кодовую фразу, когда ее спросят. Далее сообщите мастеру (node1, 10.0.0.1 в нашей установке) о ключах, запустив на каждом втором узле следующее:

Наконец, сделайте то же самое на главном узле (узел 1, 10.0.0.1) и скопируйте его ключ на все остальные узлы в кластере.

Установить MPI

Магия, благодаря которой работает наш кластер, — это MPI (интерфейс передачи сообщений). Этот протокол позволяет нескольким компьютерам делегировать задачи между собой и отвечать результатами. Мы установим MPI на каждом узле нашего кластера и одновременно установим привязки Python, которые позволят нам воспользоваться его магическими возможностями.

На каждом узле выполните следующее:

sudo apt install mpich python3-mpi4py После завершения тестовый MPI работает на каждом узле

mpiexec -n 1 имя хоста

Вы должны просто получить ответное эхо имени узла. -n означает «на скольких узлах это запустить». Если вы говорите один, это всегда локальная машина.

Давайте встретимся

Пришло время нашей первой кластерной операции. На узле1 (10.0.0.1) введите следующую команду:

mpiexec -n 4 --hosts 10.0.0.1,10.0.0.2,10.0.0.2,10.0.0.4 имя хоста

Мы просим главный супервизорный процесс, mpiexec, запустить четыре процесса (-n 4), по одному на каждом хосте. Если вы не используете четыре хоста или используете разные IP-адреса, вам нужно будет изменить это по мере необходимости. Команда hostname просто повторяет имя узла, поэтому, если все в порядке, вы получите список из четырех членов кластера. Вы только что немного поработали над параллельными вычислениями!

Является ли кластер из одного все еще кластером?

Теперь, когда мы убедились, что кластер работает, давайте заставим его работать. Программа prime.py — это простой скрипт, который идентифицирует простые числа. Введите код, показанный в листинге (или загрузите его с magpi.cc/EWASJx) и сохраните его на узле 1 (10.0.0.1). Код принимает один аргумент — максимальное число, которое необходимо достичь перед остановкой, — и возвращает количество простых чисел, выявленных во время выполнения. Начните с тестирования на главном узле:

mpiexec -n 1 python3 prime.py 1000

Перевод: «Запустите один экземпляр на локальном узле, на котором выполняется тестирование Prime.py для простых чисел до 1000».

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

Множественность

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

scp ~/prime.py 10.0.0.x:

Замените x на номер требуемого узла: scp (защищенная копия) скопирует скрипт на каждый узел. Вы можете проверить, сработало ли это, перейдя к каждому узлу и выполнив ту же команду, что и на узле 1. Когда вы закончите, мы будем готовы приступить к настоящим кластерным вычислениям.

Вычислить!

Чтобы запустить суперкомпьютер, запустите эту команду с главного узла (узел 1):

mpiexec -n 4 --host 10.0.0.1,10.0.0.2,10.0.0.3,10.0.0.4 python3 prime.py 100000

Каждый узел получает ранг: уникальный идентификатор. Мастер всегда равен 0. Это используется в скрипте для определения того, какой диапазон чисел обрабатывает каждый узел, поэтому ни один узел не проверяет одно и то же число на «простота». По завершении каждый узел отчитывается перед мастером с подробным описанием найденных простых чисел. Это известно как «сбор». После завершения мастер собирает все данные вместе и сообщает результат. В более продвинутых приложениях мастер может назначать узлам разные наборы данных («рассеивание»).

Итоговые оценки

Возможно, вы заметили, что в предыдущем примере мы запросили все простые числа до 1000. Это не очень хороший тест, так как он очень быстрый. 100 000 занимает немного больше времени. В наших тестах мы увидели, что один узел занял 238,35 секунды, но кластер из четырех узлов справился с этим за 49,58 секунды — почти в пять раз быстрее!

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

Полезный совет: балансировка нагрузки

Кластеры также полезны для работы в качестве единого веб-сервера и совместного использования трафика, например веб-серверов Mythic Beast Raspberry Pi.

Полезный совет: отказоустойчивость

Некоторые типы кластеров, такие как Docker Swarm или Kubernetes, допускают отказ отдельных узлов без прерывания обслуживания.

ПиДжей — писатель, программист и специалист по обработке Raspberry Jam в Милтон-Кинсе. В те времена, когда он работал по телефонной линии, он создавал страницы для Prestel, что сильно его старило.

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

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

Как подробно описано в репозитории Wei Lin на Github, им удалось создать вычислительный кластер с использованием шести чипов ESP32. Эти чипы представляют собой микроконтроллеры — компьютеры с минимальным объемом памяти и процессоров, похожие на Raspberry Pi, но гораздо более дешевые.

Один Raspberry Pi стоит около 30 долларов США, а ESP32 — всего около 7 долларов США (это связано с тем, что они производятся в Китае, а Arduino и Raspberry Pi — в Европе). Таким образом, даже несмотря на то, что другие сделали вычислительные кластеры из Raspberry Pi, включая кластер из 750 узлов, созданный Национальной лабораторией Лос-Аламоса, они могут быстро стать дорогими проектами для случайного производителя. С другой стороны, кластер Lin с шестью узлами стоит столько же, сколько один Pi, и имеет в три раза больше ядер.

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

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

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

ОРИГИНАЛЬНЫЕ ОТЧЕТЫ ОБ ВСЕМ ВАЖНОМ В ВАШЕМ ЯЩИКЕ.

Регистрируясь, вы соглашаетесь с Условиями использования и Политикой конфиденциальности, а также на получение электронных сообщений от Vice Media Group, которые могут включать маркетинговые акции, рекламу и спонсируемый контент.

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