Главная страница » Raspberry Pi » Raspberry Pi кластер своими руками: строим мини-суперкомпьютер из 4 плат
Raspberry Pi кластер своими руками: строим мини-суперкомпьютер из 4 плат
Raspberry Pi

Raspberry Pi кластер своими руками: строим мини-суперкомпьютер из 4 плат

31.03.2026 172
Raspberry Pi кластер своими руками: строим мини-суперкомпьютер из 4 плат

Пошаговое руководство по сборке кластера Raspberry Pi своими руками. Настройка сети, MPI, тестирование производительности. DIY проект для распределённых вычислений.

Привет всем, кто любит ковыряться в железе и софте! Сегодня мы займёмся проектом, который одновременно и серьёзный, и невероятно увлекательный. Мы соберём собственный кластер из четырёх одноплатных компьютеров Raspberry Pi. Зачем? Чтобы на собственном опыте понять принципы распределённых вычислений, поэкспериментировать с балансировкой нагрузки или просто похвастаться перед друзьями своим «мини-суперкомпьютером» на столе. Это не просто игрушка, а полноценный полигон для обучения, который можно использовать для тестирования веб-приложений, запуска распределённых задач или даже в качестве домашней облачной платформы.

В этой статье я проведу вас через все этапы: от выбора железа и сборки «стопки» малинок до настройки сети, установки ПО и запуска первого распределённого задания. Будет много команд в терминале, немного магии конфигурационных файлов и, конечно, мои личные советы, как избежать типичных граблей, на которые я сам когда-то наступал.

Что нам понадобится: железо и софт

Прежде чем что-то паять и скручивать, давайте убедимся, что всё необходимое лежит на столе.

«Железная» часть: * 4 одноплатных компьютера Raspberry Pi. Идеально подойдут модели 4B или 5 с 4/8 ГБ оперативной памяти. Можно использовать и Pi 3, но производительность будет скромнее. Важно, чтобы все платы в кластере были одной модели — это избавит от головной боли с драйверами и совместимостью. * 4 карты microSD (рекомендуется от 16 ГБ, класс скорости 10). По одной на каждую плату. * 4 блока питания. Критически важно! Каждой плате, особенно Pi 4/5, нужен свой качественный блок питания (5V/3A для Pi 4, 5V/5A для Pi 5). Попытка запитать всё через один порт USB-хаба гарантированно приведёт к нестабильной работе и внезапным перезагрузкам узлов. * Сетевой коммутатор (switch). Желательно гигабитный (Gigabit Ethernet) и с 5+ портами. Один порт пойдёт на подключение к вашей домашней сети, остальные — на «малинки». * 5 патч-кордов (Ethernet-кабелей). Один для связи коммутатора с роутером, четыре — для подключения каждой Pi. * Корпус или стойка. Можно купить готовый кластерный корпус (например, от Turing Pi) или собрать простую стойку из пластика или алюминия своими руками. Главное — обеспечить хорошее охлаждение. Я использовал набор алюминиевых стоек с вентиляторами.

Программное обеспечение: * Raspberry Pi OS Lite (64-bit). Без графической оболочки, чтобы не тратить ресурсы. Скачать можно с официального сайта. * BalenaEtcher или Raspberry Pi Imager для записи образа на карты. * SSH-клиент (встроен в Linux/macOS, для Windows подойдёт PuTTY или встроенный клиент в Windows 10/11).

Шаг 1: Подготовка и начальная настройка узлов

Начнём с подготовки каждой отдельной платы. Мы настроим их по идентичному шаблону, чтобы потом было проще управлять всем кластером.

  1. Записываем ОС. Используем Raspberry Pi Imager. Его главное преимущество — возможность предварительной настройки (gear icon) перед записью. Задаём:

    • Имя пользователя (pi или своё) и пароль.
    • Имя хоста (node1, node2, node3, node4).
    • Включаем SSH.
    • Настраиваем Wi-Fi (или оставляем только Ethernet).
    • Устанавливаем локаль (часовой пояс, раскладку).

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

  2. Первичный запуск и обновление. Подключаем к каждой Pi питание, Ethernet и монитор с клавиатурой (только к первой для удобства). После загрузки логинимся и обновляем систему: bash sudo apt update && sudo apt full-upgrade -y sudo apt install -y vim git net-tools Команда full-upgrade обновит все пакеты, включая ядро. net-tools установит утилиты вроде ifconfig.

  3. Настраиваем статические IP-адреса (ключевой момент!). Чтобы узлы всегда находили друг друга, зафиксируем за ними адреса в локальной сети. Отредактируем конфиг DHCP-клиента: bash sudo vim /etc/dhcpcd.conf В конец файла для каждого узла добавим свои настройки. Например, для node1: ini # Node1 static configuration interface eth0 static ip_address=192.168.1.101/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1 8.8.8.8 Для node2 будет ...102, для node3 — ...103, и так далее. Маска /24 соответствует привычной 255.255.255.0. Шлюз (routers) и DNS укажите свои (чаще всего это IP-адрес вашего домашнего роутера).

    Типичная ошибка: Неправильно указанная маска или конфликт IP-адресов. Убедитесь, что выбранные вами адреса (101-104) не входят в пул раздаваемых вашим роутером по DHCP.

    После настройки на всех узлах выполните перезагрузку: bash sudo reboot

