- PVSM.RU - https://www.pvsm.ru -

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

Как мы создавали кластер из Raspberry PiСовсем скоро в Лондоне пройдет известная конференция WSO2Con [1] 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 сейчас занимается конструированием пары регулируемых систем подачи питания. Ниже несколько фотографий платы и источников питания в действии.

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

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

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

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

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

Raspberry Pi повсюду!

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

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

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

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

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

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

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

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

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

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

Примечание: в оригинале второй части [5] статьи представлены схемы и исходные коды приложения, а также подробная презентация процесса. Замечания приветствуются в личку.

Автор: Could

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/27757

Ссылки в тексте:

[1] WSO2Con: http://wso2con.com/

[2] StratosLive: https://stratoslive.wso2.com/home/index.html

[3] скрипт: http://www.instructables.com/id/Blinking-LED-with-Raspberry-Pi/

[4] Raspbian: http://www.raspbian.org

[5] второй части: http://blog.afkham.org/2013/02/building-raspberry-pi-cluster-part-2.html

[6] Источник: http://habrahabr.ru/post/170305/