Работаю разработчиком и довольно часто бывает нужны какие то сервисы локальные под рукой, что то дорогого покупать не хотелось, арендую обычно когда выкатываю к заказчику. Подумал поискать где можно хранить нужные для разработки, хранения и демонстрации сервисы (сайты, API и другое) . Наткнулся я на очень миниатюрное и экономичное решение, это SBC - single-board computer, одноплатные компьютера. Из того что хотелось бы это побольше памяти и ядер (потоков) процессора, а тут бонусом еще и миниатюрность, возможность легко перевозить, работать от power bank в случае необходимости.
В процессе анализа рынка я находил разные решения, начиная от популярных Raspberry Pi 4, до мало известных Khadas Vim4, который я брал летом и продал осенью потому что подумал что цена для него высоковата, в сравнении с другими устройствами.
Требования у меня были примерно такими:
8+Гб оперативной памяти (желательно DDR4, 1666 и выше)
4+ ядра (хотелось бы х86/х64, с arm64 и другими не работал, но готов исследовать)
Наличие подключения для SATA или NVMe дисков.
Возможность собрать несколько устройств в единый класстер.
Возможность легко перевозить и настраивать.
Посмотрев разные варианты мне на глаза в ноябре попался 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$
Заказал 30 ноября и о чудо, 20 декабря пришли две платы Orange Pi 5 16Gb RAM.
Приехал доставщик Fedex c таможенной бумажкой к дому, на месте заплатил +7% Тайский таможенный налог за ввоз. (около 700 бат) . Упаковано было не очень, просто коробка, внутри плата и инструкция, но все доехало в целости.
Почитав инструкцию по использованию нашел как установить операционную систему и запустить. На официальном сайте доступны несколько ОС, я выбрал обычную Linux Ubuntu 22.04 с рабочим столом xfce.
Скачал образ Ubuntu 22 и через balenaEtcher залил образ на SD карту. Процесс там элементарно простой, выбрать образ, выбрать куда, нажать запуск, дождаться окончания и вот флеш карта с системой готова. Далее остается ее вставить в единственные подходящий порт, подключить монитор и питание. У меня есть переносной монитор 17", подключил его по HDMI, вставил кабель USB-C и нажав кнопочку пошли моргать светодиоды. Красный что устройство включено и зеленый когда идет работа.
Работает отлично, отклик на действия быстрый, картинка хорошая, видео 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 (при первом входе попросит создать пароль)
Для тех кто знает из чего состоит докер все будет относительно понятно, volume — места для хранения, network — настройки сети, images — образы, containers — непосредственно сами контейнеры, запущенные инстансы образов с настройками и stacks — система конфигураций, для запуска нескольких контейнеров с широким спектром возможностей (например маштабировать — реплицировать сервисы, сайты, API и т.д).
Немного позже я запущу оба одноплатных компьютера и поставлю Kubernetes для возможности запускать приложение на разных компьютерах, что позволит настроить и посмотреть что будет если один из компьютеров выйдет из строя. По идее система должна будет автоматически запустить сайт/сервис на другом доступном компьютере. Но это в следующей статье…
Пока что немного в догонку, я попробовал поставить 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, очень удобно, пришел домой, телефон и другие устройства подключились к домашней сети и автоматически загрузили свежие фото/видео/документы, поддерживает версионность файлов. Можно настроить что бы и из внешнего интеренета можно было загружать но это надо подумать о безопасности.
Моя следующая цель позапускать через pipeline сборку приложений, для начала .Net Core C# (asp mvc, web api), а потом попробовать собрать игру Unity3d и запустить серверную часть внутри кубера с балансировкой игроков.
Напишите в комментариях, интересна ли вам статья? , что еще вы бы хотели попробовать, проверить, посмотреть? на Orange Pi 5.
Буду рад вашим вопросам, пожеланиям и предложениям.