Бид Docker ашиглан програмыг байршуулах системийг бий болгодог. Rapberry pi дээр зэрэгцээ тооцоолох Cluster HAT-ийн техникийн шинж чанарууд

Өнөөдөр бид гайхалтай хэрэгсэл, тухайлбал контейнер програмыг байршуулах систем - Docker-ийн талаар ярих болно. Энэ сэдэв нь Raspberry Pi хөгжүүлэгчдэд шууд хамаатай. Муурт тавтай морил.

1. Docker гэж юу вэ

Магадгүй хүн бүр байршуулах системийг мэддэггүй байх. Тиймээс би тайлбарлая.

Ерөөсөө ярьж байна энгийн хэлээр, Docker нь програмыг нэг машин дээр нэг удаа тохируулах, түүний орчин (зөвхөн тохиргоог төдийгүй орчин) болон хамаарлыг хадгалах, дараа нь аль хэдийн тохируулсан контейнер хэлбэрээр түгээх боломжийг олгодог систем юм. Тэдгээр. Байршуулахын тулд танд зургаас өөр зүйл хэрэггүй болно.

Мөн та "Docker" болон "virtualization" гэсэн үгсийг нэг өгүүлбэрийн хаа нэгтээ харж болно, энэ нь Docker нь процессор, санах ой, үйлдлийн системийн цөм гэх мэтийг дуурайдаг гэсэн үг биш, виртуалчлал нь цөмийн түвшинд явагддаг. Түүний "виртуалчилдаг" бүх процессууд нь таны үйлдлийн системийн бодит процессууд юм.

Таны таамаглаж байсанчлан та маш олон программуудыг гаргаж ирж болно. Жишээлбэл, та биткойн олборлох Raspberry Pi кластер хийх гэж байгаа (дашрамд хэлэхэд энэ нь өнөө үед ашиггүй байгаа) бөгөөд таны арсенал дахь 1000 самбар тус бүр дээр та ижил програм хангамжийг суулгаж, тохируулах ёстой. Тийм ээ, та өөрийн үйлдлийн системийн дүрсийг эмхэтгэж болно, гэхдээ нэгдүгээрт, энэ нь тийм ч хурдан биш, хоёрдугаарт, тийм ч уян хатан биш (тохиргоо бага зэрэг өөрчлөгдсөн тул та үйлдлийн системийн дүрсийг бүхэлд нь дахин бүтээх хэрэгтэй).

Эсвэл, жишээ нь, та Rpi1, Rpi2, O-droid, Rpi3 гэсэн нэг самбарт компьютерийн хэд хэдэн өөрчлөлтөд зориулж програмаа түгээхийг хүсч байна. Хаана ч програмын бүтэц ижил, гүйцэтгэх код нь адилхан, гэхдээ тохиргоо нь өөр. Та хэрэглэгчдэд зориулсан 3.4 тусдаа суулгац, тохиргооны гарын авлагыг үүсгэж болох бөгөөд дараа нь та үүнээс залхаж, хамгийн алдартай платформуудад зориулж програмынхаа N өөр, аль хэдийн тохируулагдсан тохиргоог үүсгэж, тэдгээрийг контейнер хэлбэрээр түгээх болно.

Энэ бол миний санаанд оромгүй зүйл юм. Үнэн хэрэгтээ Docker бол маш хүчирхэг хэрэгсэл бөгөөд үүнд зориулсан хязгааргүй тооны програмууд байдаг.

Хамгийн том давуу тал нь та савыг Docker суулгасан өөр ямар ч машин дээр байрлуулах боломжтой юм.

За, танилцуулга хэсэг хэтэрхий удаан үргэлжиллээ. Ажилдаа орцгооё.

2. Суурилуулалт

Хэрэв та системээ эхнээс нь суулгаж байгаа бол Hypriot багийн бэлэн зургийг ашиглах нь илүү оновчтой байх болно.

Ихэнх хэрэглэгчид Docker-г туршиж үзэхийг хүсч байгаа тул системийг дахин суулгахгүй. Тиймээс Raspbian дээр суулгах процессыг доор харуулав.

0. Хэрэв танд Raspbian-ийн хуучин хувилбар байгаа бол шинэ хувилбар руу шинэчилнэ үү Debian 8-аас хойш Docker цөмд зориулсан дэмжлэг хайрцагнаас гарч ирэв.

$ sudo sed -i "s/wheezy/jessie/" /etc/apt/sources.list $ sudo sed -i "s/wheezy/jessie/" /etc/apt/sources.list.d/raspi.list $ sudo apt-get update && sudo apt-get -y upgrade # удахгүй болох асуултуудад "y" гэж хариулна уу $ sudo sudo apt-get -y dist-upgrade # удахгүй болох асуултад "y" гэж хариулна уу $ sudo init 6 $ sudo apt-get -y autoremove $ sudo apt-get -y purge $(dpkg -l | awk "/^rc/ ( хэвлэх $2 )") $ sudo init 6

1. Албан ёсны вэб сайт дээр Raspberry Pi дээр суулгах талаар тайлбарласан гарын авлага байхгүй ч Hypriot баг Raspberry дээр Docker суулгацыг автоматжуулах ажлыг маш сайн хийсэн. Тэдний хөдөлмөрийн үр шимийг ашиглацгаая:

$ git clone https://github.com/hypriot/rpi-docker-builder.git $ cd rpi-docker-builder $ sudo sh build.sh $ sudo sh run-builder.sh

Үүний дараа та ./dist/docker-hypriot_1.10.3-1_armhf.deb лавлахаас Docker суулгах багцыг олох болно. Энэ нь одоогоор хамгийн сүүлийн хувилбар юм.

Залхуу хүмүүс Hypriot-ийн бэлэн багцыг ашиглаж болно:

$ curl -sSL http://downloads.hypriot.com/docker-hypriot_1.10.3-1_armhf.deb >/tmp/docker-hypriot_1.10.3-1_armhf.deb $ sudo dpkg -i /tmp/docker-hypriot_1.10.3- 1_armhf.deb $ rm -f /tmp/docker-hypriot_1.10.3-1_armhf.deb $ sudo sh -c "usermod -aG docker $SUDO_USER" $ sudo systemctl docker.service-г идэвхжүүлнэ

2. Үйл ажиллагааны шалгалт

Sudo docker-ийн мэдээлэл

Docker хувилбар

Хувилбар, савны тоо, цөмийн хувилбар, драйвер гэх мэт мэдээллийг харуулах болно.

3. Одоо Raspberry Pi дээр docker run ашиглан ARM-д зориулсан docker container хэлбэрээр ашиглах боломжтой ямар ч програмыг суулгаж болно.

Дараах тушаал нь аль хэдийн тохируулагдсан жижиг вэб серверийг татаж аваад байрлуулна.

Docker run -d -p 80:80 hypriot/rpi-busybox-httpd

Савны жагсаалтыг ашиглан харж болно

Docker PS

3. Хэрэглээ

Мэдээжийн хэрэг та үндсэн командуудыг тайлбарлаж болно, гэхдээ үүний тулд баримт бичигт хандах нь дээр.

Тиймээс бид жишээг авч үзэх болно.

Бид NGinx вэб сервер болон PHP 5.4 байх контейнер бүтээхийг хүсч байна гэж бодъё.

Эхэндээ зургийг угсрах зааврыг бичсэн болно. Сэтгэгдэл бүхий файлын жагсаалтыг доор өгөв.

src: бүтээх/арын төгсгөл/Dockerfile

# Бид Ubuntu 14.04 LTS FROM ubuntu:14.04-ийг контейнер болгон ашигладаг # Ubuntu-г интерактив бус горимд шилжүүлээрэй - шаардлагагүй хүсэлтээс зайлсхийхийн тулд ENV DEBIAN_FRONTEND интерактив бус # RUN locale-gen ru_RU.UTF-8 && dpkg-г дахин тохируулах локал тохиргоог нэмнэ үү. шаардлагатай репозиторууд болон багцуудыг суулгах RUN apt-get install -y software-properties-common RUN add-apt-repository -y ppa:ondrej/php5-5.6 RUN add-apt-repository -y ppa:nginx/stable RUN sudo apt-key adv --keyserver keyserver .ubuntu.com --recv-keys 4F4EA0AAE5267A6C RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y wget curl php5-fpm php5-mysql php5-gdcurl php5- лийр php-apc php5 -mcrypt php5-imagick php5-memcache супервайзер nginx # Виртуал хостын тайлбарыг нэмнэ үү iloverpi.ru ADD /etc/nginx/sites-enabled/iloverpi.ru # Nginx-ийн демон горимыг идэвхгүй болго (бид үүнийг хийх болно. үүнийг өөрсдөө ажиллуул) RUN echo "\ ndaemon off;" >> /etc/nginx/nginx.conf # php-fpm-д демон горимыг идэвхгүй болгох RUN sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php5/fpm /php-fpm.conf # Хянагчийн тохиргоог нэмнэ үү (энэ контейнер дээр ажиллаж байгааг харахыг хүсэж буй процессуудын тайлбар) ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf # Бид VOLUME-г ямар санг холбохоо зарлаж байна. [" /var/www"] # Энэ контейнер EXPOSE 80-г аль портоор дамжуулахыг зарлаж байна # CMD удирдагчийг ажиллуулна ["/usr/bin/supervisord"]

src: build/backend/supervisord.conf

Nodaemon=true loglevel=debug команд=/usr/sbin/nginx autorestart=true command=/usr/sbin/php5-fpm autorestart=true

Бүрэн жагсаалттайлбар бүхий тушаалуудыг холбоос дээр авах боломжтой.

Одоо эдгээр зааврыг ашиглан iloverpi.ru-ийн зургийг угсарч байна.

Sudo docker build -t iloverpi.ru ~/PATH_TO_DOCKERFILE_DIR

iloverpi.ru дүрсийг эхлүүлэх ёстой бөгөөд ингэснээр контейнер үүсгэнэ. Нэмж дурдахад та 80-р хост портыг 80-р контейнер порт руу холбох хэрэгтэй. Жишээ нь тав тухтай, бүрэн гүйцэд байхын тулд бид хостын /var/www болон контейнерийн /var/www-г холбох болно.

$ sudo docker run -v /var/www:/var/www -p 80:80 -m -t iloverpi.ru

Контейнер ажиллаж байгаа эсэхийг шалгана уу:

Sudo docker ps | grep "iloverpi.ru"

Контейнерын нэрийг тодорхой заагаагүй тул бид түүнтэй харьцах боломжтой автомат нэрийг авсан.

Өмнөх командын гаралт дараах байдалтай байна.

D8429cc192c0 astgo.ru/dev:latest "/usr/bin/supervisor 20 секундын өмнө 19 секунд хүртэл 0.0.0.0:80->80/tcp container23

Энд "container23" нь савны нэр юм.

Контейнерийн командын мөртэй харилцахын тулд тушаал байдаг

Sudo docker exec -i -t container23 bash

Үүний дараа ердийн командын мөр гарч ирэх болно. Энэ бол манай савны консол байх болно.

Тиймээс бид чингэлэгээ угсарч, байрлуулж, түүнтэй хэрхэн харьцах талаар сурсан.

Нийтлэл урт байсан ч танд сонирхолтой санагдсан гэж найдаж байна. Дараагийн удаа хүртэл.

Raspberry Pi 3-ийг жинхэнэ бүх нийтийн компьютер гэж нэрлэж болно. Мэдээжийн хэрэг, та үүн дээр биткойн олборлож чадахгүй, сүүлийн үеийн консолуудын графиктай тоглоом тоглох боломжгүй, гэхдээ энэ нь бусад олон зүйлийг сайн зохицуулах болно. Доор, эргээд Raspberry Pi 3-ийн гол бөгөөд хамгийн алдартай програмуудыг авч үзэх болно.