Шаг 2: Организация сети и настройка беспарольного доступа SSH

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

  1. Проверяем связь. С основного компьютера или с node1 пингуем остальные узлы: bash ping -c 4 192.168.1.102 ping -c 4 192.168.1.103 ping -c 4 192.168.1.104 Успешные ответы означают, что сеть работает.

  2. Создаём пару SSH-ключей на главном узле. Допустим, node1 будет нашим управляющим (master) узлом. Сгенерируем на нём ключ: bash ssh-keygen -t ed25519 -C "pi@node1" Просто нажимаем Enter на все вопросы, чтобы создать ключи без парольной фразы (для автоматизации внутри кластера это допустимо).

  3. Копируем публичный ключ на все узлы, включая самого себя. Используем утилиту ssh-copy-id: bash ssh-copy-id pi@192.168.1.101 ssh-copy-id pi@192.168.1.102 ssh-copy-id pi@192.168.1.103 ssh-copy-id pi@192.168.1.104 Вам нужно будет ввести пароль для каждого узла. После этого попробуйте зайти с node1 на, например, node2: ssh pi@192.168.1.102. Пароль запрашиваться не должен.

    Типичная ошибка: Проблемы с правами доступа к файлам ~/.ssh. Если что-то пошло не так, проверьте: chmod 700 ~/.ssh и chmod 600 ~/.ssh/authorized_keys.

Шаг 3: Установка и настройка MPI (Message Passing Interface)

MPI — это стандарт для обмена сообщениями между процессами в распределённых вычислениях. Именно он позволит нам запускать одну задачу на всех четырёх ядрах (и более) нашего кластера.

  1. Устанавливаем MPI на все узлы. Подключаемся к каждому узлу (или используем параллельное выполнение, но пока сделаем последовательно) и выполняем: bash sudo apt install -y openmpi-bin openmpi-common libopenmpi-dev Эта команда установит исполняемые файлы, библиотеки и заголовочные файлы OpenMPI.

  2. Создаём конфигурационный файл для MPI. На управляющем узле (node1) создадим файл hostfile в домашней директории: bash vim ~/hostfile Содержимое файла: ini 192.168.1.101 slots=4 192.168.1.102 slots=4 192.168.1.103 slots=4 192.168.1.104 slots=4 Здесь slots=4 указывает, сколько процессов может быть запущено на каждом узле (по числу ядер у Raspberry Pi 4). Для Pi 5 можно указать больше.

  3. Тестируем MPI простой программой. Создадим на node1 тестовый файл hello_mpi.c: ```c #include #include

    int main(int argc, char** argv) { int rank, size; char processor_name[MPI_MAX_PROCESSOR_NAME]; int name_len;

    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    MPI_Get_processor_name(processor_name, &name_len);
    
    printf("Hello from processor %s, rank %d out of %d processorsn",
           processor_name, rank, size);
    
    MPI_Finalize();
    return 0;
    

    } ```

  4. Компилируем и запускаем на кластере. ```bash # Компилируем программу mpicc -o hello_mpi hello_mpi.c

    Запускаем на всех узлах, указанных в hostfile

    mpirun --hostfile ~/hostfile -np 16 ./hello_mpi `` Ключ-np 16` говорит MPI запустить 16 процессов (4 узла * 4 слота). Если всё настроено верно, вы увидите 16 приветственных строк от всех ядер кластера, с указанием их ранга и имени хоста (IP-адреса).

Шаг 4: Тестирование производительности и запуск реальной задачи

Давайте проверим, что наш кластер действительно даёт прирост производительности.

Проверка результата: Тест скорости сети

Самый простой тест — проверить пропускную способность между узлами с помощью iperf3. 1. На узле node2 запустим сервер: iperf3 -s. 2. На узле node1 запустим клиент: iperf3 -c 192.168.1.102 -t 30. 3. В выводе смотрите на строку [ ID] Interval Transfer Bitrate. Для гигабитной сети реальная скорость должна быть около 900+ Мбит/с. Если скорость низкая (100 Мбит/с), проверьте кабели и коммутатор.

Запуск параллельных вычислений: расчёт числа π

Для демонстрации используем стандартный пример cpi, который часто идёт в комплекте с OpenMPI. Найдём и скомпилируем его:

