Vezměte několik PC a postavte si vlastní cluster

Jiří Pech 2. 11. 2009

Nedávno jsme přinesli článek o tom, jak a proč si postavit vlastní výpočetní cluster. Dnes se na vše podíváme prakticky a popíšeme si jednotlivé kroky vedoucí k sestavení funkčního clusteru. Máte několik volných PC a potřebujete pořádný výpočetní výkon? My vám ukážeme, jak přesně postupovat.

Článek volně navazuje na mnou nedávno publikovaný článek o clusterech. Budu však tentokrát konkrétnější a pokusím se přímo popsat své řešení. Nechci se pouštět do polemiky, zda je toto řešení ideální či nikoliv, pouze jej popíši.

Co potřebujete

  • Fungující síť. Bez ní samozřejmě nelze cluster vytvořit. Není nutné připojení do internetu, ale pokud je k dispozici, je vše samozřejmě jednodušší.
  • Vhodnou linuxovou distribuci. Já jsem použil Debian Lenny, ale můžete použít libovolnou distribuci, u které si raději předem ověříte, že má všechny potřebné balíky programů k dispozici.
  • Jeden počítač jako server (master clusteru). V mém řešení je lepší použít výkonnější počítač.
  • Jeden až n počítačů jako pracovní stanice. To jsou počítače, u kterých sedí uživatelé clusteru.
  • Jeden až m počítačů jako uzly (node) clusteru.
  • Nejméně jeden, ale raději dva switche.
  • Volitelně diskové pole pro ukládání dat.

Cluster podruhe 5

Obrázek 1 – Schéma možného zapojení clusteru

Konečná topologie mého zapojení je patrná z následujícího obrázku. Zkoušel jsem několik variant, ale tato se ukázala jako nejlepší. Použití switche 2 urychlilo komunikaci mezi masterem a nody asi o 20 %.

Nastavení serveru a uživatelských počítačů

Jak server, tak uživatelské počítače mají nainstalován běžný Debian Lenny. Vyplatí se nainstalovat si nejprve server, pak jeden uživatelský počítač a jeden node. Ostatní uživatelské počítače a nody si pak vytvoříte například pomocí překopírování image nebo třeba pomocí klonování.

Pro lepší interakci uživatelských počítačů a serveru jsem použil několik řešení:

  • LDAP pro sdílení hesel
  • NFS pro sdílení domácích adresářů
  • XDMCP pro pohodlné grafické přihlašování k serveru
  • SSH přihlášení pomocí klíčů

Samozřejmě ani jedno z řešení není nutné použít, ale všechna dohromady dělají práci jednodušší a pohodlnější. Pro další text předpokládejme adresu serveru 192.68.0.1, uživatelských počítačů 192.168.0.10, 192.168.0.11 … a adresy uzlů 192.168.0.200, 192.168.0.201… Rovněž je vhodné naeditovat soubor /etc/hosts a doplnit do něj řádky:

192.168.0.1 cluster.domena.cz cluster
192.168.0.201 nod1.domena.cz nod1
192.168.0.202 nod2.domena.cz nod2
192.168.0.203 nod3.domena.cz nod3
192.168.0.204 nod4.domena.cz nod4
192.168.0.205 nod5.domena.cz nod5

a tento soubor nakopírovat na všechny uzly. Pak můžete snadno použít například ssh nod1.

LDAP

Použití LDAP není samozřejmě nutné, ale významně vám zjednoduší správu uživatelských účtů.

Pokud můžete použít již existující LDAP server, máte vše jednodušší. Já jsem si musel založit LDAP na serveru a nakonfigurovat všechny počítače jako LDAP klienty. Použil jsem variantu OpenLDAP. Návod pro instalaci můžete vzít na serveru Debian Clusters anebo ještě lépe na Debian Administration.

Zkontrolujte si zejména nastavení souboru /etc/ldap/ldap­.conf (nebo např. /etc/openldap/ldap­.conf podle distribuce), kde by mělo být něco jako:

BASE         dc=server,dc=domena,dc=cz
URI          ldap//192.168.0.1:389/

dále nastavení v souboru /etc/nsswitch­.conf, měl by obsahovat:

passwd:         files ldap
group:          files ldap
shadow:         files ldap

a obsah souborů common-* v /etc/pam.d. Například soubor common-auth by měl obsahovat:

