Вполне возможно, что это самый дешёвый и доступный кластер, построенный в домашних условиях.
В данный момент он считает задачки seti@home.
Сборка
Сборка не составляет особого труда - вот список материалов для повторения:
- 4 платы OrangePi PC (One тоже подойдет) с кабелями питания
- 16 стоек для печатных плат для крепления между собой
- 4 стойки (коротких) для крепления на подставку или использования в качестве ножек
- 2 куска оргстекла (верхняя и нижняя крышка)
- Вентилятор 92 мм
- 4 уголка для крепления вентилятора
- 100Mbs Ethernet HUB, желательно с питанием либо 5, либо 12 вольт
- Патчкорды для соединения Ethernet в необходимом количестве (кстати, поскольку сеть все равно 100 МБит, можно использовать 4х-жильную телефонную лапшу и немного сэкономить на кабеле)
- Источник питания (об этом позже)
- Для связи с внешним миром - дешёвый USB WiFi
Скручиваем вместе четыре платы, крепим верхнюю и нижнюю крышки, ставим вентилятор с использованием уголков. На верхнюю крышку водружаем хаб и соединяем наш всё вместе через Ethernet.
А вот так “изделие” выглядит “с тыльной стороны”.
К сожалению, синей изоленты не было - так что хаб крепим резиночками.
Питание
Каждая из OPI потребляет не меньше ампера (производитель рекомендует источник не меньше 1.5…2A). Вентилятор требует 12 вольт, хаб тоже, хотя бывают и 5-вольтовые модели.
Так что потребуется хороший источник питания с двумя напряжениями.
Старый компьютерный вполне подойдет, но лучше использовать современный безвентиляторный импульсный источник, например от MeanWell.
Я, собственно, так и поступил, упаковав его в корпус от винтажного блока питания и выведя наружу обычный молекс-разъем (как на компьютере).
Для “раздачи” 5ти вольт будем использовать модифицированный USB-хаб из дешевых. Для этого можно либо высверлить чип, либо просто отрезать ножки данных, оставив только цепи питания и землю. Я остановился на втором способе, правда внутри проложил еще “толстые” соединения на линии 5В. Ну и повесим ответный molex для соединения с БП. Получается примерно так:
А вот вся конструкция в сборе:
Система
Вообще, это просто “маленькая локальная сеть из 4х компьютеров”.
В качестве базовой системы - обычный Debian, о котором уже много говорили.
Сеть
Самый верхний узел - clunode0, он умеет соединяться по WiFi с внешней сетью, при этом раздает “интернет” на машины clunode1, clunode2, clunode3. Там же работает сервер NFS для общего хранилища и dnsmasq для раздачи DHCP адресов вида 10.x.x.x.
На clunode0 в /etc/network/interfaces примерно такая запись:
1 | auto wlan0 |
Ну а masquerade.sh имеет такую запись внутри:
1 | IPTABLES=/sbin/iptables |
Пользователи
На машины clunode1,2,3 импортированы ключи от clunode0, и на каждой из машин заведен пользователь cluster, который в свою очередь имеет запись для sudo:
1 | cluster ALL = (root) NOPASSWD: /sbin/shutdown |
Это позволяет выключать узлы без лишних телодвижений с головной машины одним скриптом:
1 |
|
Полезная нагрузка
В данный момент железка “гоняет” Seti@home в 16 потоков, вполне успешно.
Правда, нельзя так просто взять и поставить Seti@home из репозитариев Debian. Он там чудовищно старый, и нужно собирать из исходных текстов - подходящая от Raspberry Pi 2 инструкция здесь.
Хотя, вроде как там ситуация переломилась и бинарник можно сгрузить с сайта. Не проверял - проще было собрать самому.
Еще можно установить и настроить консольную утилиту boinctui. Выглядит всё вполне пристойно (animated GIF):
Перспективы
Можно развить идею - вот навскидку несколько идеек:
- Первая плата (clunode0) - load balancer, сlunode2,3 - веб-сервера или приложение, clunode4 - БД ==> микродатацентр :)
- Hadoop (и такие случаи уже есть, народ строит кластеры на Raspberry)
- Proxmox кластер, правда я не уверен, что все запчасти доступны для ARM
- Майнер cryptocurrency, если конечно подберете криптовалюту, которую всё еще выгодно майнить на процессоре и выгодно майнить вообще.
Спасибо, что дочитали до конца.