Пользователь
0,0
рейтинг
22 февраля 2013 в 04:24

Разработка → Как мы создавали кластер из Raspberry Pi перевод


12-14 февраля прошла известная конференция WSO2Con 2013. И её ведущим был Эбен Аптон (Eben Upton) — основатель и попечитель фонда Raspberry Pi Foundation.

Как все однажды началось...


Raspberry Pi будоражит умы гиков с тех самых пор, как была первый раз анонсирована. Мы были взволнованы услышать о том, что Эбен будет представлять конференцию и ещё больше удивлены, когда Sanjiva (прим. пер.: CEO WSO2, главный организатор конференции) предложил нам разместить бэкенд официального приложения WSO2Con на кластере из Raspberry Pi. Предложил что? Да, он всегда полон безумных идей. Первое совещание прошло 23 декабря 2012, за день перед уходом команды на рождественские каникулы. В то время мы даже не были уверены, возможно ли вообще запустить enterprise middleware на Raspberry Pi. Но исследование неизведанного — это обычное дело для WSO2, и достижение недостижимого — то, что мы делаем здесь на регулярной основе. Таким образом, группа отважных гиков бросила вызов созданию такой системы. Проект официально сдвинулся с мёртвой точки 2 января этого года.

Запуск Java и WSO2 middleware на Pi?? Вы спятили!


Одному из ведущих гиков WSO2, Lakmal’у, удалось запустить Java на Raspberry Pi, ему даже удалось запустить WSO2 AppServer. Однако, главное беспокойство было в том, что требовалось 6 минут просто, чтобы запустить AppServer на Pi. Это было неприемлимо для нас, и мы пришли к выводу, что надо было оптимизировать программное обеспечение для запуска в средах с ограниченными ресурсами. Модель Raspberry Pi B имеет всего 512MB RAM и ARM процессор с частотой 700 MHz. Два гика из команды разработки ядра Carbon, Sameera и Pradeep приняли вызов оптимизировать ядро под столь ограниченные ресурсы и вскоре представили концепт. Они смогли уменьшить время запуска до около одной минуты.

Неприятный сюрприз


Один из главных сюрпризов таился в конфигурации памяти Raspberry Pi. И хотя у нас была модель B, имеющая 512MB RAM, утилита raspi-config отображала всего 256MB! Казалось, мы с разбега ударились в стену! В конце концов, у нас оставалось только 3 недели до конференции и мы никоим образом не смогли бы получить другую партию так быстро. Но никогда не следует отчаиваться и команда WSO2 искала информацию в сети, но находила лишь ложную. Наконец мы обнаружили, что полный “apt-get update”, а после — “apt-get upgrade” и обновление raspi-config решает проблему. Теперь все 512MB были доступны. Используя функционал разделения памяти raspi-config, мы выделили всего 16MB на графический процессор. 16MB достаточно, потому что не планировалось большое использование графического процессора нашим приложением.

Есть контакт!


Другой проблемой, с которой мы столкнулись была подача энергии к кластеру. Использование индивидуальных блоков питания — дорогая и непрактичная затея. Потому мы решили построить нашу собственную систему питания. Мы сконструировали USB платы, раздающие питание, которые сами были подключены к регулируемым блокам на 5V. Raspberry Pi модель B питается током 700-1200mA и напряжение между двумя контрольным точками на плате (TP1 и TP2) должно быть в пределах 4.7-5.2V. Изначально мы столкнулись с несколькими проседаниями напряжения, оно было много ниже порога 4.7V. При анализе цепи оказалось, что соединительные провода имели сопротивление 1-2 ома, что и вызвало ощутимое падение напряжения. Мы решили эту проблему, используя более толстые провода и сконструировали плату так, что падение по мощности составляло меньше чем 0.5V, что, кстати, меньше чем падение на обычном диоде. Гений электроники Sumedha сейчас занимается конструированием пары регулируемых систем подачи питания. Ниже несколько фотографий платы и источников питания в действии.






Что за беспорядок!


Мы планировали разместить 20+ Raspberry Pi в нашем кластере для запуска нескольких продуктов WSO2. Что ж, распределение места на рабочей площади и забота о том, что провода не запутались было другим испытанием. Мы хотели сделать стойку, но Sumedha посоветовал сделать сперва прототип стойки и испытать несколько разных конфигураций прежде чем утвердить её окончательный вид. Sumedh, который родом из города плотников, Moratuwa, также хорош в плотническом деле. Так, за минувшие выходные он быстро собрал стойку. Ниже фотография стойки с двумя полками, с 8-мью Raspberry Pi на каждую и свитч. Теперь мы расширили её до трёх полок. Видео в конце поста.