Raspberry Pi 3-ийн мультимедиа чадвар

Raspberry Pi 3-ийн мультимедиа чадвар нь маш сайн. Ялангуяа Raspberry дээр үндэслэн та мультимедиа төв, тоглоомын консол, тэр байтугай бүгдийг нэг дор хийж болно. Үүний үр дүнд, энэхүү нэг самбарт картын тусламжтайгаар та HDMI портоор ТВ дээрээ дараах төрлийн зугаа цэнгэлийг үзэх боломжтой.

  • видео дотор өндөр нарийвчлалтай YouTube эсвэл бусад байршуулах сайтууд дээр;
  • стриминг үйлчилгээнд хөгжим;
  • тоглоомын урсгал, жишээлбэл, Twitch;
  • хуучин консолуудад зориулсан тоглоомууд: NES, SNES, SEGA гэх мэт.

Мультимедиа контентыг үзэх, сонсохын тулд та хөтөч ашиглаж болно, эсвэл бүр илүү тохиромжтой бол тусгай медиа тоглуулагч суулгаж болно. Тэдгээрийн хамгийн ажиллагаатай, тохиромжтой нь Kodi юм.

Raspberry-г тоглоомын консол болгохын тулд та сонирхож буй платформуудынхаа эмуляторуудыг суулгаж, тоглоомын Roms захиалах хэрэгтэй. Үүнийг хэдэн арван минутын дотор хийдэг. Тусгай түгээлт, жишээлбэл, Retro Pie эсвэл бусад зүйлийг суулгах нь илүү хялбар бөгөөд илүү тохиромжтой.

RPi дээр баримт бичиг боловсруулах, ажиллах

Мэдээжийн хэрэг, Малина бол хамгийн хүчирхэг компьютер биш бөгөөд энэ нь ажлын хамгийн сайн шийдэл биш гэсэн үг юм. Гэхдээ хэрэв та хүсвэл зарим баримт бичгийг үзэх/засах эсвэл бүр скрипт бичих боломжтой. Мэдээжийн хэрэг, энэ нь хүнд IDE-тэй ажиллахгүй, гэхдээ хэн ч үүнийг RPi-ээс шаарддаггүй.

Мөн RPi3-ийг ашигласнаар та интернетээр аялах эсвэл мессенжер эсвэл олон нийтийн сүлжээгээр чатлах боломжтой.

Raspberry Pi 3-аас бүх хэрэгцээнд зориулагдсан сервер

Raspberry Pi 3-ийг ашиглах өөр нэг сонголт бол үүнээс сервер хийх явдал юм. Тиймээс LAMP эсвэл зүгээр л Apache, Myphpadmin суулгахад хангалттай бөгөөд үүний дараа та нэлээд хязгаарлагдмал нөөцийн нөхцөлд вэб төслүүдийг боловсруулж, туршиж үзэх боломжтой.

Хоёрдахь сонголт бол Raspberry Pi 3-аас татаж аваад түгээх явдал юм. Үүний тулд мэдээжийн хэрэг танд гадаад хатуу диск хэрэгтэй болно, учир нь санах ойн картууд болон флаш дискүүд нь эдгээр зорилгод тийм ч тохиромжтой биш бөгөөд хурдны хязгаарлалт, бага хэмжээний эзэлхүүнтэй, мөн хүчтэй ачааллын үед хурдан элэгддэг.

Raspberry-г робот техник, IoT-д ашиглах

IoT болон робот техникийн хувьд RPi-ийн хэрэглээ бараг хязгааргүй юм. Энэ төхөөрөмжөөс та жишээ нь видео хяналтын камер, жижиг цаг уурын станц, алсын удирдлагатай машин гэх мэт зүйлсийг хийж болно. Тиймээс Raspberry Pi 3-ийг машинд DVR болгон ашигладаг. Хэрэв хүсвэл энэ нэг самбарт картнаас гар утас, ухаалаг утас ч хийж болно. Гэхдээ туршилт хийх эсвэл найз нөхөд/нийгмийн хүмүүст үзүүлэхийн тулд үүнийг хийх нь зүйтэй юм. Баримт нь тохирох төхөөрөмж нь дор хаяж нэлээд том хэмжээтэй байх болно.

Мэдээжийн хэрэг, эдгээр зорилгоор модулиуд хэрэгтэй болно. Гэхдээ тэдгээрийг худалдаж авахад ямар ч асуудал гарах ёсгүй. Интернет дээр Raspberry-ийн нэмэлт бүрэлдэхүүн хэсгүүдийг боломжийн үнээр зардаг олон дэлгүүрүүд байдаг.

Хэд хэдэн RPi 3-ийг кластер болгон нэгтгэж байна

Raspberry Pi 3-ийг ашиглах өөр нэг арга бол хэд хэдэн ийм төхөөрөмжийг кластер болгон нэгтгэх явдал юм. Энэ бол хүн бүрт тохиромжгүй хэрэглээний нэлээд өвөрмөц арга юм.

Эхлээд бид кластер гэж юу болох талаар товч бөгөөд тодорхой тайлбар өгөх хэрэгтэй. Ерөнхийдөө энэ нэр томъёо нь нэгэн төрлийн тоног төхөөрөмжийн цогцолборыг (энэ тохиолдолд RPi багц) зарим ажлыг зэрэгцээ гүйцэтгэдэг.

Илүү хямд, илүү тохиромжтой шийдлүүд байдаг тул ноцтой зүйлийг хэрэгжүүлэхийн тулд Raspberry-ээс кластер хийх нь практик утгагүй юм. Raspberry Pi 3-ийг кластер болгон нэгтгэхийг голчлон сургалтанд ашиглахыг зөвлөж байна. Хэд хэдэн нэг самбартай төхөөрөмжтэй бол та параллель тооцооллын онцлогийг ойлгох эсвэл хүүхдэд хэрхэн ажилладагийг харуулах боломжтой (үнэндээ RPi нь хүүхдүүдэд заах зорилгоор бүтээгдсэн).

