Работаю разработчиком и довольно часто бывает нужны какие то сервисы локальные под рукой, что то дорогого покупать не хотелось, арендую обычно когда выкатываю к заказчику. Подумал поискать где можно хранить нужные для разработки, хранения и демонстрации сервисы (сайты, API и другое) . Наткнулся я на очень миниатюрное и экономичное решение, это SBC - single-board computer, одноплатные компьютера. Из того что хотелось бы это побольше памяти и ядер (потоков) процессора, а тут бонусом еще и миниатюрность, возможность легко перевозить, работать от power bank в случае необходимости.

В процессе анализа рынка я находил разные решения, начиная от популярных Raspberry Pi 4, до мало известных Khadas Vim4, который я брал летом и продал осенью потому что подумал что цена для него высоковата, в сравнении с другими устройствами.

Требования у меня были примерно такими:

  1. 8+Гб оперативной памяти (желательно DDR4, 1666 и выше)

  2. 4+ ядра (хотелось бы х86/х64, с arm64 и другими не работал, но готов исследовать)

  3. Наличие подключения для SATA или NVMe дисков.

  4. Возможность собрать несколько устройств в единый класстер.

  5. Возможность легко перевозить и настраивать.

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

Детальную спецификацию можно посмотреть на сайте производителя, но тут я укажу основные параметры которые меня подкупили.
SOC — Rockchip RK3588S
CPU — 8-core 64-bit processor, 4xCortex-A76 (2.4GHz) and 4xCortex-A55 (1.8GHz)
RAM — 4GB/8GB/16GB /32GB(LPDDR4x)
GPU — Arm Mali-G610 MP4 + HDMI2.1, up to 8K @60Hz
Drive — M2 M-Key, USB 3.1 x2 и множество других подключений.
Цена: 8781 THB (около 16000 рублей за две штуки с доставкой) - 105$

Orange Pi 5 16Gb RAM
Orange Pi 5 16Gb RAM

Заказал 30 ноября и о чудо, 20 декабря пришли две платы Orange Pi 5 16Gb RAM.
Приехал доставщик Fedex c таможенной бумажкой к дому, на месте заплатил +7% Тайский таможенный налог за ввоз. (около 700 бат) . Упаковано было не очень, просто коробка, внутри плата и инструкция, но все доехало в целости.

Почитав инструкцию по использованию нашел как установить операционную систему и запустить. На официальном сайте доступны несколько ОС, я выбрал обычную Linux Ubuntu 22.04 с рабочим столом xfce.

Скачал образ Ubuntu 22 и через balenaEtcher залил образ на SD карту. Процесс там элементарно простой, выбрать образ, выбрать куда, нажать запуск, дождаться окончания и вот флеш карта с системой готова. Далее остается ее вставить в единственные подходящий порт, подключить монитор и питание. У меня есть переносной монитор 17", подключил его по HDMI, вставил кабель USB-C и нажав кнопочку пошли моргать светодиоды. Красный что устройство включено и зеленый когда идет работа.

Набрав пару команд можно посмотреть параметры, Linux Ubuntu 22 Jammy Orange Pi 5 5.10 rk-3588
Набрав пару команд можно посмотреть параметры, Linux Ubuntu 22 Jammy Orange Pi 5 5.10 rk-3588

Работает отлично, отклик на действия быстрый, картинка хорошая, видео 4к воспроизводит и еще есть запас. Попробовал разные офисные программки и побегать по разным сайтам в браузере. Все прекрасно работает. Дальше захотел попробовать сделать стресс тесты и посмотреть насколько идет нагрев.

stress --cpu 4
stress --cpu 4

При нагрузке 4х потоков тепмература повышается до 70 градусов, (при дневной +32) это с учетом небольшого радиатора 25х25мм. С охлаждением я еще что нибудь придумаю, на текущий момент охлаждается довольно быстро, если нагрузка не постоянная. При обычной работе до 10% процессора около +5-8 градусов к комнатной температере. Потребление 5V 0.4-3.7A зависит от нагрузки.