Мы хотим построить финальную стойку, используя чистые пластиковые листы.

Raspberry Pi повсюду!


После размещения всех Pi по местам, следить за ними стало новым испытанием. Выяснение IP адреса для создания ssh сессии, перезагрузка и ПО WSO2 стали сложными для управления. Подключение HDMI кабеля и клавиатуры к каждому Pi в кластере было ещё менее практичным решением. Тогда нам пришла идея создания центра управления Raspberry Pi. Мы быстро создали простое веб-приложение и разместили его на StratosLive. Задания Cron, вызывающие Perl и Bash скрипты, написанные Lakmal и Deep и размещенные на Raspberry Pi, будут периодически отправлять информацию в центр управления и также проверять есть ли команды из центра, ожидающие выполнения на Pi. Вот некоторые из этих команд: моргнуть светодиодом, перезагрузиться, обновить IP, включить/выключить питание кластера. Теперь, всего лишь двумя кликами в интерфейсе центра мы можем контролировать весь кластер Raspberry Pi. Размещение Pi в стойки может быть очередным испытанием, если у вас достаточно большой кластер. Мы использовали стандартный скрипт мигания LED на питоне, использующий библиотеку GPIO для отправки сигналов на Raspberry Pi. Используя данный функционал мы смогли определить местоположение каждого Pi и сделать маркировку, используя номер стойки и номер Pi. Сейчас мы работаем над подключением кнопок к каждому Pi, чтобы при нажатии высвечивался номер данной машины в центре управления.









Загрузи меня, детка!


Как только кластер был включен и запущен мы запустили серию нагрузочных тестов JMeter. Предварительное тестирование производилось с кластером на 8 Pi. При 750 одновременно отправляемых запросах кластер поддерживал пропускную способность в 350 TPS, и задержка составляла в среднем 1 секунду.

Центр управления в действии


В этом видео команда испытывает центр управления кластером. Болтовня на заднем плане — на сингальском (Шри Ланка).



Мы будем представлять демонстрационный стенд на WSO2Con в Лондоне и подарки посетителям будут включать в себя Raspberry Pi модель B, SD-карту с образом Raspbian и кейс для Raspberry Pi.
Загляните на наш демо стенд и мы позволим подключить ваш Pi в кластер и тут же увидеть как он начнет обрабатывать запросы приложения конференции. Мы также проведем сессию о том как мы создавали эту установку и приложение.

