Clark's Home page

Tecnicismi vari di un Sysadmin Linux ma anche qualcosa della sua vita

Cluster con UCARP —

UCARP  è il port sotto linux di CARP di BSD.

La situazione dei 2 bastion host può essere cosi graficamente rappresentata:

Quindi sangiorgio è il Maser e perseo lo slave, e 192.168.2.241 salta dal Master allo slave se il primo per un qualsiasi motivo non dovesse essere operativo, per poi tornare sul primario quando la situazione torna alal normalità.
I pacchetti necessari sono: ucarp iproute e iputils-arping che installeremo col solito apt-get install che provvedera’ a tirarsi dietro tutte le dipendenze del caso.
La documentazione di ucarp e’ un po povera (un po TANTO povera) ad essere onesti e ho dovuto ingegnarmi un po, pero’ grazie anche all’aiuto di Roberto Resoli del Linuxtrent che ringrazio moltissimo sono riuscito ad ottenere una configurazione piu’ che funzionale.
Il grande vantaggio di ucarp è la sua leggerezza e praticità, il suo svantaggio la quasi totale incompatibilità con drbd almeno io non son riuscito a farli andare assieme, a causa di questo il fatto  le configurazioni dei servizi devono essere replicate sulle due macchine, e assicuro che specie se si ha fretta (cioè sempre praticamente) è davvero un guaio tenerle allineate.
Quando la connessione cade su sangiorgio, perseo fa il take dell’indirizzo e fa partire i servizi.
Le differenze tra i vari files di partenza del demone e di arresto sono nella parte di lancio la priorità con cui una macchina si elegge a Master e nella parte di down i mac address delle due macchine che sono invertiti negli script per il gratuitous arp.
La cosa che mi ha fatto veramente stupore di ucarp è che ambedue gli hosts devono essere settati col flag -P cioè come Master ma uno è più Master dell’altro, personalmente trovo questa logica abbastanza contorta ma tantè.
Riporto interamente e in originale il pezzo del file README di ucarp che tratta di questo argomento
———————————————————————————
By changing the base (the -b switch) you can have a “preferred” master. The
lower the value is, the more likely it’s going to be a master.

Please note that by default, and if everything’s ok, a master will stay a
master as long as possible. If you want a “preferred” master to immediately
become a master even if another host is already the master:
– add the –preempt (or -P) switch to *all* hosts
– use a lower skew or a lower base for the “preferred” one.

When ucarp first runs, it starts as a backup and listens to the network to
determine if it should become the master. When it enters the backup state, it
normally runs the downscript. That can be useful to remove old temporary files
or clean up an interface that is in an unknown state. In some circumstances,
however, it is undesirable to run the downscript if the service was not
already up. In that case, use the –neutral (-n) switch for ucarp to not run
the downscript when it enters the backup state the first time. All changes
from the master state to the backup state after that will run the downscript.
———————————————————————————
In effetti dalle prove che ho fatto i flag -b e -k sono quelli che fanno tutto.
Un altro aspetto da tenere presente se si hanno in rete diverse macchine non tra loro clusterizzate che usano ucarp e’ necessario usare VHID differenti altrimenti i syslog si riempiono di messaggi di errore.

i file di configurazione di ucarp sono 3
a) il file di lancio /etc/init.d/ucarp
b) il file di up /etc/ucarp/ucarp-up
c) il file di down /etc/ucarp/ucarp-down

il file di lancio è stato una mia precisa scelta perchè su molta documentazione che si trova in rete questi parametri sono passati direttamente alla scheda in /etc/network/interfaces
Le due macchine sono sangiorgio e la sua gemella perseo.
Un particolare che da subito mi ha dato da pensare è stato il seguente:
se la macchina master cade la macchina slave fa il take degli indirizzi fa partire i servizi e tutto va bene; ma se la macchina master non cade perche’ non ha motivo di cadere ma non c’è linea sul router cosa faccio?
Quella sta su bella tranquilla e non si esce.
Ragionando e al solito chiedendo nella mitica ML del Linuxtrent sono arrivato a usare un plugin di nagios inserendolo in nello script check_connection e mettendolo in crontab ogni  minuto.

 


Categorised as: Cluster | Linux | Work

Comments are disabled on this post


Comments are closed.


Hide picture