account sufficient      pam_ldap.so
account required        pam_unix.so try_first_pass

Cluster podruhe 1

Obrázek 2 – Počítače v clusteru, v pozadí nody, v popředí server a diskové pole.

NFS

Na serveru musíte nainstalovat balíky nfs-kernel-server nfs-common portmap a na klientech nfs-common portmap anebo odpovídající podle vaší distribuce. Na serveru upravíte soubor /etc/exports a doplníte do něj řádek:

/home 192.168.0.0/24(rw,no_root_squash,subtree_check)

a poté upravíte soubory /etc/fstab na klientských počítačích zhruba takto:

192.168.0.1:/home  /home  nfs  acl,rw,user,exec 0 0

Samozřejmě můžete použít své parametry a pokud máte fungující DNS server také pravděpodobně uvedete namísto IP adresy DNS jméno serveru. Zrestartujte potřebné služby (portmap, nfs-common) a měli byste sdílet adresář ze serveru. Nezapomeňte, že toto připojení potlačí a znepřístupní všechny lokální adresáře nacházející se v adresáři /home na klientech. Další informace naleznete například na serveru Howtoforge.

XDMCP

Tento protokol zajistí vzdálené přihlašování k našemu serveru. Musíte jej na serveru povolit, ať již používáte KDM anebo GDM. Například pro KDM a KDE3 se jedná o soubor /etc/kde3/kdm/k­dmrc, kde musíte zajistit nastavení následujících parametrů:

[Xdmcp]
Enable=true
Port=177
Willing=/etc/kde3/kdm/Xwilling

Obdobně pro Gnome musíte najít soubor gdm.conf umístěný různě dle distribuce (např. /etc/gdm/gdm.con­f). Dále je třeba zajistit aby se v souboru Xaccess (bude se nacházet v /etc/X11/xdm nebo /etc/kde3/kdm nebo možná i jinde, dle distribuce) jako první nezakomentovaný parametr byla hvězdička a tak bylo povolené přihlášení k serveru odkudkoliv (pokud samozřejmě nemáte jiné přání).

Nastavení uživatelských počítačů je jednoduché. Můžete upravit soubor /etc/inittab přidáním řádku:

x:5:respawn:/usr/bin/X11/X -query 192.68.0.1

na konec souboru, což zajistí automatické přihlášení k serveru v grafickém režimu. Anebo to můžete vyřešit jako já a nic neupravovat. Oba správci přihlášení KDM i GDM obsahují v menu na úvodní obrazovce možnost Vzdálené přihlášení (Remote login), kterou lze zvolit a vybrat si server, ke kterému se přihlásíte. Výhoda tohoto řešení je, že můžete povolit vzdálené přihlášení i k jiným počítačům. Například já mám povolené přihlašování i k uzlům clusteru. Pokud někdo potřebuje spustit nějakou grafickou aplikaci, která by příliš zatížila server, domluví se s ostatními, že nemají po nějakou dobu používat některý z uzlů a tuto aplikaci si tam rozběhne. Samozřejmě to vyžaduje komunikaci mezi uživateli a schopnost se dohodnout. Další výhodou tohoto řešení je, že se uživatel může přihlásit přímo k svému počítači a rozjet si potřebnou aplikaci tam. Vzhledem k tomu, že domovské adresáře jsou sdílené, nalezne na všech počítačích svá data na stejném místě. To na druhou stranu někdy vede k situaci, že se některý uživatel přihlásí k svému počítači místo k serveru a obviní mne, že si nemůže spustit nějaký program (který je nainstalován na serveru, ale ne na lokálním počítači). Ze stejného důvodu rovněž doporučuji zakázat vypnutí a restart serveru z menu okenních manažerů běžnými uživateli, ušetříte mnoho nervů sobě i ostatním.

Kvůli problémům se zvukem při použití XDMCP je také nutné lokální přihlášení, pokud si uživatelé chtějí pustit nějakou aplikaci vyžadující zvuk. Naproti tomu, pokud si chtějí uživatelé pustit hudbu při vzdáleném přihlášení, mohou si v textové konzoli spustit mp3 soubory pomocí programu mpg123 anebo přehrát CD pomocí nějakého textového přehrávače (např. cdplay). To navíc nezatěžuje server.