Примечание: в оригинале второй части статьи представлены схемы и исходные коды приложения, а также подробная презентация процесса. Замечания приветствуются в личку.
Перевод: Azeez
Александр Тарасов @Could
карма
23,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

  • +28
    «Мы решили эту проблему, используя более тонкие провода» – так проблему можно только усугубить :) Решить ее можно наооборот, проводами потолще, что собственно и написанно в оригинале.
    • 0
      «После анализа цепи, мы нашли сопротивление величиной 1-2 Ома в проводах, которое и было причиной падения напряжения. » — Тоже хорошо сказано. Видимо переводил человек, далёкий от электроники!
      • 0
        1-2 Ohm resistance in the wires was causing this voltage drop.

        Буду рад услышать рекомендации специалиста по переводу данной фразы и с удовольствием внесу изменения в статью.
        • +2
          Ну например так: Сопротивление проводов в 1-2 Ома послужило причиной падения напряжения.
          Ну или так: Оказалось, что соединительные провода имели сопротивление 1-2 ома, что вызвало ощутимое падение напряжения.
          • +1
            Благодарю!
  • +31
    Так вот куда все RPi делись :-)
    • +2
      тоже первое, что пришло на ум.
  • +9
    Боюсь показаться глупым, но спрошу. В чём преимущества данного решения и область применения?
    • +17
      Because we can, just for fun. imho, конечно же.
    • +6
      Есть вполне нормальное практическое применение.

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

      Вам нужно отладить ваше ПО. Сначала вы, конечно, его отладите на одной машине, но в нем могут остаться ошибки, которые проявляются только при реально параллельной работе на большом числе узлов. Чтобы проверить этот режим работы, вам нужен кластер. Кластер из кучи RPi, конечно, не особенно быстрый, и памяти на каждом узле немного, зато в смысле параллельной работы это самый настоящий кластер и он гораздо дешевле, чем «большой и серьезный». Вы можете отладить свое ПО на нем, чтобы быть более уверенным, что оно будет правильно работать на «большом и серьезном».
      • 0
        Кросс-компиляция — то ещё развлечение. Намного проще поднять сотню самых мелких виртуалок в амазоне.
        • 0
          Почему обязательно кросс-компиляция? Почему нельзя компилировать на RPi?
          • 0
            1. Это очень долго
            2. Почти наверняка нужны будут дополнительные библиотеки, которых нету в репах убунты/дебиана, стоящего на RPi. То есть их тоже надо будет собирать. А это — см пункт 1.

            У меня дома есть RPi, поверьте, компилировать плюсовый код на ней — ужасно долго, настоящее мучение.
        • 0
          Если конфигурационные скрипты написаны нормально, то обычно проблем не возникает. Я lvm как-то кроскомпилил и ничего
          • 0
            Если хорошо написаны, и если не используется никаких заточек под архитектуру, и ещё пара каких нибудь если. Но согласитесь, виртуалки от амазона всё равно проще и дешевле.
            • 0
              В предложенном варианте виртуалки у себя дома ещё лучше. :) 14 вирутальных ядер (2 на хост), по 4 инстатнса получаем 56 виртуалок, для любой отладки по уши.
              • 0
                В этом контексте амазон лучше только с той точки зрения, что между виртуалками настоящая сеть будет, с задержками — это может повлиять на работу распределённого софта. Но наверняка их тоже можно сэмулировать.
      • +3
        20 штук расберри пи стоят (со всей обвязкой) тыщи полторы баксов. Поднять в Амазоновском облаке 20 микроинстансов на пару часов будет стоить 1-2 доллара.
        • +4
          Проще за 200 долларов купить 32 гб оперативки или 48 если на материнке 6 слотов и крутить пару десятков виртуалок. И хоть год пользуйся.
          • +1
            Ага и 20 процессоров как-то на материнку поставить чтобы тянуть пару десятков вируталок.
            • +1
              Вы судя по всему не в теме. Нормальные гипервизоры держат свободно минимум по 4 машины на одном ядре CPU.
              • 0
                Запустить может и 50 штук можно. Но изначальное предположение было о том, что мы гоняем какой-то серьезный софт, который много чего считает и предназначен для работы на кластере. Какой толк его гонять в режиме «4 машины на одном ядре», если его суть как-раз в масшабируемости и многопоточности?
                • 0
                  Если надо протестировать масштабируемость и многопоточность, то и виртуалки, и кластер и RPi будут одинаково бесполезны. Только реальное железо с реальной производительностью. А то иначе легко можно будет посчитать, что все нормально, а при запуске на кластере все развалится или оценки будут отличаться от реальности на пару порядков в неизвестную сторону.

                  А вот для отладки на ранних стадиях разработки действительно набор виртуалок на мощном сервере будет удобнее чем кластер. Виртуалки всегда можно поставить на паузу и посмотреть в них микроскопом, можно притормозить какую-нибудь виртуалку и посмотреть, как софт на это отреагирует, можно выключить «питание» виртуалкам и смотреть на устойчивость к потере части узлов и много что еще…
              • 0
                А дисковую полку вы тоже за 200 баксов купите? Пару десятков виртуалок сгенерируют такой объём ввода-вывода что обычный контролер просто даст вам усреднённую скорость 15Кб сек и 15 операций в секунду.
            • +4
              Вычислительная мощность процессора Pi — 175 Mflops.
              Вычислительная мощность бытового core I5 — 100 000 Mflops
        • +1
          Пара часов — это очень оптимистично. Кстати, а EC2 все еще берут деньги за каждый перезапуск виртуальной машины?
          • 0
            а что, раньше брали? за что именно? по доллару за каждый ребут?
          • 0
            Время тарифицируется почасово на каждый инстанс, т.е. если включить 20 виртуалок на 15 минут — заплатите за 20 часов. А нафига их часто перезапускать?
            • 0
              Насколько я помню, раньше, если вы выключали виртуальную машину и включали ее снова, начинался «новый час» даже если машина была выключена через минуту после включения.
              • 0
                Вообще, если через минуту после выключения машины её снова нужно включать — у вас что-то не то с алгоритмами распределения нагрузки. По-хорошему, такие события должны быть очень редкими.
                • 0
                  Это правда. Но речь шла об отладке — может возникнуть необходимость переинициализировать виртуальную машину после того, как она пришла в «негодное» состояние.
  • +3
    «Мы решили эту проблему, используя более толстые провода и сконструировали плату так, что падение по мощности составляло меньше чем 0.5V, что, кстати, меньше чем падение на обычном диоде.» — наверное все-таки имелось в виду падение напряжения, а не мощности.

    А вообще круто. Не ясна только область применения такого решения. Хотя, конечно, интересно такими вещами заниматься.
    А «гений электроники» -это потому что блоки питания разобрал и навесным монтажом на плате USB-разъемы развел?
    • +6
      А еще ведь и гений плотницкого дела — собрал табуретку из бруса.
      • +3
        Все эти проводочки и RPi меня приводят в восторг :3
        Но необоснованное самолюбование авторами (оригинала, разумеется), меня насторожило. А когда я увидел и услышал видео… Гений провода и гвоздя :(
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Самый главный в мире вопрос: зачем?
    • +1
      Bitcoin генерить :)
      • +2
        ага и погоду рассчитывать) на самом деле это скайнет проектирует себе независимые блоки
        • +3
          Скорее брелоки)
    • 0
      just for fun
  • +2
    Ну не так уж и много для команды такого размера за 23 дня
  • +7
    Интересно, почему они не догадались поставить платы вертикально. Можно же взять 2 доски, сделать в них пропилы и вставлять в них платы raspberry Pi. И место экономится и можно обдув нормальный приделать.
    • +1
      [шуткуя]Плотник штатный сказал, что подконструкцию для вертикального размещения делать «It's too complex»[/шуткуя]
    • 0
      Пишите им… это будет RPi Cluster 2.0
      • 0
        С англицким плохо к сожаленью.

        А в принципе вариантов много, можно было соорудить некий интерфейс горячей замены, как например картриджи в приставках, или жёсткие диски в тех же корзинах и сделать одну большую плату с этими разъёмами. Тогда была бы решена проблема с быстрой заменой модулей при выходе их из строя. Но на это нужно время. А судя по тому, что время как раз тут минимизировали, то получилось громоздкое решение.
        • 0
          Представил себе классический картридж от приставки с Raspberry Pi внутри. Это офигенно!
        • 0
          У авторов тоже с англ не все гладко ;)
        • 0
          Имхо, это надо кардинально менять плату. Возможно всё таки стоило сделать по углам платы отверстия для монтажа, как в большинстве плат pandaboard/odroid/hackberry, и стал бы возможет монтаж на шпильках.
          Насчёт того что вы говорите, предложения есть: habrahabr.ru/post/144896/ habrahabr.ru/company/hp/blog/132733/.
          • 0
            Кстати да, тоже вариант. Хотя можно сделать некий пластиковый «контейнер» который бы имел отверстия для крепления и захватывал плату. Но это вероятно тонкая работа и руками столько креплений не сделаешь. Хотя если отверстия и крепление на общие полозья лишают систему возможности горячей замены модуля — придётся или вытаскивать полозья или снимать с них всё до повреждённой платы.
          • 0
            Насчет отверстий для монтажа — они появились. Две дырки. Правда, не не по краям.
    • 0
      Видимо ты давно не видел и/или не работал с Ланкийцами. Они немного иначе думают в принципе.
      И для них это таки да, неплохой прогресс.
      • 0
        Я с ними не работал вообще и о ходе их мыслей судить не могу, я посмотрел на конструкцию и сделал вывод о том, что можно было её соорудить компактней. Может они в этот момент были заняты чем-то другим и не думали о компактности решения. Кто знает.
      • +1
        А почему слово «ланкиец» Вы пишете с большой буквы?
    • +1
      Ну, что вы, это индийский гений гвоздя и молотка! Им виднее ;)
  • 0
    Я не понял зачем этот кластер, чем он будет нагружаться?
    Типа мап-редьюс будет работать или как?
    • 0
      Ну почти как мапредьюс, только в меньших масштабах. Кластер будет обрабатывать запросы приложения конференции. Про приложение написано, что оно будет использоваться для трансляции сессий, для назначения встреч с докладчиками, отображения twitter ленты по тегу #wso2con, чатов и всего в этом роде.
      • +1
        Все равно не ясно нафиг зачем там кластер, кроме как для красоты и попонтоваться.
  • +4
    Понятно, почему уже второй месяц заказ висит оплаченный но «out of stock»
  • +3
    > что полный “apt-get update” после “apt-get upgrade”

    Должно быть наоборот (в оригинале как раз в правильном порядке).
    • 0
      Ошибся. Спасибо, что написали в личку!
  • 0
    Мне больше интересно что они подняли на таком кластере и как. Понял что что-то на джаве, а что не ясно.
    • 0
      Вот здесь упомянул: habrahabr.ru/post/170305/#comment_5909231
    • +1
      Удивительно, а почему бы не на брейнфаке заодно.
  • +2
    Нагрузочные тесты провели, а линпак не запустили… шикарно потестили...)
  • +1
    Как только народ не извращается. Но все равно аплодисменты, Вы молодцы.
  • +2
    Использовали продукты WSO2 на проекте. После этого кластер на Raspberry Pi и плотники-затейники для меня не выглядят чем-то неожиданным :)
  • +1
    Ув. could, хоть это и перевод, но поправьте в первом абзаце информацию о дате конференции, так как она уже прошла 12-14 февраля. :)
    • 0
      Спасибо, поправил!

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