Таны харж байгаагаар RPi 3-ын тусламжтайгаар та маш олон сонирхолтой зүйлийг хийж болно. Энэ нь юуны түрүүнд компьютерийн талаар сурахад хэрэгтэй. Гэхдээ энэ нь танд ажил, амралт чөлөөт цагаа өнгөрөөхөд ашиглаж болох маш олон тооны төслийг хэрэгжүүлэх боломжийг олгодог.

BitScope Cluster модуль нь нэгдсэн сүлжээний унтраалга бүхий 150 Raspberry Pi миникомпьютер агуулдаг. Зураг: BitScope

Программистууд болон эрдэмтэд өөрсдийн хөтөлбөрөө туршихын тулд жинхэнэ, өндөр хүчин чадалтай суперкомпьютерт тэр бүр хялбархан нэвтэрч чаддаггүй. Түүгээр ч барахгүй суперкомпьютерууд ихэвчлэн бусад программ хангамжтай 24 цагийн турш завгүй байдаг. Цонхыг олоход хэцүү байдаг. Урьдчилан өргөдөл бичээд дараалалд орох хэрэгтэй. Шинэ программ нь жинхэнэ олон процессорын орчинд хэрхэн ажиллах вэ, даалгавар хэр зэрэг нийцэж байгаа вэ?

Лос-Аламос үндэсний лабораторийн өндөр гүйцэтгэлтэй тооцооллын хэлтсийн захиалгаар хөгжүүлэгчдэд туслах зорилгоор Австралийн BitScope компани нь кластерт нэгтгэж, кластерт нэгтгэх боломжтой 150 Raspberry Pi мини компьютер бүхий BitScope Cluster "туршилтын" тооцоолох модулиудыг боловсруулжээ. тэд.

Лос Аламосын үндэсний лаборатори нь дэлхийн хамгийн хүчирхэг арван супер компьютерийн нэг болох Trinity-ийг ажиллуулдаг.



Лос Аламосын үндэсний лабораторийн Trinity супер компьютер

Лабораторийн удирдлага нь хөгжүүлэгчдэд суперкомпьютерт нэвтрэхгүйгээр өндөр хүчин чадалтай зэрэгцээ тооцоолол хийх боломжийг олгох арга замыг эрэлхийлсэн бөгөөд ингэснээр тэд програмаа туршиж үзэх боломжтой болсон.

"Raspberry Pi модулиуд нь дөрөвний нэг тэрбум долларын өртөгтэй, 25 мегаватт цахилгаан зарцуулдаг ижил хэмжээтэй туршилтын вандан шаардлагагүйгээр ийм программ хангамжийг хэрхэн бичих, найдвартай ажиллуулах боломжийг хөгжүүлэгчдэд олгодог" гэж Гэри Глайдер хэлэв. Лос Анжелес Аламоса үндэсний лаборатори.

Үнэн хэрэгтээ таны програмыг туршихын тулд 25 мегаватт цахилгаан эрчим хүч хэт их байна (компьютерийн системийн эрчим хүчний зарцуулалтаас хэд дахин их хөргөлтийн эрчим хүчний зардлыг энд тооцдоггүй).



Ариун цэврийн бохир усны нөхөн сэргээлтийн системийг үр дүнтэй ашигладаг Trinity супер компьютерт ус хөргөх системийг суурилуулах

Модуль бүр нь 144 идэвхтэй зангилаа, зургаан нөөц зангилаа, нэг хяналтын зангилаатай. Модуль нь өгөгдлийн төвийн серверийн тавиур дээр суурилуулсан үед 6U форматтай. Албан ёсны вэбсайтад мэдээлснээр, 42U тавиурыг эзэлдэг 1000 зангилаа нь нэг зангилаа нь ойролцоогоор 120-150 доллар болно. Энэ нь Raspberry Pi-ийн стандарт үнэ 35 доллартай харьцуулахад нэлээд том үнийн дүн юм.

BitScope Cluster модуль бүр нь "Cluster Packs" нэртэй барилгын блокуудаас бүрдэнэ. Нэг нэгжийг тавиур дээр суурилуулах нь яг эдгээр "багц" хэлбэрээр явагддаг.



Кластер багц

Нэг зангилаа (Raspberry Pi 3 миникомпьютер) 1.2 МГц давтамжтай 64 бит дөрвөлсөн цөмт ARMv8 процессортой. Тиймээс, хэрэв бид жишээлбэл, таван модулийн кластер гэж төсөөлвөл 720 идэвхтэй зангилаа, өөрөөр хэлбэл 2880 идэвхтэй процессорын цөм байх болно. Хөтөлбөрийг хэр зэрэг зэрэгцүүлж байгааг шалгахад хангалттай.



Кластер багц дахь мини компьютеруудын нэг эгнээ ойроос ийм харагдаж байна.

Хэдийгээр ийм шийдэл нь суперкомпьютерээс хамаагүй хямд боловч үүнийг төсөв гэж нэрлэж болохгүй. Зөвхөн томоохон судалгааны байгууллага л туршилтын хөтөлбөрт зориулж 100 мянган доллар эсвэл 150 мянган доллараар мини кластер худалдаж авах боломжтой. Үнэндээ ийм модулиуд нь эдгээр баян хүмүүст зориулагдсан байх судалгааны байгууллагууд- суперкомпьютер эзэмшигчид. Гэсэн хэдий ч мини супер компьютерийг бүтээгчид үүнийг "дэлхийн хамгийн хэмнэлттэй, өргөтгөх боломжтой шийдэл: барих, ажиллуулах, дэмжихэд хямд шийдэл" гэж хэлж байна.

BitScope Cluster модулиуд нь эрчим хүчний хэрэглээг ихээхэн хэмнэдэг. Та зангилаа бүрт 5 Вт тооцож тус бүрийн эрчим хүчний хэрэглээг өөрөө тооцоолж болно. Хэрэв нөөц зангилаанууд нь хамгийн бага эрчим хүчний хэрэглээтэй гэж үзвэл модулиуд нь 144 идэвхтэй зангилаа, нэг хяналтын зангилаатай хэвээр байна. Нийт 145×5=725 Вт.