Co se zatížení serveru týká, jak jsme si ověřili že aplikace, která nejvíc zatěžuje server, jsou flashové animace ve WWW prohlížečích. Podporu flashe ze serveru však odstranit nemohu, protože některé WWW aplikace důležité pro výzkum tuto podporu vyžadují.

Cluster podruhe 2

obrázek 3 – Clusterové nody a switch číslo 2

SSH

Následující postup umožňuje pohodlné přihlašování uživatelů mezi jednotlivými počítači clusteru bez nutnosti zadávání hesla. Jedná se tedy vlastně o bezpečnostní díru, protože pokud se někdo dostane k libovolnému uživatelskému účtu na libovolném počítači, dostane se tak i na počítače ostatní, ale vzhledem k použité topologii by muselo de facto jít o útok, kdy se útočník k počítači dostane fyzicky, a pak stejně obvykle nepomůže sebelepší zabezpečení.

Tento postup je nutné zopakovat pro všechny uživatelské účty nebo použít skript popsaný na stránkách Debian Clusters. Nejprve vytvoříme na serveru v domovském adresáři klíč pomocí příkazu ssh-keygen. Místo zadání hesla dvakrát stiskneme Enter. Tento klíč je vytvořen v adresáři ./.ssh. Přepneme se do tohoto adresáře a vytvoříme klíč pro přihlášení bez hesla příkazem cat id_rsa.pub >> authorized_keys2. Z bezpečnostních důvodů je ještě dobré nastavit práva tak, aby se nám k našim klíčům nikdo nedostal příkazem chmod 600 *. Vzhledem k tomu, že domovské adresáře jsou pomocí NFS sdílené mezi všemi uzly nodu, je možné se nyní přihlašovat bez hesla například ssh nod1.

Tento způsob můžeme samozřejmě použít i pro přihlašování mezi clusterem a uživatelskými počítači, které nesdílí domácí adresáře přes NFS. Stačí pouze překopírovat do adresáře .ssh v domovských adresářích soubory id_dsa a id_dsa.pub. Též je možné použít příkaz:

ssh-copy-id -i ~/.ssh/id_dsa.pub uzivatel@pocitac.nekde.cz

pro zkopírování klíče na vzdálený počítač. Pokud nechcete z bezpečnostních důvodů bezheslové přihlašování používat, zadejte při vytváření klíčů heslo. Pak budete k zadání vyzváni vždy když se budete chtít přihlásit přes ssh. Je možné taky nejprve spustit příkaz ssh-add, který klíč zavede do paměti a heslo tak zadáte jen jednou. Tím se však dostanete do stejné situace, jako byste heslo neměli, a někteří uživatelé proto tuto možnost rovněž odmítají.

Zajímavá možnost je nainstalovat si balík ClusterSSH. Viz článek na rootu. Pak stačí nastavit soubor .csshrc v domovském adresáři na tvar obdobný následujícímu:

clusters = nody
nody = nod1 nod2 nod3 nod4 nod5

Pokud nyní zadáte cssh nody otevře se vám tolik oken, kolik nodů máte zadaných v předchozím souboru, a společný příkazový řádek. Příkazy v něm zapsané se provádí na všech připojených nodech. Toto řešení je ovšem třeba používat s rozvahou, protože jakákoliv chyba se samozřejmě násobí.

Cluster podruhe 3

Obrázek 4 – startovní stránka Ganglie

Sestavení clusteru

Základní instalace serveru a nodů

Pro správnou funkci clusteru je třeba upravit jádro u serveru i nodů pomocí dvou patchů, jak je popsáno na v dokumentu Adding Performance Counters to the Kernel a rovněž přeložit podporu pro paralelní virtuální souborový systém, jak je popsáno v dokumentu Adding support for PVFS2 to the Kernel. Jádro je samozřejmě nutné přeložit. Protože oba dokumenty jsou už staršího data, doporučuji stáhnout si nejnovější balíky a přečíst si u nich dokumentaci.

Rovněž doporučuji nainstalovat na nody podporu pro již popsané LDAP, NFS a SSH, bude se vám tak s nody lépe pracovat. Předpokládám, že přímo u nodů pracovat nebudete, ale může se stát, že budete některou úlohu potřebovat rozjet přímo na konkrétním nodu jak jsem již popsal výše. Uživatelé si pouze musí uvědomit, že stejná data mají jak na svém počítači, tak na serveru, tak na nodech. Takže není dobrý nápad zkoušet jeden soubor editovat současně na více počítačích.

