После не самого удачного опыта с Raspberry Pi 2 B в качестве домашнего сервера, я на пару лет бросил идею с домашним хостингом. Но количество PET проектов только увеличивалось. Тогда я раздобыл старенькую рабочую лошадку - полноразмерный HP сервер 1U с 8gb оперативной памяти, intel xeon. Разместил этот юнит в колокейшине и платил 35$/месяц за размещение. Помимо Ubuntu Server, там ещё стоял Windows Server для разработки и тестирования ASP.NET сервера. Пока один из проектов приносил прибыль, мне было выгодно размещать сервер в колокейшине. Через год, проект приносящий прибыль - заморозили, а привычка иметь собственный DEV сервер - осталась. Тогда я решил запустить этот сервер дома, даже не задумываясь о том, сколько шума он будет издавать. Чтобы вы понимали, я жил в панельном многоквартирном доме. И ко мне иногда приходили соседи с вопросом: «А чего у вас так долго пылесос работает?». Конечно же, мне это быстро надоело и я отключил сервер, положив на полку как сувенир. А без сервера было скучно…

Через некоторое время, один из моих проектов заинтересовал Швейцарскую компанию, которая занимается продажей золота. Если вкратце, это сервис, который выполняет работу ERP системы(учёт клиентов, контрактов, хранение документов, pdf сервис и всяческие отчёты). Этот проект необходимо было адаптировать под потенциально клиента, попутно переписать с устаревшей версии ASP.NET и всего стека Microsoft, на что-то быстрее и проще. В этот момент я выбрал GoLang, PostgreSQL, S3, Docker и парочку вспомогательных технологий, так как имел опыт работы с ними. Так вот, это эксперимент и клиент может в любой момент сказать, что ему это решение не подходит. Было решено, что хостить буду его - дома, дабы избежать лишних расходов и не тратить время на настройку облачных служб. Ну и хотелось попробовать решить проблему с предыдущей версией малинки.

