CRM - instalace

Z DCEwiki
Verze z 7. 5. 2011, 21:41, kterou vytvořil Keny (diskuse | příspěvky) (Založena nová stránka: Na stránkách http://www.clusterlabs.org je popsán [http://www.clusterlabs.org/wiki/Install postup kompilace ze zdrojových kódů ]. Ovšem kompilovat v rámci clusteru …)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

Na stránkách http://www.clusterlabs.org je popsán postup kompilace ze zdrojových kódů . Ovšem kompilovat v rámci clusteru zvlášť CRM na každém nodu je nesmysl. Proto je lepší mít binární instalační balíčky, které lze mezi ně distribuovat.

Zvolil jsem proto jeden nod jako kompilační stroj pro sestavování těchto instalačních balíků. Abych zkrátil čas kompilace, tak jsem nejprve na všechny nody nainstaloval distcc, a jelikož se jeho serverová část spouští na všech nodech, využil jsem CRM pro jeho spouštění a zastavení.

distcc

sám o sobě není kompilátor, ale frontend pro gcc vyvíjen od r. 2002

Jde o jednoduchou aplikaci typu klient-server, která umožňuje rozdělit kompilaci mezi více strojů a využít tak v případě potřeby jejich výpočetní výkon ke zkrácení doby kompilace. Instalace distcc je v Debianu triviální. Na každém z nodů, které mají být součástí kompilační farmy stačí spustit:

apt-get install distcc

Konfigurace distcc

Součástí instalačního balíčku je jak klientská aplikace distcc, tak serverový démon distccd'. Ten po svém spuštění vytvoří několik procesů vyhlížejících svou dávku ke kompilaci. Každý z nodů tak může fungovat zároveň jako klient i jako server. Pro sestavování instalačních balíků však lze používat kupř. virtuální stroj a nody využívat jen při vlastní kompilaci.

Efektivita použití distcc záleží na několika faktorech:

  • Jak rychlá a spolehlivá je síť, skrz kterou klient komunikuje se servery?
  • Jak jsou výkonné servery?
  • Jak je výkonný server?
Poznámka Při pomalejší síti lze využít pro přenos dat mezi klientem a servery lzo kompresi

Klient

Je stroj na kterém bude probíhat sestavování instalačních balíků. Je třeba si uvědomit, že vlastní kompilace nemusí být při sestavování balíku ta nejnáročnější činnost. Záleží také na tom, jak rychle stíhá klient načítat z disku a rozesílat data ke kompilaci. Propustnost sítě zase ovlivňuje to, jak stíhají servery vracet zpracované bloky.

Upozornění U distcc při kompilaci komunikuje vždy klient se servery, nikoliv servery mezi sebou!

Klientská aplikace distcc si při svém spuštění přebírá seznam serverů z proměnnné $DISTCC_HOST, není-li nastavena, načte si jej z konfiguračního souboru /etc/distcc/hosts. Stroje mohou být identifikovány buď:

  • doménovým jménem (pokud mají vlastní doménu) nebo
  • svým hostname (pokud pro ně existuje záznam v souboru /etc/hosts) nebo
  • IP adresou

Jednotlivé identifikátory jsou odděleny mezerami.

Server

Je stroj na kterém běží serverová část - démon distccd. U Debianu si parametry při spouštění démon distccd spouštěný přes init natahuje z konfiguračního souboru /etc/default/distcc.

Využití ccache

Utilita ccache funguje tak, že archivuje dílčí výsledky při všech kompilacích, takže pokud se má kompilovat již jednou zpracovaný kus kódu, použije se - pokud nedošlo k nějakým změnám - kód z ccache. Pozor na to že:

  • ccacche lze použít pouze na straně klienta
  • ccache nelze používat v PUMP módu.

pump

Standardně distcc řeší pouze kompilaci, všechny zbývající operace, jako např. kompilace výsledného bajtkódu, atp. už probíhají na klientovi. distcc-pupmpje varianta, která umožňuje distribuovat i jiné operace prepocesoru. Má to však několik omezení:

  1. především jak na straně klienta i serveru musí být použita verze distcc-pump novější než 3.0
  2. hlavičky i cesty ke knihovnám musí být během kompilačního procesu jak na straně klienta tak serveru stejné.
  3. komplexní

Vytvoření zdroje pro spouštění distcc

primitive DistCC lsb:distcc clone clDistCC DistCC

Jelikož se distcc na jednotlivých nodech spouští init skriptem, není třeba zadávat žádné jiné parametry. Aby se služba spouštěla současně na všech aktivních nodech, je třeba primitivu DistCC nastavit jako klon. Tím bude zajištěno, že spuštění a případné zastavení služby proběhne na všech aktivních nodech současně.

Poznámka U clusteru pouze se dvěma nody by se dal použít i Master/Slave mod

Použití

stroj:~# MAKEFLAGS="CC=distcc" fakeroot debian/rules binary -j16