Programy pro rozdělování úloh na nody

Nainstalujte si programy Torque a Maui podle návodu z Debian Clusters. Jak jsem psal výše, návod je staršího data, proto není od věci přečíst si pro jistotu dokumentaci přibalenou k programům. Dobrý manuál pro Torque je například na Cluster resources

Na serveru Debian Clusters naleznete rovněž dobrý popis užívání těchto programů. Nebudu zde popisovat instalaci ani užívání, protože bych pouze opakoval postup popsaný na Debian Clusters.

Cluster podruhe 4

Obrázek 5 – Ganglia, vytížení za minulý týden

Ganglia

Je vynikající monitorovací nástroj, pomocí kterého můžete velmi dobře sledovat vytížení jednotlivých uzlů clusteru. Na jednotlivé uzly nainstalujte program Ganglia Monitoring Daemon (gmond). Pokud vás stejně jako mne zajímá i vytížení serveru, nainstalujte jej i na server. Na server pak ještě nainstalujte program Ganglia Meta Daemon (gmetad). Nyní na každém počítači na kterém běží program gmond naeditujte soubor /tec/gmond.conf a jeho obsah nahraďte následujícím (s vašimi úpravami):

name  "Nas kluster"
owner "Vlastník"
mcast_channel 239.2.11.72
mcast_port    8649
mcast_if  eth2
num_nodes  5
setuid     ganglia

Věnujte zejména pozornost správnému nastavení síťového rozhraní (eth0, eth1, eth2…). Dále na serveru upravte soubor /etc/gmetad.conf následujícím způsobem:

data_source "server" localhost
data_source "nod1" 192.168.0.201
data_source "nod2" 192.168.0.202
data_source "nod3" 192.168.0.203
data_source "nod4" 192.168.0.204
data_source "nod5" 192.168.0.205
gridname "Nas kluster"
setuid_username "ganglia"

Spusťe na všech počítačích, kde je třeba, službu gmond příkazem /etc/init.d/gmond start a na serveru navíc /etc/init.d/gme­tad/start. Nyní se již můžete pokochat pomocí webového prohlížeče na adrese http://server.nekde.cz/ganglia. Mně stačí se připojit z kteréhokoliv počítače k serveru a zadat http://localhost/ganglia a obdržím výsledek jako na obrázku číslo 4. Pak si mohu dát plný výpis například za týden jako na obrázku číslo 5 a vidím, že cluster nebyl tento týden (kromě jedné úlohy) zatížen.

widgety

Závěr

Je mi jasné, že mnozí z čtenářů sezdají mé řešení jako neideální, složité, nebezpečné, primitivní atd. Přesto si myslím, že by někoho mohlo alespoň navést k cíli – vytvoření vlastního clusteru. Nám tento cluster již úspěšně a spolehlivě funguje více než půl roku.

Rozhodně se nejedná o komplexní návod, popsal jsem pouze místa, kde se mé řešení odchyluje od řešení uvedených v odkazech (a snad tak čtenáři ušetřím pokusy) anebo klíčová místa.

Našli jste v článku chybu?
DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

DigiZone.cz: WorldDAB: jak si stojí klíčové trhy?

WorldDAB: jak si stojí klíčové trhy?

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Technisat připravuje trojici DAB

Technisat připravuje trojici DAB

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

DigiZone.cz: DVB-T2 ověřeno: seznam TV zveřejněn

DVB-T2 ověřeno: seznam TV zveřejněn

DigiZone.cz: Jaká je Swisscom TV Air Free

Jaká je Swisscom TV Air Free

DigiZone.cz: Test: brýle pro virtuální realitu Exos Urban

Test: brýle pro virtuální realitu Exos Urban

Vitalia.cz: Inspekce našla nelegální sklad v SAPĚ. Zase

Inspekce našla nelegální sklad v SAPĚ. Zase

Lupa.cz: Hackeři mají data z půlmiliardy účtů Yahoo

Hackeři mají data z půlmiliardy účtů Yahoo

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

DigiZone.cz: Samsung EVO-S: novinka pro Skylink

Samsung EVO-S: novinka pro Skylink

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019