CRM - instalace
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. Ovšem udělat kvalitní instalační balíčky vyžaduje několik předpokladů:
- mít alespoň elementární znalosti balíčkování
- mít určité zkušenosti s kompilací software
- mít vhodné testovací stroje
- mít čas a chuť
Instalace přes APT
Instalace distribučního Pacemakeru u Debianu byla pro mne na samém počátku dost zmatečná, neboť ji provázela spousta protichůdných informací posbíraných všude možně po internetu. Situaci komplikovala skutečnost, že jsem zpočátku dost dobře nechápal, jak to všechno vlastně funguje a především netušil, že heartbeat i corosync dělají defakto to samé. (viz ...)
Po několikadenním trápení a nesčetných pokusech jsem došel k tomu, že postup instalace, kterým jsem začal na samém počátku byl v zásadě správný:
nod-1:~# apt-get install corosync pacemaker
|
Veškeré potřebné soubory si pak APT doinstaloval sám. Jenže..
Debianí instalační balíky pro Pacemaker mi přišly nějak divně a komplikovaně udělané.
- Především mi nebyla jasná závislost na instalačních balících heartbeatu. Proč bych je měl cpát do systému, když stejně používám corosync? Teprve když jsem začal dělat vlastní balíky jsem zjistil že i když Pacemaker primárně pro komunikaci používá corosync, využívá zároveň přitom i některé knihovny od heartbeatu
- Některé banální operace v rámci CRM vyvolávaly
Kernel panic
celého systému - Debianí verze Pacemakeru mi navíc přišla zastaralá. Verze 1.0.10 se objevila téměř před rokem, zatím co aktuální vývojová verze byla 1.1.5
- Poslední kapkou byla změna verze perlu. Což o to na samotný Pacemaker to sice vliv nemělo, jenže balík
net-snmp
, vyžadovaný pro kompilaci podpory snmp, kterou jsem chtěl otestovat měl s kompilací problém
Proto jsem si udělal instalační balíky pro architekturu amd64 vlastní.
Ovšem jak se zdá, ledy se od jara t.r. (května 2011) přece jenom pohnuly. I když i nadále z hlediska zpracování působí distribuční balíček chaoticky, byl aktualizován, takže aktuálně je v distribuci jak ve sqeezu, tak unstable k dispozici Pacemaker verze 1.1.6
Není tedy důvod se zdržovat údržbou vlastních instalačních balíčků.
Kromě toho v současné době (říjen 2011) změnil corosync způsob komunikace - využívá při ní externí knihovnu libqb se kterou Pacemaker zatím pracovat neumí.
Aby v balících nebyl takový nepořádek, jako u oficiální distribuce, zvolil jsem základní pojmenování balíků podle CLI nástroje Pacemakeru - crm
. Využil jsem toho, že v oficiální distribuci žádný jiný balíček stejného jména není, a zároveň tak mohl vytvořit tzv. meta-balíček, který sám o sobě nic neobsahuje, ale pouze na základě závislostí stáhne a nainstaluje ve správném pořadí vše potřebné. Jen pro srovnání uvádím v pořadí nutném pro kompilaci názvy dílčích instalačních balíků a v závorkách názvy jejich distribučních ekvivalentů.
- crm-glue (cluster-glue)
- crm-agents (cluster-agents)
- crm-heartbeat (heartbeat)
- crm-corosync (corosync)
- crm-pacemaker (pacemaker)
Pokud si přidáte do zdrojů pro APT mou repository...
deb http://support.dce.felk.cvut.cz/debian/ unstable main deb-src http://support.dce.felk.cvut.cz/debian/ unstable main
Pak můžete (po aktualizaci zdrojů) nainstalovat Pacemaker včetně veškerých závislostí jedním příkazem..
nod-1:~# apt-get install crm
|
V repository je také aktualizovaná verze lm-sensors a proti ní zkompilované binární balíčky net-snmp v. 5.6.1 (v oficiální distribuci je verze 5.4.3)
|
Rekompilace ze zdrojových balíčků
Pokud si budete chtít zkusit rebuildovat Pacemaker na míru z mých zdrojových balíčků a máte k dispozici několik strojů, ze kterých budete pak chtít cluster sestavit, můžete zkrátit čas kompilace použitím distcc.
Jeden ze strojů si zvolte jako kompilační stroj pro sestavování balíků (klient) a na ostatních nakonfigurujte a spusťe distcc jako server. Jelikož se serverová část distcc spouští na všech strojích, můžete využít, podobně jako já funkčního CRM pro jeho spouštění a zastavení.