BitScope нь эдгээр модулиудыг 2018 оны эхээр үнэгүй худалдаанд гаргахаар төлөвлөж байна.

Компанийн мэдээлснээр, ийм кластерууд нь програм хангамж хөгжүүлэхээс гадна өндөр хүчин чадалтай сүлжээ, интернетийн судалгаанд мэдрэгч сүлжээний симулятор болгон ашиглах боломжтой юм.

4 зангилаатай Raspberry Pi кластер. Дээд талын самбар нь анхны загвар B, харин доорх гурав нь цоо шинэ Raspberry Pi 2 самбар юм.

Шинэчлэгдсэн:Энэхүү төсөл нь 2015 оны 8-р сарын 26-нд хэвлэгдсэн бөгөөд дараа нь 2015 оны 9-р сарын 5-нд толгой зангилаанд хоёр дахь Ethernet адаптерийг хэрхэн нэмж, кластерын бусад зангилаанд DHCP сервер болгон ажиллуулах тухай нэмэлт зааварчилгаагаар шинэчлэгдсэн. .

Амралтын өдрүүдэд би суугаад 4 зангилаанаас бүрдсэн Raspberry Pi жижиг кластер барьсан. Би тооцоолох зангилаанд гурван самбар, толгойн зангилаанд ашигласан. Би энэ кластерыг аль болох авсаархан, нэг нь цахилгаан, нөгөө нь сүлжээнд холбогдсон хоёр кабельтай байхыг хүссэн. Би самбарыг тэжээхийн тулд USB зангилаа, жижиг Ethernet шилжүүлэгчийг ашигласан бөгөөд үүнийг хакердаж, тусдаа хананаас биш USB төвөөс тэжээж болно.

Энэ нь Raspberry Pi хавтангаас бүтээгдсэн хамгийн том кластер биш, миний мэдэж байгаагаар Resin.io-ийн хүмүүсийн бүтээсэн 120 Pi кластер нь хамгийн том нь хэвээр байгаа хэдий ч үнэндээ 5 бие даасан 24 зангилаатай кластерууд байж магадгүй. гарчиг.

Гэсэн хэдий ч, ердөө 4 зангилаатай ч гэсэн миний халаасны кластер миний хүссэн зүйлд хангалттай том бөгөөд энэ нь миний хийж буй зарим тархсан тооцоолох ажлын туршилтын талбар юм. Миний ширээн дээр сууж буй жижиг кластер нь төсөл дээр ажиллахад ашиглаж байгаа илүү өргөн цар хүрээтэй, үнэтэй кластерт ажлын байр суулгахын өмнө кодыг туршиж үзэх боломжийг надад олгодог.

4 самбар бүхий "нохойн яс" хашлага

Эцэст нь би Амазон дээрээс авсан дөрвөн самбарт овоолсон "нохойн яс" хайрцаг байсан ч хэрэв та бага зэрэг хүлээхийг хүсвэл AliExpress дээр үүнтэй төстэй олон тохиолдлуудыг хямд үнээр авах боломжтой. Энэ нь нэг шөнийн дотор тээвэрлэгдсэн бөгөөд маргааш нь би үүнийг авсан; Энэ бол миний тавиур дээр байгаа бүх зүйл байсан тул кластер барихын тулд худалдаж авсан цорын ганц зүйл юм.

5 порттой USB Hub

Миний ашигласан USB төв бол намайг угсралтын ажлыг хийхэд урам зориг өгсөн зүйл юм: Энэ бол Anker-ийн 5 порттой төв бөгөөд Raspberry Pi-тэй ижил хэмжээтэй байдаг. Таван порттой бол миний дөрвөн Raspberry Pi хавтан тус бүрд нэг порт байгаа бөгөөд кластерт зориулсан Ethernet шилжүүлэгчийг тэжээх эцсийн порт үлдсэн.

5V тэжээлийн хангамж ба нөөц USB кабель

Эхний алхам бол 5V тэжээлийн кабелийн төгсгөлийг сайтар таслах бөгөөд хоёр утаснаас аль нь цахилгаан тоосгонд залгагдсан хоёр утастай тохирч байгааг тэмдэглэнэ үү. Утасны үзүүрийг тайлж аваад хананд тоосго залгаад хоёр утасны аль нь +5V, аль нь GND болохыг вольтметрээр хэмжиж болно.

5V тэжээлийн кабель (дээд) ба USB кабелийн төгсгөл (доод)

Дараа нь USB кабелийн төгсгөлийг хайчилж аваад, кабелийн доторх утаснууд нь жижиг бөгөөд нарийн байдаг тул утсыг нээхийн тулд тагийг нь буцааж хуулж ав. Та улаан, хар утсыг хайж байна, бусад нь өгөгдөл зөөвөрлөнө. Та тэдгээрийг зүгээр л тайрч болно, танд хэрэггүй болно.

USB кабелийн дотоод утас

Кабелийн хоёр үзүүрийг +5V-ээс +5V-д, GND-г GND-д холбон гагнаж, утас тус бүрийг, мөн холболтыг өөрөө бага зэрэг хумигдсан боолтоор бүрхэж, надад цахилгаан өгөх шаардлагатай Франкенштейн кабелийг өгдөг. миний USB төвийн хамгийн сүүлийн боломжтой портоос Ethernet шилжүүлэгч.

Франкенштейн кабель

Боломжтой хамгийн богино USB болон Ethernet кабелийг олохын тулд сэлбэг кабелиасаа хайсны дараа энэ үед кластерыг хооронд нь наалдуулах нь кабелийн зангилаа болон velcro дээр буув.

Бэлэн болсон Raspberry Pi кластер

% sudo apt-get суулгах автоматжуулалт

