České vysoké učení technické v Praze Fakulta strojní Ústav přístrojové a řídící techniky u12110
Možnosti Raspberry Pi jako serveru Semestrální práce předmětu Projekt II (2373712)
Vypracoval: Petr Maršík (4/1) 6. dubna 2015
Kapitola 1
Úvod Na následujících stránkách bych se rád zabýval použitím Raspberry Pi jako serveru. Raspberry Pi je jednodeskový počítač o velikosti přibližně platební karty, který je vyvíjen britskou nadací Raspberry Pi Foundation [1] jako výukovou pomůcku k programování. Je osazen procesorem ARM, grafickým procesorem a pamětí, a periferními čipy ovládající čtečku SD karet, HDMI výstup, několik USB 2.0, mikro-USB pro napájení, zvukové výstupy, 12 vstupně-výstupních pinů (GPIO) a ethernetový adaptér. Jako příslušenství lze dokoupit například i pasivní hliníkové chladiče, kryt, nebo rozšiřující moduly (UniPi Board [2], Gertboard [3]) a jiné různé periferie (web-kamera atd.). Díky relativní jednoduchosti a uživatelské přívětivosti, neméně díky relativně nízké ceně, se kolem tohoto projektu rozvinula široká komunita vývojářů, kteří vymýšlejí nová uplatnění Raspberry Pi, s podporou nadace. Raspberry Pi vzniklo dosavadně v modelech A, B a jejich vylepšeních A+, B+, vznikly projekty řešící nedostatek výkonu, jako např. Banana Pi [4], s dvou-jádrovým procesorem. Operačními systémy používanými s Raspberry Pi jsou linuxové distribuce od různých vývojářů, jako například Debian a jeho klon pro Raspberry Pi jménem Rasbian, nebo také Arch Linux. Programovací jazyky zahrnují Python, Wolfram (s použitým programem Mathematica). Raspberry Pi se po konfiguraci používá jako server. Mnoho vývojářů a kutilů využívá Rasperry Pi jako webový server na běh různých blogů nebo osobních webových prezentací. Dalším možným použitím Raspberry Pi je k běhu souborového serveru nebo jako HTPC (Home Theater Personal Computer). Poslední řešení je používáno jako multimediální centrum k televizi, pro spouštění filmů a videí, streamování z Youtube, využitím softwaru XBMC nebo jeho optimalizovaných klonů přímo na Raspberry Pi. Dále se můžeme setkat s několika Raspberry Pi uspořádanými do clusteru, s využitím opět jako weboví server, ale primární jako výuková pomůcka předmětu distribuovaných systémů [5]. Následující text není detailním popisem a má být chápán jako rešerše na toto téma.
1
Kapitola 2
Raspberry Pi jako server 2.1 2.1.1
Klady a zápory Klady
1. Spotřeba energie - Raspberry Pi Foundation se podařilo upravit spotřebu energie modelu B+ zhruba na 64% spotřeby původního modelu B [6]. To znamená, že při průměrném příkonu s příslušenstvím (tedy přibližně P = 1.41 W ) je roční spotřeba při nepřetržitém režimu (s využitím jako serveru 12.35 kW h a při průměrné cenně ˇ ˇ Tato cena mi přijde navýše 4.8 K c/kW h je výsledná cena provozu za rok asi 60 K c. přijatelná za poskytnutý výkon. 2. Absence pohyblivých částí - Raspberry Pi využívá k bootování a ukládání ve standardním návrhu paměťovou SD kartu, které jsou velmi spolehlivé. Doporučuje se tzv. Class 10 SD karta [7]. Problém nastává, když se karta používá nadměrně, např. pri využití Raspberry Pi jako serveru. Pak je opotřebení vysoké, a životnost karty je v řádu desítek dnů. Proto se paměťová karta používá pouze pro bootování a systém/data se ukládají na samostatný disk (HDD, SSD). 3. Rozměry - Malé rozměry jsou výhodou pro zamontování do různých malých krabic i s příslušenstvím, které jsou pořád menší, než běžně dostupné servery velikosti domácího PC. 4. Bezhlučnost - Raspberry Pi se nedodává s ventilátory, pro lepší výsledek pasivního chlazení je možno dokoupit hliníkové chladiče, které se přilepí na desku. 5. Možnost rozšíření - Pro další příslušenství je tu množství GPIO, USB porty, které lze rozšířit použitím USB-hubu a další. 6. Vestavěná grafická karta s HDMI - Raspberry Pi dovede zobrazit rozlišení do 1920x1200 a lze použít převodníky HDMI → VGA. 7. Možnost přetaktování - Editací config.txt a bez ztráty záruky na zařízení [8].
2.1.2
Zápory
1. Architektura ARM - Nemožnost spouštět programy kompilované na platformě x86. 2. Nerozšiřitelná RAM - Přestože linuxové distribuce nealokují tolik paměti jako ty windowsovské, v několika případech 512MB RAM nemusí být dostačující. Dalších nedostatků se lze dočíst ve zdroji [9]. 2
2.2
Web-server
Snadno dostupných návodů na zprovoznění webového serveru je hned několik. Na internetu lze tedy najít návody, ale ty se liší v přístupech instalace. Jeden se snaží co nejvíce eliminovat pozdější používání unixového shellu (bash), naopak druhý bash používá. Lze použít velké množství doplňků, které budou zjednodušovat práci s web-serverem, a o několika se zmíním. Oba přístupy vedou k podobnému výsledku . První postup je jednodušší, a vede na stavbu web-serveru, který bude hostovat osobní blog [10]. Druhý popisovaný přístup, který jsem našel [11], je cílený na stavbu vlastního cloudového úložiště, menšího NAS serveru. Budu zde popisovat postup v případě, že hlavní pracovní počítač pro nastavení a pozdější klient bude počítač s operačním systémem Windows.
2.2.1
Základní nastavení
K prvnímu nastavení potřebujeme Raspberry Pi, SD kartu (podle specifikace v [7]) a počítač s čtečkou SD karet. Operační systém volíme dle účelu, pro který budeme Raspberry Pi používat. Nejuniversálnější je Rasbian (Debian "Wheezy"optimalizovaný pro Raspberry Pi) nebo například Pidora, oba jsou jako obrazy instalací dostupné z [12]. Další možností je použití na Rasbianu založeného operačního systému Ghoulman [13], jehož vývojáři ho optimalizovali pro serverové použití a inspirovali se Turnkey Linux [14]. Podobně se lze zmínit o arkOS [15]. K zapsání obrazu na SD kartu je doporučená aplikace Win32DiskImager, která se rozbalí z archivu a není nutná její instalace, a následně se jednoduše zapíše. Pak máme připravenou SD kartu a můžeme jí vložit do Raspberry Pi. K dalšímu nastavení potřebujeme monitor s HDMI nebo s VGA a redukcí, kabel HDMI, napájecí adaptér pro Raspberry Pi, klávesnici (USB) a ethernetový kabel. Raspberry Pi se spustí samo při zapnutí napájení, takže se soustředíme na několik bodů: 1. Změna hesla uživatele pi - v operačním systému je před vytvořen uživatel pi. Je vhodné změnit heslo vzhledem k tomu, že zařízení budeme umisťovat na síť. Původní heslo k uživateli "pi"je "raspberry". Je vhodné použít silné heslo, trendem je používat frázová hesla s malými a velkými písmeny, číslicemi a speciálními znaky o délce aspoň 14 znaků. Pro ověření času potřebného k prolomení hesla je na internetu dostupných několik nástrojů, například [16]. 2. Nastavení SSH - zapnutí služby SSH je nezbytné pro následující komunikaci s Raspberry Pi. 3. Nastavení bootování - Nastavením boot_behaviour předejdeme spouštění grafického prostředí, které zatěžuje zařízení. 4. Rozložení paměti RAM - Nastavením memory_split ovlivníme, kolik paměti bude využívat procesor (ARM), a kolik grafická karta (VideoCore). Nastavíme v maximální prospěch procesoru (ARM). Tuto nabídku lze kdykoliv později vyvolat pomocí: sudo-raspi config Tuto konfiguraci je možno obejít, pokud nemáme k dispozici monitor nebo klávesnici, tzv. headless přístupem [17]. Tím, že máme SSH nastaveno na straně serveru, stačí se k serveru připojit. Pro naše připojení z Windows se často používá program Putty [18]. Tam stačí nastavit Connection Type jako SSH, a vložit IP adresu Raspberry Pi. Tu zjistíme tak, že Raspberry Pi připojíme k routeru nebo například Access Pointu připojeného k internetu pomocí příkazu: ifconfig
3
2.2.2
Instalace serveru a příslušenství
První způsob K nastavení webového serveru potřebujeme aplikaci, která obstará uchovávání webových stránek a přijímání požadavků na zasílání počítačům v síti. V této konfiguraci budeme používat jako webový server Apache, interpret PHP, a databázový server MySQL. Aplikace se v UNIXových systémech stahují pomocí takzvaných balíčků. V našem případě je to Apache (apache2): sudo aptitude install apache2 K ověření funkce serveru stačí napsat do prohlížeče IP adresu Raspberry Pi, a správně by se měla zobrazit hláška ”It Works!”. K instalaci interpreta PHP potřebujeme dva balíčky. První obsahuje interpreta (php5) a druhý obsahuje propojení interpreta a serveru (libapache2-mod-php5).Takže instalaci provedeme příkazem: sudo aptitude install mysql-server php5-mysql Požadavek redakčního serveru (např. Drupal) bývá většinou ještě databáze. V našem případě využijeme MySQL. Tato instalace se opět skládá ze dvou balíčků, prvním je samotná databáze, druhým je balíček s PHP modulem pro komunikaci s databází: sudo aptitude install mysql-server php5-mysql Následně potřebujeme změnit některá z nastavení webového serveru a dodatečně nainstalovaných obslužných aplikací. První ze změn je nastavení přístupových práv do složky, kde se nachází webová stránka ”It Works!”, a která se nachází v /var/www. Příkazem: sudo nano /etc/apache2/sites-enabled/000-default se dostaneme do textového editoru, ve kterém potřebujeme změnit některé zápisy. V tomto konfiguračním souboru nalezneme odstavec
a v něm řádek s Options Indexes FollowSymLinks MultiViews a změníme na Options -Indexes FollowSymLinks MultiViews, pomlčkou zamezíme prohlížení zdrojového kódu našich stránek, protože zakážeme procházení adresářové struktury souborů na serveru. Další změnou je přesunutí vlastnictví složky /var/www/ od uživatele root na uživatele pi. Chceme ještě ale, aby uživatel pi měl vlastnictví všech souborů a složek obsažených v
, což je změna rekurzivní a to se odráží v příkazu, který obsahuje parametr -R: sudo chown -R pi /var/www K dobrému fungování webového serveru ještě patří funkce FTP serveru, díky následné snadné správě souborového systému. Existuje opět více variant, my nainstalujeme známý vsftpd, tedy Very Secure FTP Daemon. K nainstalování FTP serveru slouží příkaz: sudo aptitude install vsftpd Dále musíme nakonfigurovat FTP server, což je provedeno otevřením konfiguračního souboru: sudo nano /etc/vsftpd.conf ve kterém nastavíme parametr anonymního přihlašování na server anonymous_enable=NO. Provedené změny se projeví až po restartu: sudo service vsftpd restart 4
Problém je, že po zadání přihlašovacích údajů uživatele pi, se uživatel ocitne ve svém domovském adresáři, a my bychom chtěli, aby se ocitl v adresáři /var/www/. Ale zároveň bychom chtěli mít tohoto uživatele pro administraci, takže vytvoříme nového, který bude obsluhovat defaultně FTP server, a to pomocí příkazů: sudo useradd -d /var/www ftp-user sudo passwd ftp-user sudo chown ftp-user /var/www První příkaz vytvoří uživatele ftp-user a přiřadí jeho domovský adresář, druhý nastavuje uživatelovo heslo a třetí příkaz udělá uživatele ftp-user vlastníkem adresáře /var/www/. K přístupu na FTP server použijeme FTP klient (např. TotalCommander, FileZilla) a po zadání ip adresy serveru, přihlašovacího jména a hesla otestujeme funkci nakonfigurovaného serveru. Posledním doporučeným krokem je instalace rozhraní pro správu MySQL databáze. Instalace se provede příkazem: sudo aptitude install phpmyadmin V průběhu instalace nastavíme pro běh phpMyAdmin databázový server Apache2. Následně se nakopírují soubory webového rozhraní phpMyAdmin do složky /var/www/phpmyadmin, které stáhneme příkazem: wget odkaz-na-stazeni.tar.gz /var/www a v posledním kroku rozbalíme soubor do složky /var/www/phpmyadmin: tar -cvzf nazev-souboru.tar.gz Nyní máme na adrese http://ip-adresa-serveru/phpmyadmin prostředí pro správu databáze. Dovršením tohoto kroku jsme úspěšně nakonfigurovali webový server například pro hostování blogu na redakčním systému Drupal, který se také opět instaluje [19]. Druhý způsob Jak jsem již napsal v úvodu bodu 2.2, druhý způsob se zabývá stavbou vlastního cloudového úložiště. Zastane tak funkci NAS-serveru, který si můžete koupit v obchodě s elektronikou nebo on-line služby na internetu jako například Google Cloud. Projekt se liší od prvního také tím, že používá více prvků. Protože potřebujeme fyzické úložiště dat, tak je nejlevnějším řešením externí HDD ve formátu 2,5”. K němu samozřejmě USB kabel a dále také napájení jak HDD, tak i Rasperry Pi. V návodu [11] je ještě uvedena krabička pro Raspberry Pi, ale to je už praktický problém rozmístění a zafixování jednotlivých prvků serveru. V bodu 2.2.1 jsem uvedl postup zapsání obrazu operačního systému na SD kartu. Tento proces u tohoto způsobu opakujeme jen s tou změnou, že použijeme jiný operační systém, mix Raspianu a Turnkey, od Ghoulmann Technology [13]. Na rozdíl od Raspianu se v tomto případě spouští skripty nastavení automaticky, takže budete vyzvání ke změně hesla uživatele root. Dalším krokem podle [11] je přihlášení do prostředí Webmin, který je obsažen v distribuci našeho operačního systému. K přístupu do Webmin potřebujeme IP adresu Raspberry Pi následovanou defaultně nastaveným portem Webmin, což je string 12321. Takže zadaná IP adresa bude vypadat například takto: 192.168.2.12:12321
5
Po zadání takovéto IP adresy do prohlížeče, vyskočí nám pravděpodobně hláška o zabezpečení danou tím, že ještě nemáme nainstalovaný SSL certifikát na serveru. Po potvrzení, že chceme pokračovat dále se nám zobrazí stránka Login to Webmin. Zadáme Username, což je root a heslo, které jsme si nastavili v průběhu instalace Turnkey Linuxu. Po zobrazení webového prostředí doporučuji stisknout tlačítko Update Webmin Now, po němž proběhne aktualizace Webminu. Dále se potřebujeme dostat do dalšího předem nainstalovaného prostředí v Turnkey Linux, což je Shell In a Box. Dostaneme se do něj tak, že do prohlížeče napíšeme IP adresu Raspberry Pi s portem 12320. Takže IP adresa bude např.: 192.168.2.12:12320 Opět dostaneme hlášku o nedostatečném zabezpečení přístupu, pokračujeme. Objeví se obrazovka se server hostname: core, do kterého zadáme jméno uživatele root, a heslo které jsme zvolili při instalaci. Teď už se nám zobrazí řádka ve tvaru username@hostname ∼ ] tedy v našem případě root@core ∼ ]. Teď se dostáváme k připojení síťových jednotek, tedy HDD, které figurují v našem seznamu potřebného hardwaru. Existuje několik možností formátování USB-připojitelných úložišť, nejčastěji však formáty NTFS a FAT32.V případě, že máme disk naformátovaný s NTFS souborovým systémem, je těžší je připojit k linuxovému systému, protože byl vyvinut společností Microsoft k provozování na Windows a dalších systémech. Řešením je instalace balíku ntfs-3g. To provedeme v prostředí nainstalovaného shellu příkazem: apt-get ntfs-3g Pokračování procesu připojování jednotek je v prostředí Webmin. Z horní lišty vybereme rolovací položku System a v ní Disks and Network Filesystems. Dále vybereme typ jednotky (Type - Windows NT Filesystem(ntfs). Dále se určuje jméno a zařazení. V [11] je uveden příklad lokace /media/serverhdd. Následně vybereme disk z rolovacího seznamu, pak také zaškrtneme políčko ”No” pro možnost pouhého čtení z disku (Read Only). Posledním krokem je kliknutí na tlačítko Create, a tím máme připojenou diskovou jednotku. K provozování ownCloud a dalšího programového vybavení serveru pro Turnkey [14] je nutné nainstalování MySQL serveru, stejně jako tomu bylo u prvního způsobu. Ale na rozdíl něho to jde zde v grafickém prostředí Webmin, v záložce v rolovacím menu Unused Modules, kde vybereme MySQL. Dále stačí kliknout na odkaz, který balík stáhne a nainstaluje pomocí známého APT. Protože bychom chtěli sdílet přístup k našemu postupně tvořenému cloudovému úložišti, potřebujeme databázi v MySQL, která to bude obstarávat, budou tam uloženy informace o uživatelích, jejich heslech, práva pro přístup do různých složek a například ještě diskovou kapacitu, která jim bude dostupná. V prostředí Webmin v menu Servers je položka MySQL server. Po jejím otevření máme možnost vytvořit databázi pomocí Create a new database. Nazveme ji pro jednoduchost například owncloud a klikneme na Create na konci stránky. Vytvoření uživatele je opět otázkou pár kliknutí. Po otevření MySQL servers klikneme na User Permissions a dále Create new user. Nastavíme podle potřeby, doporučuje se z položky Permissions vyškrtnou možnost Supeuser. Dalším krokem je instalace PHP instance, jako v prvním způsobu. Příkaz je stejný, jen v prostředí Shell In a Box. Dostáváme se k instalaci ownCloud. Ta je opět velmi jednoduchá. Cesta je takováto: System−→ Software Packages −→ Install a New Package −→ Package from APT. A do políčka napíšeme owncloud a stiskneme Search APT. Po proběhnuté instalaci potřebujeme ještě vytvořit složku na HDD pro data a přiřadit jí právo pro vstup ownCloudu, v shellu:
6
cd /media/serverhdd mkdir cloud chmod 750 /media/serverhdd/cloud Nyní po zadání IP adresy Raspberry Pi s úpravou pro ownCloud do adresního řádku prohlížeče, např. 192.168.2.12/owncloud, budeme vyzvání ke konfiguraci, která je už velmi jednoduchá a intuitivní. Další možností je zprovoznit Samba server a mnoho dalšího, což je opět podrobně rozepsáno v [11].
2.3
Vzdálený přístup k serveru pomocí VPN
Už jsem uvedl zřízení web-serveru, ftp-serveru pomocí Raspberry Pi. To další, co může toto zařízení obstarávat je možností, která se dá použít v souvislosti s web-serverem. Představme si situaci, kdy jsme na cestách, a máme k dispozici smartfone s možností připojení k internetu pomocí Wi-fi. Často se stává, že mnozí využívají nezabezpečené hotspoty (WAPs - Wireless Access Points), které jsou dnes ve městech k volnému použití v restauracích, knihovnách a na dalších veřejných lokacích. Problém je v tom, že kdokoliv mající znalosti a důvod sbírat data o uživatelích a samotná data uživatelů WAPs nebude mít příliš stíženou cestu k získání těchto údajů. Nabízí se však několik řešení. Řešení, kdy bychom se vyhýbali připojování k internetu jinde než doma, je značně omezené. Dalším řešením je používat mobilní telefon, ale ten je omezený kapacitou baterie, slabým signálem k připojení k síti, a pokud cestujeme, tak možnosti providerů v cizině co se týče bezpečnosti. Dále je tu pak možnost zakoupit služby VPN (Virtual Private Network) nebo VPS (Virtual Private Server). Existuje hned několik providerů, kteří za poplatek v řádu několika stokorun měsíčně nabídnou řešení, některé služby jsou kompletně zdarma. Také si můžeme pronajmou VPS, a nakonfigurovat na něm VPN server jako např. OpenVPN, který ve zdroji [20] figuruje jako řešení pro instalaci na Raspberry Pi. Toto řešení má stejný problém jako řešení, ke kterému spějeme. Totiž že v případě našeho řešení založeném na Raspberry Pi budeme muset věřit providerům domácího připojení k internetu (ISPs - Internet Service Providers), zatímco v případě pronajmutí VPS serveru budeme muset věřit VPS server providerům, zvláště pokud jejich provozují služby z jiné země, než ve které žijeme. V neposlední řadě máme možnost využívat služeb The Onion Routing (TOR). Ale zdaleka nejlepší alternativní řešení je zašifrovat všechny data v době připojení k veřejnému WAP a následně pouštět veškerou komunikaci na naši SOHO (Small Office/Home Office) síť. To má jednak výhodu v tom, že stránky navštívené mobilním klientem budou předpokládat, že se tento klient nachází ”doma”, v místě SOHO sítě. Další výhodou je, že v případě připojení k SOHO síti máme možnost připojení k ftp-serveru, pokud ho máme zřízený. A prostředkem tohoto řešení je OpenVPN, který je podporovaný Raspberry Pi. Jeho drobnou nevýhodou je, že se musí nainstalovat jednak na stranu serveru a klienta. K tomuto tématu jsme čerpal ze zdroje [20], který je volně dostupný a nabízí dokonce i podrobný tutoriál k instalaci, stejně jako tutoriál na stránkách [21], který je ale výtažkem z prvního uvedeného zdroje, avšak jsou tam řešeny individuální problémy uživatelů v diskuzi.
2.4
Použití Raspberry Pi jako node v clusteru
Neustále opakující se výhodou v případě Raspberry Pi je jeho nízká cena. To hraje hlavní roli i zde, kdy nám může pomoct se učit o distribuovaných výpočtech, paralelním programování a stavbě počítačových clusterů. Problémem stavby mnoha Raspberry Pi do clusteru je ten, že bychom jich (modelu B+) potřebovali alespoň 20, aby jsme se vyrovnali 7
výpočetnímu výkonu dnešních PC [22]. Clustery se dnes využívají k složitým matematickým výpočtům, simulacím a podobným účelům, kdy tyto systému často spočívají na tzv. Message Passing Interface. Jako příklad použití s Raspberry Pi postavili na univerzitě v Southamptonu superpočítač [23]. Jiným příkladem může být použití frameworku Apache Hadoop, který distribuuje data přes mnoho nodů clusteru. Konkrétně tento koncept použil inženýr společnosti nVidia, který postavil jiný cluster založený na Raspberry Pi [24]. Složité výpočty ovšem nejsou jediné, na co se dá takový cluster použít, a dostáváme se tak zpět k aplikaci web-serveru. Představme si, že máme hostujeme vytížené webové stránky, takže náš malý server dostává hodně žádostí, máme celkově velký server traffic. Namísto použití jednoho Raspberry Pi jako serveru jich použijeme hned několik, a zapojíme do clusteru. Každé Raspberry Pi je pak tzv. node a node, který přijímá požadavky od prohlížečů uživatelů webových stránek je tzv. load-balancer, který přerozděluje práci dalším nodes a zpět, jako odezva na odsouhlasený požadavek to jde k uživatelům opět přes load-balancer. Auto [22] dodává, že jeho cluster tvoří identické nodes se stejným obsahem, tzn. nainstalovaný Apache a nakopírované webové stránky. Používá ale ještě jedno Raspberry Pi navíc, které má na sobě nakopírovanou vývojovou verzi webových stránek, a díky Wi-Fi připojení k lokální síti má admin možnost spravovat vývojovou verzi stránek z laptopu. Dále je pak toto samostatné Raspberry Pi pomocí ethernetu do clusteru, takže při změně vývojových stránek může přesunout změny do fungujících a to automaticky. V tomto projektu jsou Raspberry Pi zapojena tzv. headless, což znamená, že do toho, který obsahuje vývojové stránky se dá připojit pomocí Remote Desktop Protocol a z tohoto Raspberry Pi do ostatních pomocí SSH. Všechny pak mají statickou IP adresu, což znamená tvar: 192.168.1.XXX Před zapojením clusteru je potřeba nakonfigurovat všechny nodes. Nainstalovat operační systém, tady autor použil opět Rasbian a nastavení v raspi-config vypadá takto: • Položka expand filesystem • Nastavit hostname • Nastavit password • Nastavit memory split tak, aby GPU měla 16 MB • Přetaktovat procesor na 800 MHz • Povolit SSH Na každou SD kartu je pak nainstalován Apache, a knihovny potřebné k chodu CMS (Content Management System - napříkad Drupal), libxml2 a python-libxml2. Následný příkaz povoluje mód zápisu/změny, což je další požadavek CMS: sudo a2enmod rewrite K vytvoření load-balanceru lze nejspíš využít Raspberry Pi, ale s úpravami, protože nabízí pouze jednu ethernetovou přípojku a také nemusí mít dostatečný výkon. Autor [22] využil starý počítač na platformě x86, přidal jednu ethernetovou síťovou kartu do PCI slotu, a nainstaloval osekanou verzi Ubuntu jménem Lubuntu. Právě protože loadbalancer musí mít aspoň dvě možnosti síťového připojení, padla volba na staré PC. Jedna připojení bude sloužit ke komunikaci routeru a load-balanceru, a druhé ke komunikaci s clusterem. A protože jsou nodes clusteru na jiné podsíti než zbytek sítě, tak první připojení load-balanceru má IP adresu například 192.168.0.3, zatímco druhé připojení musí 8
být na stejné podsíti, jako je cluster, tedy například 192.168.1.1. Dalším krokem je nastavení load-balanceru, což obsahuje pracovat v bashi, a kopírovat XML kódy, které se mi sem nevejdou, takže odkazuji na [22]. Na těchto stránkách najdete i dodatečné návody, například jak přidat další nodes, testování a ladění clusteru.
2.5
Raspberry Pi jako přehrávač
Jedním z vůbec nejčastějších použití Raspberry Pi je pro domácí přehrávání multimédií. Existuje hned několik způsobů, jak toho dosáhnout. Když například nainstalujeme rozhraní XBMC, dostaneme z Raspberry Pi domácí HTPC a můžeme se připojit k periferiím typu NAS, takže máme kde naše multimediální soubory kde ukládat. Na druhou stranu si v [25] stěžují na nedostatek výkonu pro přehrávání a tím způsobené zasekávání videa a podobné nepříjemnosti. To se ale dá vyřešit pomocí optimalizované distribuce rozhraní přehrávače XBMC, které se jmenuje RASPBMC. Nebo můžeme použít Raspberry Pi tak, že pomocí ovládání ze vzdálené plochy přehráváme nebo streamujeme do jiných zařízení multimediální obsah. Tomuto způsobu se rozsáhle věnuje návod [26], doporučující projekt SqueezePlug.
2.6
Praktické využití Raspberry Pi jako malého NASu
Zadání tohoto praktického úkolu znělo tak, že je potřeba vytvořit malý NAS server pomocí dostupného Raspberry Pi, ke kterému bude do USB portu připojena flash paměť takové velikosti, která bude stačit na ukládání dokumentů běžně ve formátu .pdf. Postupoval jsem dle návodu dostupném v [11]. Prvotním krokem bylo naformátovat SDkartu, a zapsat na ní obraz operačního systému Linux-Turnkey-Raspbian [13], pomocí nástroje Win32DiskImager. Nainstalování operačního systému je velmi intuitivní, stačí pouze takto připravenou SD-kartu zasunout do Raspbery Pi, připojit zobrazovač (televizi, monitor) na HDMI výstup, a automatické skripty operačního systému vyzvou uživatele k zadání hesla pro uživatele root. Takže nyní máme na adrese https://ip-adresaraspberry:12321/ možnost přihlásit se do prostředí Webmin, běžící na portu 12321. Zároveň máme možnost se na adrese https://ip-adresa-raspberry:12320/ přístup k webovému shellu Shell-In-A-Box, a pomocí obou máme základ ke konfiguraci NASu. Oba konfigurační přístupy jsou tu zde proto, že obsluha některých balíčků je uživatelsky přívětivnější pomocí jednoho či dvou bash příkazů. Instalace balíků a jejich postupná konfigurace přesně následuje uvedený návod v [11]. Zde bych rád pouze upozornil na problémy a možná další nenáročná vylepšení řešení uvedeného v návodu.
2.6.1
Problémy
Dostáváme se tak ke krokům 18, 19, 20 v návodu na [11]. Tím instalujeme a konfigurujeme webovou aplikaci ownCloud [27]. Nejprve nainstalujeme ownCloud pomocí nástroje APT, to vše v prostředí Webmin. Následná konfigurace je nutná proto, že budeme vytvářet složku, do které budeme následně ukládat data a bude obsluhována aplikací ownCloud. V bashi to bude: cd /media/serverflashdr1 mkdir cloud chmod 750 /media/serverflashdr1/cloud První příkazem se dostaneme do složky serverflashdr1, což je složka našeho flash disku, další vytvoří složku cloud a třetí této složce přiděluje práva, a to tak, že uživatel (admin) má právo čtení, zápisu a exekutivy, skupina jen čtení a exekutivy, a svět (okolí) nemá 9
žádná práva. Nyní je nakonfigurovaná zapisovací složka, a přistupujeme ke konfiguraci ownCloudu. Do něj se dostaneme pomocí prohlížeče napsáním ip-adresa-raspberry/owncloud. Následně zadáme přihlašovací údaje uživatele root, cestu ke složce, do které se májí soubory ukládat, a třetí oddílem jsou údaje k mySQL databázi, kterou jsme podle návodu vytvořili také. A tady po přihlášení může nastat problém. Protože souborový systém FAT, který používá náš flash disk, neumožňuje ukládání práv a souborům (složkám) na nich jádro přidělí pouze virtuální práva. Nastavení práv je nutné provést upravením souboru (textového - konfiguračního) v cestě /etc/fstab/. Název je zkratka Filesystem table a má tak na starosti přidělování práv souborům a složkám v globále. Dostaneme se do něj tímto způsobem (ve webovém shellu): sudo nano /etc/fstab/ Přepíšeme řádek odkazující se na náš flash disk (dev/sda1/) takto: /dev/sda1 /media/serverflashdr1 vfat unmask=111,dmask=000,gid=500,uid=500 user,conv=b 00 Jedná se o nastavení parametrů unmask, dmask, gid, uid, které tam předtím nebyly, a podrobný popis nalezneme na [28]. Například parametr umask nastavuje spustitelnost souborů. Tímto jsem opravil chybu, hlášenou aplikací ownCloud jako: Data directory (//media/server flash dr1/cloud) is readable for other users Dalším bodem je v návodu [11] instalace serveru Samba, pro výměnu dat mezi Raspberry Pi a Windows. Toto řešení se mi ale nezdálo jako příliš vhodné pro danou aplikaci a tak jsem ho vynechal, stejně jako instalaci aplikace Transmission (Bit Torrent), protože ownCloud má tak jednoduchý a intuitivní proces stahování, že prostě není nutné další aplikace. Zatím jsme ale ve stadiu, kdy se pro přístup do aplikace ownCloud vyžaduje znalost IP adresy našeho Raspberry Pi NAsu. To lze obejít pomocí služby No-IP [29]. Funguje jednak jako synchronizační klient a jednak jako účet online služby. Dalším elementem systému popisovaného v návodu je přesměrovávání portů.
Obrázek 2.1: Popis funkce služby No-IP 10
Protože je ale druhá funkce, tj. přesměrování portů, zabudováno do routerů a v našem případě Raspberry Pi NAS není připojen na router v kanceláři, ale je zařazen do síťové architektury školy, která mi není známá, rozhodl jsem se toto řešení nerozvíjet. Hlavní využití NASu bude přeci jen v přístupu do aplikace ownCloud, a další funkce bude využívat pouze administrátor. Budeme proto využívat jen služeb No-IP. To se nainstaluje pomocí webového shellu příkazy dle návodu [11], háčkem je v tomto ohledu jen registrace na stránkách No-IP, která je soukromá, tedy vyžaduje emailovou adresu konečného správce systému. Na online účtu správce NASu přiřadí už jen IP adresu Raspberry Pi NASu, který je tímto vytvořen a připraven k testování.
2.7
Závěr
Touto rešerší jsem shrnul několik možností serverového využití levného a relativně výkonného jednočipového open-source projektu počítače Raspberry Pi. Následně jsem aplikoval rešeršní materiál na skutečném modelu NASu (Network Attached Storage), který je tímto počítačem tvořen. Osobně mě více zajímají clustery a použití více Raspberry Pi pro výpočty než servery pro hostování webových stránek či osobních blogů, i tak jsem se ale snažil popsat v rozsahu rešerše co nejvíce možnosti použití Raspberry Pi. Zatímco jsem začal psát tuto práci, Rasberry Pi Foundation vydala novou verzi Raspberry Pi, s označením Raspberry Pi 2 [30]. Oproti modelu B+ má tento nový téměř šestinásobný procesorový výkon při použití dvoujádrového ARM procesoru s architekturou CortexA7. Ohlášení uvedení na trh představilo dle mého názoru docela velký ohlas, a to odráží úspěšnost Raspberry Pi Foundation, které stojí za tímto projektem.
11
Literatura [1] Raspberry Pi Foundation. Raspberry pi foundation: About, . http://www.raspberrypi.org/about/.
URL
[2] UniPi technology. Unipi technology: About. URL unipi.technology. [3] Gert Van Loo; Liz Upton. Raspi-gertboard, http://www.raspberrypi.org/tag/gertboard/.
.
URL
[4] BananaPi.org. Bananapi. URL http://www.bananapi.org/. [5] Steve Breuning. Breuning: Raspberry pi web-server, . http://raspberrywebserver.com/raspberrypicluster/raspberry-picluster.html.
URL
[6] Alex. Raspi.tv: power consumption. URL http://raspi.tv/2014/how-much-lesspower-does-the-raspberry-pi-b-use-than-the-old-model-b. [7] elinux.org. elinux.org: Rpi sd cards. URL http://elinux.org/RPi_SD_cards. [8] Eben Upton. Raspberry pi foundation: Turbo mode, . URL http://www.raspberrypi.org/introducing-turbo-mode-up-to-50-moreperformance-for-free/. [9] Chris Clay Clay. Why is raspberry pi the perfect small server. URL http://www.zdnet.com/article/raspberry-pi-11-reasons-why-its-theperfect-small-server/. [10] Vojtěch Myslivec. Nastavení serveru na http://vojtech.myslivec.net/raspberry-pi.
raspberry
pi.
[11] DrWilson. Ultimate pi home server. http://www.instructables.com/id/Ultimate-Pi-Based-HomeServer/?ALLSTEPS. [12] Raspberry Pi Foundation. Operating http://www.raspberrypi.org/downloads/.
system
images,
URL URL
.
[13] Gonzo Technology. Server core for raspberry pi. http://gonzotech.tumblr.com/post/35816630624/server-core-forraspberry-pi.
URL URL
[14] Turnkey Linux. Turnkey linux. URL http://www.turnkeylinux.org/. [15] arkOS. What is arkos? URL https://arkos.io/what-is-arkos/. [16] Small Hadron Collider. How secure https://howsecureismypassword.net/. 12
is
my
password?
URL
[17] PiHW. Guide to direct network connection. https://pihw.wordpress.com/guides/direct-network-connection/.
URL
[18] putty.org. Putty: Download. URL http://www.putty.org/. [19] Jeremy Morgan. How to install drupal on raspberry pi. URL https://www.jeremymorgan.com/tutorials/raspberry-pi/how-to-installdrupal-raspberry-pi/. [20] Eric Jodoin. Soho remote access vpn. easy as pie, raspberry pi... Technical report, SANS institute, http://www.sans.org/reading-room/whitepapers/hsoffice/sohoremote-access-vpn-easy-pie-raspberry-pi-34427, 11 2013. [21] Lauren Orsini. Building a raspberry pi vpn part one: How and why to build a server. URL http://readwrite.com/2014/04/10/raspberry-pi-vpn-tutorial-serversecure-web-browsing. [22] Steve Breuning. Breuning: Raspberry pi cluster, . http://raspberrywebserver.com/raspberrypicluster/raspberry-picluster.html.
URL
[23] University of Southampton. Raspberry pi supercomputer. http://www.southampton.ac.uk/ sjc/raspberrypi/.
URL
[24] Adam DeConinck. Raspberry pi cluster. URL http://blogs.nvidia.com/blog/2013/07/19/secret-recipe-for-raspberrypi-server-cluster-unleashed/. [25] Lukáš Honek. Test raspberry pi jako htpc: Raději ne. http://www.digilidi.cz/test-raspberry-pi-jako-htpc-radeji-ne.
URL
[26] Mayank Sharma. Use raspberry pi to stream to any device with squeezeplug. URL http://www.techradar.com/news/digital-home/media-servers/useraspberry-pi-to-stream-to-any-device-with-squeezeplug-1154688. [27] ownCloud Inc. owncloud. URL https://owncloud.com. [28] Petr Krčmář. Na co se často ptáme: /etc/fstab. URL http://www.abclinuxu.cz/clanky/system/na-co-se-casto-ptame-etc-fstab. [29] No-IP.com. Managed dns services. URL https://www.noip.com/. [30] Eben Upton. Raspberry pi 2 on sale now at http://www.raspberrypi.org/raspberry-pi-2-on-sale/.
13
$35,
.
URL