# Находим пример (путь может немного отличаться)
find /usr -name "cpi.c" 2>/dev/null
# Допустим, он нашёлся в /usr/share/doc/openmpi/examples/
cd /usr/share/doc/openmpi/examples/
mpicc -o cpi cpi.c

Теперь запустим расчёт на разном количестве процессов и сравним время:

# Запуск на 1 процессе (фактически на одном ядре node1)
time mpirun -np 1 ./cpi
# Запуск на 4 процессах (на всех ядрах node1)
time mpirun -np 4 ./cpi
# Запуск на 16 процессах (на всём кластере)
time mpirun --hostfile ~/hostfile -np 16 ./cpi

Обратите внимание на время выполнения (real в выводе time). В идеале, увеличение числа процессов должно сокращать время расчёта. Однако накладные расходы на коммуникацию между узлами (по сети) всегда больше, чем между процессами на одной плате. Это наглядно демонстрирует разницу между многопоточностью на одном компьютере и распределёнными вычислениями.

Заключение: что дальше?

Поздравляю! Вы только что собрали и запустили свой первый мини-суперкомпьютер. Это фундамент для множества экспериментов. Куда можно двигаться дальше?

  • Docker Swarm / Kubernetes (K3s): Превратите кластер в контейнерную платформу. K3s от Rancher — идеальный облегчённый Kubernetes для Raspberry Pi.
  • Распределённый веб-сервер: Настройте nginx в качестве балансировщика нагрузки на несколько backend-нод с Apache или Python-приложениями.
  • Hadoop/Spark: Установите экосистему для работы с большими данями и попробуйте обработать какой-нибудь крупный набор данных.
  • Свои расчётные задачи: Напишите на C/C++ или Python с использованием MPI (библиотека mpi4py) свою задачу, которую можно распараллелить.

Главное, что вы получили, — это практический опыт и понимание, как устроены большие вычислительные системы. И всё это — на столе, за относительно небольшие деньги.

Для вдохновения другими проектами на одноплатниках загляните в мои статьи: про установку минималистичной ОС DietPi на одноплатниках для экономии ресурсов, или как собрать мощный домашний NAS на NanoPi M4V2. А если захотите добавить кластеру «умных» функций, присмотритесь к Node-RED для визуальной автоматизации.

Удачи в экспериментах! Не бойтесь ломать и пересобирать конфигурации — это лучший способ научиться.

Понравилась статья?

Поставьте лайк и сохраните полезный материал в закладки.

Комментарии (0)
Добавить комментарий
Прокомментировать
Кликните на изображение чтобы обновить код, если он неразборчив
Headless Raspberry Pi: Настройка без монитора через SSH — Полное руководство
Raspberry Pi
31.03.2026
Headless Raspberry Pi: Настройка без монитора через SSH — Полное руководство
Пошаговое руководство по настройке Raspberry Pi без монитора и клавиатуры. Узнайте, как включить SSH, подключиться к сети и управлять Pi удалённо для DIY-проектов и
Pi-hole на Raspberry Pi: Как я избавил всю домашнюю сеть от рекламы раз и навсегда
Raspberry Pi
31.03.2026
Pi-hole на Raspberry Pi: Как я избавил всю домашнюю сеть от рекламы раз и навсегда
Пошаговая инструкция по установке Pi-hole на Raspberry Pi. Настройте сетевой фильтр рекламы и трекеров для всего умного дома. Проверка, типичные ошибки, личный опыт.
Nextcloud на Raspberry Pi: строим личное облако вместо Google Drive
Raspberry Pi
31.03.2026
Nextcloud на Raspberry Pi: строим личное облако вместо Google Drive
Пошаговая инструкция: как установить и настроить Nextcloud на Raspberry Pi вместо Google Drive. Создайте своё безопасное облако для файлов, календаря и контактов.
Ретро-игровая консоль на Raspberry Pi: Полное руководство по установке и настройке RetroPie
Raspberry Pi
31.03.2026
Ретро-игровая консоль на Raspberry Pi: Полное руководство по установке и настройке RetroPie
Подробное руководство по сборке ретро-игровой консоли на Raspberry Pi с RetroPie. Установка, настройка эмуляторов, добавление игр, решение проблем. Создайте свою
Raspberry Pi как домашний сервер: что на нём можно запустить в 2024
Raspberry Pi
31.03.2026
Raspberry Pi как домашний сервер: что на нём можно запустить в 2024
Подробное руководство по настройке Raspberry Pi как домашнего сервера в 2024. Установите Pi-hole, Home Assistant, Nextcloud, VPN и другие сервисы через Docker.
Raspberry Pi в роли VPN-сервера: настраиваем WireGuard для всей домашней сети
Raspberry Pi
31.03.2026
Raspberry Pi в роли VPN-сервера: настраиваем WireGuard для всей домашней сети
Настраиваем WireGuard на Raspberry Pi для безопасного удалённого доступа к домашней сети с компьютера и смартфона.

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