дараа нь /etc/auto.master файл нэмж засварлана

/mnt/nfs /etc/auto.nfs

төгсгөлд нь. Дараа нь /etc/auto.nfs файлыг үүсгээд,

Rpi0 rpi0:/mnt/usb

болон autofs үйлчилгээг дахин эхлүүлэх,

% sudo /etc/init.d/autofs дахин эхлүүлэх.

Хэрэв энэ үед бүх зүйл сайн байвал, хэрэв та /mnt/nfs/rpi0/ директор руу шилжвэл толгой зангилаанд залгагдсан диск өөрөө автоматаар холбогдоно. Та шалгаж болно

% df -h Файлын системийн 1К блок Ашигласан Ашиглах боломжтой%rootfs14984668 25132281181235618% //dev/root 14984668 25132281181235618% /devtmpfs470416 0470416 0% /dev tmpfs94944 232 94712 1% /ажиллуулах tmpfs 5120 05120 0% /ажиллах/түгжих tmpfs 189880 0189880 0% /run/shm/dev/mmcblk0p1 57288 19448 3784034% /ачаалахrpi0:/mnt/usb 604670086460466944 1% /mnt/nfs/rpi0

автоматаар суурилуулсан эсэхийг харах.

Анивчих гэрэл

USB флаш дискний хажууд (надад нэг нь хэвтэж байсан тул) би Blinkstick суулгасан. Нэг програм хангамжаар удирддаг RGB LED нь уг зөөгч нь серверийн төлөвийг гэрэлтүүлэхэд маш тохиромжтой. Анивчих гэрлийг үл тоомсорлоход хэцүү байдаг. Толгойн зангилааны сүүлчийн USB порт руу зөөгчийг оруулсны дараа та дараах байдлаар програм хангамжийг тохируулж болно.

% sudo apt-get install -y python-pip python2.7-dev % sudo pip суулгах blinkstick % sudo blinkstick --add-udev-rule

Тэндээс тушаалын мөрөөс RGB LED-ийг удирдахад үнэхээр хялбар байдаг.

Эсвэл статусыг зааж өгөхийн тулд Blinkstick-ийг программчлан ашиглахыг хүсвэл API болон өөрийн сонгосон програмчлалын хэлийг ашиглаж болно.

Дараагийн алхмууд

Би маш их аялдаг. Энэ нь би ажлын байрнаасаа хол их цаг зарцуулдаг гэсэн үг. Би кластераа орхиж, хол байх хугацаандаа ssh хийж чадах ч шоунд явах замдаа би үүнийг авч явахыг үнэхээр хүсч байна. Тиймээс, цаашдаа би кластерыг сонгож, дурын сүлжээнд хаяхыг үнэхээр хүсч байна.

Энэ нь би сүлжээгээ бага зэрэг дахин тохируулах хэрэгтэй болно гэсэн үг юм.

Ethernet шилжүүлэгчийг гадаад сүлжээнд шууд холбож, гэрийн чиглүүлэгчдээ зангилаа тус бүрт IP хаяг хуваарилахын оронд дараагийн алхам болгон би толгой зангилаа руу USB Ethernet адаптер нэмэх болно. Энэ нь толгой зангилаа хоёр Ethernet холболтыг өгөх болно.

Эхнийх нь гадаад сүлжээнд холбогдож толгой зангилаа, улмаар кластерт "гадаад" IP хаяг өгнө. Хоёр дахь нь кластерын Ethernet шилжүүлэгчтэй холбогдоно. Дараа нь бид толгойн зангилааг шилжүүлэгчтэй холбогдсон бусад гурван "дотоод" зангилааны DHCP сервер болгон тохируулж, зөвхөн кластерт харагдах хоёр дахь сүлжээг үүсгэж болно.

Энэ тохиргоонд би толгой зангилаа руу ssh хийх боломжтой хэвээр байх болно, гэхдээ би толгой зангилаанаас зөвхөн гурван тооцооллын зангилаа хүрэх боломжтой болно. Гэсэн хэдий ч асуудал байна: Би толгой зангилааны гадаад IP хаягийг яаж мэдэх вэ?

LCD нэмж байна

Blinkstick нь энгийн мессеж бичихэд тохиромжтой. Та RGB LED-ийн тусламжтайгаар юу болж байгааг мэдэхийн тулд маш их зүйлийг хийж чадна. Гэхдээ толгойн зангилаанд энгийн LCD дэлгэц нэмэх нь үнэхээр амархан.

Самбарыг холбосны дараа та I2C хэрэгслүүд болон холбогдох Python сангуудыг суулгах хэрэгтэй болно

% sudo apt-get суулгах python-smbus % sudo apt-get суулгах i2c-хэрэгслүүд

/boot/config файлын доод талд дараахыг нэмж толгой зангилаа дээр I2C-г идэвхжүүлэхийн тулд,

төхөөрөмжийн_мод = dtparam = spi = дээр dtparam = i2c1 = асаалттай dtoverlay=w1-gpio-pullup,gpiopin=3,pullup=3dtoverlay=w1-gpio-pullup,gpiopin=5,pullup=5

Дараах модулиудыг /etc/modules файлд нэмж,

I2c_dev i2c_bcm2708

Толгойн зангилааг дахин ачаалсны дараа та 27 I2C ID бүхий самбарыг харах боломжтой болно.

% sudo i2cdetect -y 1 0123456789abcdef 00:-- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --

Та eth0 нь бидний өгсөн статик дотоод IP хаягтай бол eth1 нь манай гэрийн чиглүүлэгчээс олгосон шинэ IP хаягтай болохыг харж болно. Хэрэв бүх зүйл төлөвлөгөөний дагуу болвол та шинэ гадаад IP хаягийг ашиглан толгойн зангилаа руу ssh оруулах боломжтой бөгөөд үүнтэй төстэй зүйлийг харах боломжтой.