Теперь перейду к основному, для чего я взял, в ОС которую я поставил уже установлен Docker для использования контейнеров (маленьких приложений) , управлять им через CLI командную строку не особо удобно и я поставил Portainer. Ставится просто двумя командами
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

более подробно тут
далее открываем порт https://ip_address:9443/ и видим интерфейс для работы с контейнерами Portainer (при первом входе попросит создать пароль)

orange pi 5 linux ubuntu 22 jammy aarch64 docker portainer
orange pi 5 linux ubuntu 22 jammy aarch64 docker portainer

Для тех кто знает из чего состоит докер все будет относительно понятно, volume — места для хранения, network — настройки сети, images — образы, containers — непосредственно сами контейнеры, запущенные инстансы образов с настройками и stacks — система конфигураций, для запуска нескольких контейнеров с широким спектром возможностей (например маштабировать — реплицировать сервисы, сайты, API и т.д).

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

список запущенных сервисов в Portainer
список запущенных сервисов в Portainer

Пока что немного в догонку, я попробовал поставить gitlab-ce, minio S3, postgre, nginx, gitlab-runner c alpine. (docker-compose для gitlab-ce aarch64) Надо помнить что система на архитектуре aarch64 и не все приложения смогут запуститься. Но мир движется к тому что бы многое стало доступнее. В портейнере есть шаблоны для запуска Wordpress, Joomla, Drupal, Rabbit MQ, MySQL, ELK (elasticsearch) и другого.

Мне понравилась работа с minio S3 это можно сказать домашнее облачко для хранения и синхронизации файлов с разных устройств. Домашний S3, очень удобно, пришел домой, телефон и другие устройства подключились к домашней сети и автоматически загрузили свежие фото/видео/документы, поддерживает версионность файлов. Можно настроить что бы и из внешнего интеренета можно было загружать но это надо подумать о безопасности.

minio S3 home based
minio S3 home based

Моя следующая цель позапускать через pipeline сборку приложений, для начала .Net Core C# (asp mvc, web api), а потом попробовать собрать игру Unity3d и запустить серверную часть внутри кубера с балансировкой игроков.

Напишите в комментариях, интересна ли вам статья? , что еще вы бы хотели попробовать, проверить, посмотреть? на Orange Pi 5.

Буду рад вашим вопросам, пожеланиям и предложениям.