В качестве решения проблем с производительностью, решил приобрести Raspberry Pi 4B. Но не базовую версию, а сразу раскошелится на 8Gb RAM, а вдруг пригодится(тогда цены были по приятнее, чем сейчас). Малинка пришла спустя пару дней, а переходник с micro HDMI на обычный HDMI - спустя две недели. После чего я установил RaspbianOS и был огорчён тем, что ОС не поддерживала 64-bit(но сейчас она уже вышла из беты - https://habr.com/ru/news/t/649431/). Значит никакой графики и экспериментов с интерфейсом, решил я, устанавливая Ubuntu Server 64-bit. Подключил это дело к роутеру, выставил статический IP-шник и начал устанавливать GoLang, Postgres. Установка занимала очень много времени, а когда доходило время до тестов базы данных - становилось очень больно. Узким местом оказалась SD карта.

Накопитель

Моя microSD карта была маловатой(16GB), в связи с чем решил приобрести карту на 32GB от Samsung с максимальными скоростями чтения и записи. Но добиться хороших показателей в работе с файловой системой - не удалось. Тогда я узнал, что данная модель малинки может запускать OS не только с microSD, а ещё и с USB накопителя. Напомню, что у model 4B есть два порта USB 3.0, помимо стандартных USB 2.0. Куда я подключил карман со стареньким SSD на 64gb, который достался мне с предыдущей работы. Скорости чтения и записи выросли в разы, а точнее в 10 раз. Конечно без танцев с бубном не обошлось, оказалось что не все карманы поддерживаются и корректно работают на скоростях доступных для порта USB 3.0. Мне - повезло, второй карман от AgeStar оказался подходящим, в отличие от noname китайского переходника. Пришлось заклеить изолентой диод на кармане, так как он ночью мог «вызвать приступ эпилепсии», за счёт своей яркости. Недавно наткнулся на сайт где собрали информацию по подходящим моделям карманов: https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/

Кстати, очень хотелось добиться скоростей повыше используя NVMe накопители. Но, насколько я понял, любой переходник на USB 3.0 будет ограничен скоростями того же USB и значительного прироста скорости это - не даст. Хотя были энтузиасты, которые умудрялись добавить поддержку PCI-E. Не думаю что они сильно выиграли в скоростях, но если я не прав, поправьте меня в комментариях.

Нашел статью на Хабре с использованием NVMe через USB переходник: https://habr.com/ru/company/ruvds/blog/530948/. Скорости таки выше чем у sata, но не в разы:

Результаты тестирования на Samsung 860 Evo-Series 250GB 2.5" SATA III V-NAND (MLC)
Результаты тестирования на Samsung 860 Evo-Series 250GB 2.5" SATA III V-NAND (MLC)

А вот разница между NVMe и SATA в записи на диск файла размером 500 Мб из памяти:

  • NVMe: 524288000 bytes (524 MB, 500 MiB) copied, 2.63385 s, 199 MB/s;

  • SATA: 524288000 bytes (524 MB, 500 MiB) copied, 2.7568 s, 190 MB/s.

Борьба с тротлингом

После того как удалось добиться адекватных скоростей накопителя, с базой данных стало приятно работать. Также npm пакеты быстренько загружались, хотя, кому я вру, всё ещё медленно, но значительно быстрее чем было раньше (кстати, в моём проекте папка node_modules занимает в районе 1.2gb). Во время тестирования сервера замечал притормаживание, сначала предполагал что это процессор сильно перегружен(такое часто встречалось на второй малинке, такое ощущение что расшифровка ssl сертификата заставляла задуматься сервер - но не могу это утверждать). Потом оказалось что это проблема с блоком питания. По какой-то причине, блок питания не выдавал больше 1А, хотя малинке нужно до 3А. Взял блок(20W) от iPad Air(4) с его же кабелем. После чего проблема с питанием пропала, но появился тротлинг из-за перегрева процессора.

Много вариантов радиаторов есть на рынке для малинки. Почитав отзывы, понял что tower вариант - один из самых эффективных, ещё и с активным охлаждением. После установки радиатора с активным охлаждением, проблема с тротлингом - пропала, температура процессора была в районе 35 градусов. Спустя пару недель пришлось разобрать вентилятор охлаждения и отковырять диоды, которые раздражали своим свечением ночью. Помимо этого, раздражал и шум, который издает тот самый вентилятор ночью. Для решения этой задачи, я решил написать миниатюрную программу, которая запускает кулер исключительно днём и при условии достижения пороговой температуры https://github.com/stalko/pi_fan_scheduler. Для управления включением/отключением использовал драйвер двигателя из набора от Arduino проектов. Данная система поработала около 3‑х месяцев, после чего я решил вообще отключить кулер и посадить радиатор на термопасту(вместо термопрокладки), так как температура, без кулера, не поднималась выше 52 градусов. То есть пассивного охлаждения было - достаточно. А с термопастой температура упала до 47 и выше - не поднималась.

Что по софту?

  • Nginx - куда же без него. 

  • Cerbot - создание и авто продление ssl сертификатов. 

  • Minio - по сути это как S3 хранилище, работает просто и библиотеки есть для всего (по крайней мере есть такое ощущение. Для него обязательно платформа 64bit!

  • PostgreSQL 11 - даже без настроек, база работает очень быстро. Единственное что, не могу утверждать будут ли работать все дополнения(например как PostGIS, хотя должны, я потом проверю).

  • Docker - отлично работает, в целом очень рад, что благодаря контейнерной виртуализации, проекты так легко запускать и поддерживать. Там же крутится GoLang, Redis, ReactJS/Typescript, Weasyprint(для генерации PDF из HTML страниц).

  • Github-actions - кто не знает, это возможность использовать собственный сервер для сборки, тестирования и публикации своего github проекта. Github предоставляет ограниченное количество времени в месяц на выполнения Actions в бесплатной подписке. А вот если вы используете свой хостинг, ограничений - нет. Я даже умудрялся билдить проект на малинке под flutter web.

  • Mongodb - собственно, тут тоже нет ничего необычного.

  • Plex Server - использовал не долго, так как нашел возможность поднять его напрямую в NAS.

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

Итог

Данный сервер у меня уже чуть меньше года, около 10 месяцев. За это время у меня и других сотрудников не было ни единой проблемы связанной с тем, что мы используем малинку в качестве DEV сервера. Не было зависаний, как на предыдущей версии Model 2B. Никого из моей семьи не тревожит наличие данного сервера. А его потребление в районе 5W. 

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


Учитывая что вторая Raspberry Pi Model 4B на 4gb лежит без дела, пробовал на ней запускать Windows on ARM. Играл в герои и "наслаждался" зависаниями при работе системы, даже при переходе на SSD, вместо microSD карточки. Также попытался установить Steam, но постоянно выскакивали ошибки. В общем, Windows - не готов ещё для этой модели малинки.

Если вы также не равнодушны к технологиям и алгоритмам, подписывайтесь на мой телеграм канал - https://t.me/stalko_tech. Всем хорошего настроения!

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


  1. Saymon
    10.02.2022 17:07
    +2

    Еще один неявный плюс, но уже для пользователей. Система разработанная и протестированная под такую миниатирную конфигурацию с высокой долей вероятности не будет доставлять проблем с небоснованным вижиранием ресурсов ;-)


  1. Ivanii
    10.02.2022 17:44
    +2

    За цену Raspberry Pi 4 можно б.у. ноут взять c такимже быстродейстыием...


    1. stalko23 Автор
      10.02.2022 18:01
      +1

      Думаю что можно приобрести даже лучше, учитывая наличие pci-e интерфейса. Но, пассивным охлаждентем - не обойтись. Потребление также будет - больше


      1. localkost
        10.02.2022 18:13

        Я, несколько лет назад, использовал в качестве сервера Asus eeepc 900, практически безшумная машина, сейчас возможно стоит попробовать бэушный Macbook Air. Надо посмотреть ценники на Авито)


        1. stalko23 Автор
          10.02.2022 18:17
          +1

          Учитывая ценообразование на технику Apple, боюсь что цена будет - намного выше)


        1. drWhy
          10.02.2022 18:19

          Ёжик — машинка приятная почти во всех отношениях. Кроме старинного на момент выпуска процессора и чипсета и двух крошечных небыстрых SSD.


          1. stalko23 Автор
            10.02.2022 18:20
            +1

            Можно узнать что это такое - Ёжик?)


            1. drWhy
              10.02.2022 18:27
              +1

              ASUS Eee PC 900 и другие. Их ласково ёжиками прозвали на форумах. Вообще нетбуки существенно поспособствовали в своё время проникновению мобильной техники в массы и демократизации цен, ультрапортативные ноутбуки стоили существенно дороже, а обычные были тяжеловаты для настоящей мобильности. Зато сейчас имеем класс относительно недорогих и достаточно производительных лёгких ультрабуков.


              1. stalko23 Автор
                10.02.2022 20:38
                +2

                Согласен, лет 15 назад очень хотел себе нетбук только за счёт своей компактности. Сейчас уже не могу позволить такое маленько устройство для работы, вот был бы сис. админом)

                Кстати, у моей жены остался старенький Aser Aspire One 752. Хотите я проведу сравнительные тесты с raspberry? Конечно же постараюсь сделать всё максимально справедливо.


                1. drWhy
                  11.02.2022 11:00

                  Азотное охлаждения для малинки против бинарной совместимости с x86-64? ;)
                  Малинки вполне заслуженно наступают, каждой ягоде своё время.
                  Но сравнить, конечно, интересно, хотя и разные они.


        1. OptimumOption
          11.02.2022 09:39

          Ну логичнее посмотреть в сторону Mac Mini, мне кажется?


          1. stalko23 Автор
            11.02.2022 11:05

            Думаю что за такую же цену можно было бы купить mac mini 2011 года. А что поводу системы, нормально ли там работает linux?


            1. Anrikigai
              11.02.2022 11:12
              +1

              Чисто для понимания - насколько такие древние компы реально употребимы?

              Я вот сунулся подобие NAS сделать на основе старого ноутбука (TrueNAS поставить и внешний большой диск прицепить) - штук 5 пересмотрел, в целом даже рабочие вполне, но все USB 2.0

              Подозреваю, что и электричества потребляют раза в 3 больше, чем RPi.


              1. Ivanii
                11.02.2022 11:27

                SATA не лучше USB?

                И постом ниже: "б/у chromebox за 30 баксов. 4 гига памяти, 16g ssd, пассивное охлаждение, usb 3.0." , в Москве вроде есть по 3500 р.


                1. Anrikigai
                  11.02.2022 11:39

                  У меня 12TB 3.5" в USB коробочке. Я не знаю, как к ноуту подключить через SATA.

                  Понятно, что задачи у всех разные, кому-то нужно только виртуалки/контейнеры запускать, там 1Gbps сетевого интерфейсас достаточно.

                  Просто я был в полной уверенности, что сейчас сделаю все хорошо, но уперся в USB 2.0

                  Также сталкивался, что VMware ESX 7 не устанавливался на старые вполне себе хорошие устройства (то этот Realtek уже не поддерживается, то CPU слишком старый)

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


          1. localkost
            11.02.2022 11:15

            Mac Mini превращается в пылесос при большой нагрузке а Macbook Air абсолютно бесшумен. Что, при использовании в домашних условиях, имеет первоочередное значение. Да и стоимость, по видимому, моделей 2010 - 2011 годов не особо отличается.


            1. Anrikigai
              11.02.2022 11:20

              Можно ли Macbook Air с закрытой крышкой гонять?

              В свое время наткнулся на

              There is no option in the battery or energy saver settings that allows a MacBook to remain awake with the lid closed if an external monitor isn’t plugged in.

              и забил на это дело.


              1. localkost
                11.02.2022 12:00
                +1

                Для решения этой проблемы есть переходники mini DP > VGA, они прекрасно эмулируют монитор, впрочем, не составит особого труда аппаратно переназначить концевик на простое отключение подсветки.


                1. Anrikigai
                  11.02.2022 12:58

                  А, точно. Что-то я тогда ступил.

                  У меня ж самого стоит заглушка HDMI "проходная" для ESX (без нее если не был монитор подключен, потом не получается посмотреть консоль, возможно из-за двух видео карт путаница)


      1. pwl
        10.02.2022 23:37
        +3

        задолбавшись в очередной раз со скоростью pi'ного usb, его жалобами на источник питания, и тем как все это выглядит, нашел неожиданное для себя решение - б/у chromebox за 30 баксов. 4 гига памяти, 16g ssd, пассивное охлаждение, usb 3.0.

        не смотря на схожие характеристики с pi4, убунта стала просто летать.


  1. ALito
    10.02.2022 19:10

    А почему не рассматривали вариант с бесплатными серверами Oracle?


    1. stalko23 Автор
      10.02.2022 20:19

      Честно говоря, не знаком с сервисами Oracle. Но, я пробовал использовать бесплатные сервисы от Azure и Amazon - каждый раз выходил за лимиты(по количеству запросов, хранилищу и т.д.). В случае с Raspberry я ограничен исключительно архитектурой ARM и относительно низкой производительностью.


      1. ALito
        10.02.2022 20:45

        Рекомендую попробовать. Oracle даёт бесплатно 3 VPs, причем одна из них достаточно шустрая с 24 Гб ОЗУ.


        1. stalko23 Автор
          10.02.2022 20:46
          +1

          А меня долго не нужно уговаривать, побежал регистрироваться.


        1. stalko23 Автор
          10.02.2022 21:01

          Бесплатными являются также сервера на базе ARM - Ampere A1 Compute(https://www.oracle.com/cloud/compute/arm/). Приятно осознавать что и здесь встретились сервера на ARM.

          All Oracle Cloud Infrastructure accounts (whether free or paid) have a set of resources that are free of charge for the life of the account. These resources display the Always Free label in the Console (for Ampere A1 Compute shapes, see Compute).

          Using the Always Free resources, you can provision a virtual machine (VM) instance, an Oracle Autonomous Database, and the networking, load balancing, and storage resources needed to support the applications that you want to build. With these resources, you can do things like run small-scale applications or perform proof-of-concept testing.


          1. ALito
            10.02.2022 21:07
            +1

            Ага. Именно так.

            Причем этот ARM сервер не отображается как Allways free, но является таковым по сути, если создать VPs с цпу не более 4 и памяти не более 24 Гб. Кто то говорил, что можно создать 4 VPs с 1 цпу и 6гб ОЗУ каждая, но я лично так не пробовал.


            1. stalko23 Автор
              10.02.2022 21:08

              Спасибо


              1. Anrikigai
                10.02.2022 22:41

                Тут вот про Кубер как раз на таком ARM (ds писали, что был интерес): https://habr.com/ru/post/650017/

                Правда последний комментарий напряг - вдруг Managed Kubernetes отвалится через 30 дней, в то время как обычная ARM машинка с Docker спокойно себе продолжит работать.

                Впрочем, в худшем случае придется перейти на Pay as you grow. Денег-то платить все равно не придется.


          1. Salavat
            11.02.2022 13:34

            да, но после малого времени использования wirwguard вируалку заблокировал oracle.


        1. happy-cat
          11.02.2022 00:11
          +1

          А какие диски там даются? (hdd или ssd)?
          У меня сейчас есть их бесплатный сервер (2 штуки) уже год как работают но ооочень медленные hdd диски, а так в образовательно/развлекательно действиях неплохо, даже форум какой то крутится :)


          1. stalko23 Автор
            11.02.2022 11:08

            Скорее всего, там таки raid из hdd дисков. С диким ограничением на IOPS, как это делается в Azure.


          1. Antra
            11.02.2022 11:32

            При создании Block Volume можно выбирать параметры.

            По умолчанию Balanced (я так понимаю, как раз он входит в always free) для 50Gb пишет 3000 IOPS, 24 MB/s

            Для 150 GB соответственно 9000 IOPS, 72 MB/s

            Для 200 GB: 12000 IOPS, 96 MB/s

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

            Balanced Performance (oracle.com)

            Там же и про другие типы ищется (хоть быстрые, хоть дешевые)


  1. Tihon_V
    10.02.2022 19:12

    Проблему автономности rpi можно решить с помощью "небольшого" powerbank на 25~30 Ач, или подключать свитч/роутер через PoE и ставить шилд на pi.

    Но у моего провайдера, при отсутствии электроенергии - отключается оборудование и потому ни powerbank, ни ИБП мне не помогает.


    1. stalko23 Автор
      10.02.2022 20:23

      Не уверен, что обычный powerbank умеет работать в качестве UPS. То есть, работать от сети, пока она доступна и моментально переключаться в случае её отсутствия. Скорее всего, powerbank будет разряжать батарею, для нужд Raspberry, в это время батарея будет заряжаться - что приведёт к быстрому износу.


      1. alex_dow
        11.02.2022 12:48

        Где-то видел надпись на повербанке - "сквозной заряд", возможно это то самое


      1. Tihon_V
        13.02.2022 16:25

        Пользую ZMI QB826B. Из недостатков - мало емкости, mbp 16" 2019 заряжает только на половину... Можно разобрать и использовать напильник и gpio на rpi чтобы получать информацию о заряде батареи.