%ifconfig eth0Link хавтас: EthernetHWaddr b8:27:eb:22:60:fbinet хаяг:192.168.50.1Bcast:192.168.50.255Маск:255.255.255.0RX пакетууд: 2470 алдаа: 0 буурсан: 0 хэтэрсэн: 0 хүрээ: 0TX пакетууд: 2267 алдаа: 0 буурсан: 0 хэтэрсэн: 0 оператор: 0мөргөлдөөн:0 txqueuelen:1000 RX байт: 215730 (210.6 КБ) TX байт: 237032 (231.4 КБ)eth1Link бүрхүүл: EthernetHWaddr ac:29:3a:da:74:37inet хаяг:192.168.1.194Bcast:192.168.1.255Маск:255.255.255.0ДЭЭШ НЭВТРҮҮЛЭГЧ АЖИЛЛАЖ БАЙНА MULTICASTMTU:1500Metric:1RX пакетууд: 15245 алдаа: 0 буурсан: 1 хэтэрсэн: 0 хүрээ: 0TX пакетууд: 0 алдаа: 0 уналт: 0 хэтэрсэн: 0 тээвэрлэгч: 0мөргөлдөөн:0 txqueuelen:1000 RX байт: 1787746 (1.7 МиБ) TX байт: 283761 (277.1 КБ) loLink encap: Local Loopback inet хаяг:127.0.0.1Маск:255.0.0.0ДЭЭШ БУЦАХ гүйлт MTU:65536Метрик:1RX пакетууд: 4 алдаа: 0 буурсан: 0 хэтэрсэн: 0 хүрээ: 0TX пакетууд: 4 алдаа: 0 уналт: 0 хэтэрсэн: 0 тээвэрлэгч: 0мөргөлдөөн:0 txqueuelen:0 RX байт: 260 (260.0 B) TX байт: 260 (260.0 B)

% route -n Цөмийн IP чиглүүлэлтийн хүснэгт Очих газрын гарц Genmask туг Метрийн RefUse Iface0.0.0.0 192.168.1.254 0.0.0.0 UG000 eth1192.168.1.0 0.0.0.0 255.255.255.0 U 000 eth1192.168.50.00.0.0.0 255.255.255.0 U 000 eth0

Хэрэв бүх зүйл төлөвлөсний дагуу болохгүй бөгөөд та сүлжээгээр толгойн зангилаанд хүрч чадахгүй гацсан бол та HDMI дэлгэц болон USB гарыг ухаж аваад толгойн зангилаа руу шууд холбох хэрэгтэй болж магадгүй - та түр зуур татаж болно. Өөртөө өгөх USB диск болон гарны үнэгүй USB порт - ингэснээр та сүлжээний аливаа асуудлыг оношлох, засах боломжтой.

Гэсэн хэдий ч та гадаад сүлжээнээс толгой зангилаанд хүрч чадна гэж найдаж байна. Та 192.168.1.* сүлжээн дэх гадаад хостууд болон 192.168.50.* сүлжээн дэх дотоод хостуудад хоёуланд нь пинг хийх боломжтой байх ёстой.

Гэсэн хэдий ч, ядаж яг одоо, хэрэв бид тооцоолох цэгүүдийн аль нэгэнд нь оруулбал тэд толгой зангилаа, бие биенээ харж байхад тэд гадаад ертөнцийг хараахан харж чадахгүй. Боломжтой болохоос өмнө бид пакетуудыг дотоод сүлжээнээс гадаад сүлжээ рүү дамжуулах шаардлагатай болно.

Толгойн зангилаа дээр урагшаа,

% sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Дараа нь /etc/sysctl.conf файлыг засварлаж, дараах мөрийн тайлбарыг арилгана.

Net.ipv4.ip_forward=1

Дамжуулах ажиллагааг идэвхжүүлсний дараа бид iptables-ийг тохируулах шаардлагатай болно.

% sudo iptables - t nat - A POSTROUTING - o eth1 - j MASQUERADE % sudo iptables - A FORWARD - i eth1 - o eth0 - m төлөв -- төлөв ХОЛБООТОЙ , БАЙГУУЛСАН - j ACCEPT % sudo iptables - A FORWARD - o eth0 - eth1 - j ХҮЛЭЭН АВАХ % sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

дараа нь /etc/network/interfaces файлын доод талд ачаалах үед хүснэгтүүдийг ачаалах мөрийг нэмж,

iptables-сэргээнэ< /etc/iptables.ipv4.nat

Энэ үед толгойн зангилааг дахин ачаалснаар та толгой зангилаанаас аль нэг тооцооллын зангилаа руу ssh-г оруулж, гадаад ертөнц рүү ping хийх боломжтой болно.

%ssh rpi1 Linux rpi2 3.18.11-v7+ #781 SMP PREEMPT 4-р сарын 21-ний Мягмар 18:07:59 BST 2015 armv7lDebian GNU/Linux системд багтсан программууд нь үнэгүй програм хангамж юм;Хөтөлбөр бүрийн яг түгээлтийн нөхцөлийг хэсэгт тайлбарласан болно/usr/share/doc/*/зохиогчийн эрх доторх бие даасан файлууд.Debian GNU/Linux нь тодорхой хэмжээгээр БАТАЛГААТ өгөгддөггүй.холбогдох хуулиар зөвшөөрсөн. Сүүлийн нэвтрэлт: 2015 оны 9-р сарын 5-ны 20:49:07 rpi0-с% ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) байт өгөгдөл.8.8.8.8-аас 64 байт: icmp_req=1 ttl=54 цаг=23,8 мс8.8.8.8-аас 64 байт: icmp_req=2 ttl=54 цаг=21,4 мс8.8.8.8-аас 64 байт: icmp_req=3 ttl=54 цаг=23,2 мс^C --- 8.8.8.8 пинг статистик ---Дамжуулсан 3 пакет, хүлээн авсан 3, пакетын алдагдал 0%, хугацаа 2003msrtt min/avg/max/mdev = 21.470/22.838/23.829/1.014 мс%

Ингээд л болоо. Манайд ажлын кластер бий.