Комментарии (29)


  1. DuD
    03.01.2023 02:55

    Спасибо за статью, интересная машинка.

    А вот с kubernetes не все так однозначно. Для отказоустойчивости вам понадобится третья машина, в ином случае невозможно будет однозначно определить, это машинка сломалась или просто сеть между ними порвалась. Типовая ситуация split-brain.


    1. MagArt Автор
      03.01.2023 12:26

      Да спасибо. Я уже заказал nanopi r5s в качестве мастер ноды


    1. bezrukovPS
      03.01.2023 12:27
      +1

      Дополню про кубера. Система хоть и отличная, но для хотя-бы средних размеров кластера, мини пк, всё таки для этих целей не подойдут, нет конечно он запустится, но съест львиную долю ресурсов. Имхо микро компьютеры дома скорее для иных задач, умный дом, файл шара, какой-то кастомные сервер. А тот же гитлабе и иже с ними лучше на арендный сервер переносить...


      1. MagArt Автор
        03.01.2023 12:29

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


      1. ProFfeSsoRr
        03.01.2023 18:34

        нет конечно он запустится, но съест львиную долю ресурсов

        Если k8s использовать как продвинутый Portainer, то ничего он практически не жрет. etcd сам по себе легкий, данных в нем в таком маленьком кластере мало, контейнеры будут редко перезапускаться - значит и api вызовов будет не так уж и много. Это если кластер обвешать всякими istio да мониторингами... Но так это и будет нагрузка от этих приложений, а не от k8s как такового, опять же.


        1. Borz
          03.01.2023 18:42
          +3

          IMHO, что k8s что Portainer на такой железке избыточно - достаточно простого Docker ну, или на край, Docker Compose. Что в домашнем облаке привносит k8s/Portainer , без чего нельзя обойтись?


          1. vvzvlad
            03.01.2023 23:14

            Что в домашнем облаке привносит k8s/Portainer, без чего нельзя обойтись?

            Веб-панель для докера?


            1. Borz
              04.01.2023 07:42

              ммм. И зачем? так ли уж часто надо лазить в веб-панель докера?

              Вот есть у меня веб-панель от Synology NAS для Docker, так я её вижу от силы раз в полгода, если не реже. В основном или через консоль что-то пнуть, или через Ansible скрипт, если подконфигурить docker контейнер надо.
              А настраивать через веб-панель докеры - это потом не знать какие команды/аргументы через консоль для докера надо дёргать

              ЗЫ: кстати, кажется только Portainer конфигурируется через мордочку - для k8s вроде тоже предпочитают консоль использовать и различные скриптования. Хотя могу ошибаться и Portainer можно и через консоль конфигурить... но в моём окружении пока не видел таких "рукастых" немышоидов


            1. Areso
              04.01.2023 12:34

              рестарт сдохших подов?

              Но мне кажется, Docker Swarm эффективнее.


              1. Borz
                04.01.2023 12:48
                +1

                прописанный HEALTHCHECK внутри Dockerfile + https://github.com/willfarrell/docker-autoheal и не надо swarm.
                Так же, как и для обновления образов до последних версий (кто тег latest пользует или "сокращённую" версию тега) - Watchtower


          1. ProFfeSsoRr
            04.01.2023 14:48

            С этой позиции контейнеры вообще дома не нужны. Дома на то и дома, что собираешь как хочешь. Я много работаю с k8s, и мне удобнее запустить k3s на таком сервачке, чтобы было привычно и удобно. Ты вот ниже пишешь, что тебе удобнее через Ansible - ну вот, оно же - излишнее для одной машины, но тебе удобнее вот так.


    1. Tangeman
      03.01.2023 20:38

      Не всё так плохо со split brain, двух нод может хватить если добавить простую логику - проверять связь через все доступные каналы включая внешние (активная проверка) и наличие внешних соединений, к тому же можно добавить ещё один альтернативный внутренний канал - например через USB или serial.

      Я использовал этот принцип для построения HA-рутеров (ровно две машинки) - всё отлично работало - если один не видел соседа (через serial, прямое соединение ethernet и через внутреннюю и внешнюю сети), а также не видел клиентов или аплинков - он автоматом деактивировался и ждал восстановления связи. При отсутствии соседа тот кто видел и клиентов и аплинки оставался (или становился) мастером - при такой кофигурации split brain практически невозможен пока жив хоть один канал связи.

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

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


  1. WondeRu
    03.01.2023 03:46

    Для таких машинок есть k3s - кубер для бедных.


  1. 1tuz
    03.01.2023 03:50

    С компиляцией поосторожнее, а то ещё расплавится апелельсинка)


    1. MagArt Автор
      03.01.2023 12:30

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


  1. shibanovan
    03.01.2023 04:42
    +2

    А какой клиент вы использовали для minio (s3)?


  1. megasuperlexa
    03.01.2023 06:27
    +5

    не могли бы подробнее раскрыть тему блока питания, а также каким образом подключили nvme?


    1. MagArt Автор
      03.01.2023 13:10
      +2

      Про блок питания, я использовал YC-CDA30, в документах указано 5V/4A, пробовал нагрузить насколько возможно на короткое время, у меня доходило до 5V/3.7A.
      Про nvme я пока жду доставки, по идее подключиться должен напрямую есть вход сзади M.2 M-KEY 2242. Протестирую и отпишусь.


      1. megasuperlexa
        03.01.2023 21:56

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


  1. Johan_Palych
    03.01.2023 12:03
    +6

    Из практических соображений можно просто купить 2 неттопа-Мини ПК
    Проц. Intel Celeron N5095 4M Cache, up to 2.90 GHz
    Max Memory Size (dependent on memory type) 16 GB
    Memory Types DDR4 LPDDR4x
    Maximum Memory Speed 2933 MHz
    Базовая конфигурация такого чуда стоит от 10 тыс.
    Для примера:
    Mini PC Beelink Mini S Windows 11 Intel 11 Gen Jasper Lake N5095 8G SSD128G
    Корпус: Вес товара, г 700 c БП Размеры,мм: 210x135x65

    Забэкапить диск без активации Windows. И ставить любую ОС


    1. werter_l
      03.01.2023 15:09
      +1

      proxmox же )


      1. Johan_Palych
        03.01.2023 16:37

        Не совсем понял причем здесь Proxmox?
        Intel Celeron Processor N5095 виртуализацию поддерживает:
        Intel® Virtualization Technology (VT-x) Yes
        Intel® Virtualization Technology for Directed I/O (VT-d) Yes
        Intel® VT-x with Extended Page Tables (EPT) Yes

        Можно Развернуть на 3-х коробочках 3 ноды ProxmoxVe и будет High Availability Cluster или другой гипервизор на Linux и Windows.

        Материнка на Beelink Mini S с одним слотом под память.
        Покупать 16гб DDR4 SODIMM(от 2.5 тыс) на 2 или 3 коробочки жаба душит.
        Но есть возможность добавления 2,5-дюймового диска SATA в крышку,
        которая подключается к материнской плате через короткий ZIF-кабель.
        Был хороший обзор на cnx-software.


        1. werter_l
          04.01.2023 12:33

          К тому. что если купили себе билинк под СЕРВЕР, то лучше варианта, чем развернуть на нем proxmox для дальнейшего "серверного" использования нет.

          Вот к этому.

          Зы. Другой гипервизор не надо. Другой не умеет из коробки в zfs, бэкапы по расписанию и инкрементно (с pbs), кластеризацию бесплатно и т.д.


    1. DevAdv
      03.01.2023 22:39
      +1

      Я просто купил БУ ноутбук c i5-1135G7 и разбитым экраном (не показывает правая четверть) за $150. Тут ниже привели сравнение в бенчмарках, добавил и этот процессор. Быстрее других приведённых тут на 60-100+%.

      Правда, памяти 8 гигабайт и не расширяется, но мне для моих задач достаточно.

      Одноплатные компьютеры - это круто, но по цене в $30 долларов. А когда за такие же деньги можно купить полноценное устройство - непонятно, в чём их смысл.


      1. Johan_Palych
        04.01.2023 01:51

        Удачная покупка за за $150
        Хороший камешек Intel Core i5-1135G7 Processor 8M Cache, up to 4.20 GHz
        Max Memory Size (dependent on memory type) 64 GB



  1. Alexzionx
    03.01.2023 13:11
    +1

    Пользуюсь Orange pi zero 1 и Orange pi zero 2, причем zero 1 еще с момента выпуска, лет 5 уже, может больше, отказов не было, совсем.

    Коротко по конфигам:

    Zero 1: microsd 128gb samsung, 1xUsb 256gb samsung, (docker, emby, gogs, samba, httpd, +тестовые образы переодичесски)

    Zero2: microsd 64 samsung, 2xUsb 256gb не помню чьи, в рейде через mdadm, на ней докер забит кучей тестовых образов и vm, + через проьлос порта доступ к 1 vm из вне.


  1. Vaitek
    03.01.2023 14:52
    +2

    Passmark утверждает, что проц на уровне core i7 первого поколения

    https://www.cpubenchmark.net/compare/4906vs4565vs840/Rockchip-RK3588-vs-Intel-Pentium-Silver-N6005-vs-Intel-i7-970

    Вы не делали каких-то бенчмарков?