Хаалтын шатанд

Энэ үед бид хоёр кабельтай кластертай байна, нэг нь цахилгаан, нөгөө нь сүлжээнд. Та ямар ч сүлжээнд холбогдож болох бөгөөд толгой зангилаа нь өөрийн гадаад IP хаягийг LCD самбар дээр мэдээлэх бөгөөд энэ нь танд ssh-д нэвтрэх боломжийг олгох ба тэндээс та кластерын аль ч цэг рүү нууц үг шаардлагагүйгээр ssh хийх боломжтой. . Бүх зангилаа нь дискийг хуваалцдаг.

Өөрөөр хэлбэл, энэ үед бараг бүгд ажиллаж байна. Үнэндээ би үүнийг одоо ширээний Hadoop кластер болгон ашиглаж байна.

Эндээс бидний хийж чадах хэд хэдэн зүйл байгаа бөгөөд дараагийн хамгийн тодорхой алхам бол хийх явдал юм кластерын эрүүл мэндийг хянахын тулд толгой зангилаа дээр SNMP мониторинг болон гадна талын "статус" хяналтын самбарыг нэмнэ үү.. Гэсэн хэдий ч урт хугацаанд шилжүүлэгч дээрх үнэгүй Ethernet порт нь бид хэт их хүчин чармайлтгүйгээр өөр дөрвөн тооцооллын зангилаа нэмж кластерыг хялбархан өргөжүүлж чадна гэсэн үг юм.

Сонирхогчид янз бүрийн зорилгоор ашигладаг. Жишээлбэл, сонирхогч Дэвид Гилл үүнийг кластер байгуулахад ашиглахаар шийдсэн - өөр хоорондоо холбогдсон компьютеруудын бүлэг бөгөөд хэрэглэгчийн үүднээс нэг техник хангамжийн нөөцийг төлөөлдөг. Төслийг 40 зангилаа Raspi кластер гэж нэрлэхээр шийдсэн. Дэвид хуваарилагдсан систем дээр програмчлалын туршлага олж авахын тулд кластер хэрэгтэй байсан тул Raspberry Pi кластер нь түүний сургалтын үеэр жинхэнэ супер компьютерийг солих болно гэдгийг тэмдэглэх нь зүйтэй.

Энгийнээр хэлэхэд, хайрцагны оронд тавиур эсвэл хямд шүүгээ ашиглан Raspberry Pi-ээс кластер угсрах боломжтой байсан ч Дэвид мод хийх сонирхолтой байсан тул загварлаг кластер хийхээр шийджээ. , гадаад төрх байдал, тав тухтай байдлын хувьд цуваа шийдэлд аль болох ойртоно. Дэвид амжилттай болсон гэж би хэлэх ёстой, учир нь түүний төсөл олон цуврал хэргүүдээс хамаагүй илүү сайн бодож боловсруулсан болно. Дашрамд дурдахад, 40 зангилаатай Raspi Cluster төслийн их биеийг нийлэг хавтангаар хийж, лазераар зүсэж, гараар наасан байна.

40 зангилаатай Raspi Cluster төслийн гол онцлог шинж чанарууд нь: дажгүй төрх, нэлээн авсаархан хэмжээтэй (том цамхаг шиг), бүх эд ангиудад хялбар нэвтрэх, гэрийг задлах шаардлагагүйгээр солих чадвар, үндсэн хэсгүүдийн шураггүй бэхэлгээ байв. болон олон бүрэлдэхүүн хэсгүүд, түүнчлэн утаснуудын захиалга (мөн энэ төсөлд тэдгээрийн цөөн хэдэн хэсэг байдаг). Энэхүү төсөлд 40 компакт Raspberry Pi компьютер (700 МГц давтамжтай 40 Broadcom BCM2835 цөм, 20 ГБ тархсан RAM), хоёр 24 порттой унтраалга, нэг ATX тэжээлийн хангамж, таван 1 TB хатуу диск (12 хүртэл өргөтгөх боломжтой) багтсан. ), 440 ГБ флаш санах ой, мөн утасгүй холболттой чиглүүлэгч.


Энэ төслийн Raspberry Pi компьютерууд нь захиалгат нийлэг бэхэлгээн дээр дөрвөн бүлэгт хуваагдсан бөгөөд үүнээс энэ төсөлд арав байна. Энэхүү бэхэлгээний ачаар (хөт серверүүд шиг) авсаархан компьютеруудыг хялбархан сольж, хялбархан нэвтрэх боломжийг олгодог. Raspberry Pi ир бүр өөрийн гэсэн авсаархан DC-DC хөрвүүлэгчтэй бөгөөд нийтлэг ATX тэжээлийн эх үүсвэрээр тэжээгддэг. Кластерийг хөргөх ажлыг дөрвөн 140 мм-ийн сэнс ашиглан гүйцэтгэдэг бөгөөд үүний ард шүүлтүүр суурилуулсан байна.

Олон тооны LED нь 40 зангилаатай Raspi Cluster төсөлд нэмэлт "модерч" нэмдэг - эдгээрийн гурван зуу гаруй нь төсөлд (мини компьютер, унтраалга, чиглүүлэгч, сэнс дээр) байдаг бөгөөд ашиглалтын явцад тэдгээр нь анивчдаг. ачаалалтай. Энэхүү төслийн хэмжээ нь 25 х 39 х 55 см, барилгын ажлын ойролцоо өртөг нь 3000 доллар юм.

Та хавсаргасан зураг, видео бичлэгээс 40 зангилаатай Raspi Cluster төслийн гадаад болон дотоод дүр төрх, онцлог шинж чанаруудыг харж болно. Хэрэв энэ төсөл танд сонирхолтой байгаа бол та үүнтэй илүү дэлгэрэнгүй танилцаж болно, Дэвид энэ мангасын барилгын талаар дэлгэрэнгүй тайлбарласан бол та түүний хувийн вэбсайт дээрх холбогдох тэмдэглэлд зочилж болно.