Newsgroup: it.comp.os.linux.sys
Titolo: Ucarp multinodo

Devo bilanciare alcuni nodi varnish (5) senza aggiungere ulteriori livelli.
Volevo quindi evitare di mettere a monte una coppia di LVS in active-standby.
 
Una sorta di ucarp su 5 VIP andrebbe benissimo, in condizioni normali i 5 VIP sono distribuiti su tutti i server, in caso di guasto, uno dei 4 server rimasti si prende il VIP defunto. Esiste un software simile?


heartbeat/pacemaker
Ma quanto a quello lo stesso ucarp, afaik...

 Ma quanto a quello lo stesso ucarp, afaik...
 
Si. Ma è un accrocchio che vorrei evitare.
afaik, bisogna installare ucarp ovunque ed 'incrociare' i master a coppie di nodi:
 
server1, vip1 master
server1, vip2 slave
server2, vip1 slave
server2, vip2 master
 
in questo modo, a livello di dns faccio roundrobin sui due vip che normalmente sono gestiti sia dal primo che dal secondo server, se uno muore, l'altro, lo slave, se lo prende in carico.
 
Su due nodi va bene, ma se i nodi fossero 5 diventa un casino da gestire, ed il quinto nodo sarebbe comunque escluso.
 

 afaik, bisogna installare ucarp ovunque ed 'incrociare' i master a coppie di nodi:
 
Mica sei costretto ad avere sempre e solo due nodi per istanza ucarp...
(ma francamente heartbeat � abbondantemente pi� flessibile...)

 fa da solo...
 
Ok, il problema non è a livello di DNS, bensì come far girare 5 VIP su un cluster.
 
Io ho 5 nodi e devo avere di conseguenza 5 VIP. Questi 5 VIP devono essere 'spalmati' su tutti e 5 i nodi, salvo failure, nel qual caso uno nodo (va bene anche a caso) si prende l'ip defunto.
 
Con heartbeat come si fa ? AFAIK, gestisce solo 2 nodi vivo/morto, non un cluster intero con distribuzione delle risorse.

 Con heartbeat come si fa ? AFAIK, gestisce solo 2 nodi vivo/morto, non un cluster intero con distribuzione delle risorse.
 
S�, nel 2002 era vero quel che dici ;-)
 
crm configure primitive VIP1 ocf:heartbeat:IPaddr params ip="1.2.3.4"
cidr_netmask="32" op monitor interval="10s"
crm configure primitive VIP2 ocf:heartbeat:IPaddr params ip="1.2.3.5"
cidr_netmask="32" op monitor interval="10s"
crm configure primitive VIP3 ocf:heartbeat:IPaddr params ip="1.2.3.6"
cidr_netmask="32" op monitor interval="10s"
crm configure primitive VIP4 ocf:heartbeat:IPaddr params ip="1.2.3.7"
cidr_netmask="32" op monitor interval="10s"
crm configure primitive VIP5 ocf:heartbeat:IPaddr params ip="1.2.3.8"
cidr_netmask="32" op monitor interval="10s"
 
 
Fine (volendo).

 Io ho 5 nodi e devo avere di conseguenza 5 VIP. Questi 5 VIP devono essere 'spalmati' su tutti e 5 i nodi, salvo failure, nel qual caso uno nodo (va bene anche a caso) si prende l'ip defunto.
 
Si potrebbe installare LVS su tutti i nodi. Come realserver ci sarà sempre 127.0.0.1 e gli altri 4.
 
Poi ucarp (parlo di lui perchè si configura con 1 riga) installato su tutti.
Il master avrà advskew pari a 0, tutti gli altri advskew incrementato di 1 per ciascun nodo. In questo modo a rotazione tutti possono diventare master.
 
Volendo, posso fare una seconda istanza (mi pare sia configurabile sempre tramite /network/interfaces) con valori opposti avendo due VIP che girano su tutto il pool. Il nodo 1 sarà master del VIP1, il nodo 5 sarà master del VIP2

 cidr_netmask="32" op monitor interval="10s"
 
Non lo conosco minimamente, hai una sorta di guida (meglio ancora un howto per idioti) che non sia la documentazione ufficiale che mi sembra fin troppo incasinata?

 sempre 127.0.0.1 e gli altri 4.
 
Pessima idea.
Pensa al giro degli arp e ti viene il mal di testa...
 

> S�, nel 2002 era vero quel che dici ;-)

Pu� essere anche parecchio incasinata, s�, ma se ci devi solamnte far
spostare in giro degli IP � abbastanza banale.
 
Prova a partire da qui:
 
http://www.clusterlabs.org/wiki/Debian_Lenny_HowTo
 

 Io ho 5 nodi e devo avere di conseguenza 5 VIP. Questi 5 VIP devono essere 'spalmati' su tutti e 5 i nodi, salvo failure, nel qual caso uno nodo (va bene anche a caso) si prende l'ip defunto.
 
Appunto, pacemaker va benissimo.

 Pensa al giro degli arp e ti viene il mal di testa...
 
Purtroppo non ho altre soluzioni.
Io ho 'sti 5 varnish e devo bilanciarli.
 
La soluzione più semplice è quella di mettere due bilanciatori a monte e non stare ad impazzire con peacemaker e simili, ma aumenterei il numero di server.
(inoltre non saprei valutare quando un bilanciatore è saturo)
 
La soluzione meno invasiva dal punto di vista hardware sarebbe quella di bilanciare i varnish mediante un qualche software installato sui loro stessi server, e pensavo appunto ad LVS che bilancia in locale più sugli altri 4.
 
In che altro modo si potrebbe fare?
 
 
(che poi il problema che dovevo risolvere è già stato risolto con un singolo varnish, ora è più un esperimento accademico che altro)

 La soluzione meno invasiva dal punto di vista hardware sarebbe quella di bilanciare i varnish mediante un qualche software installato sui loro stessi server
 
Davvero, bilanciare degli ip con pacemaker è banale e funziona benissimo.
Provaci e non torni più indietro.
 

 Provaci e non torni più indietro.
 
Ci proverò, ieri ho trovato una GuidaPerIdioti che dovrebbe fare al caso mio.
Però, già che ci sono, tanto vale monitorare che varnish risponda su tutti i server.
Dici che si riesce a fare, ottenendo anche il bilanciamento degli ip? In pratica, 5 ip per 5 varnish, se un varnish muore, l'ip deve migrare.

 Dici che si riesce a fare, ottenendo anche il bilanciamento degli ip?
 
Una roba del genere, per intendersi?
http://www.clusterlabs.org/wiki/Example_configurations#Failover_IP__Service_in_a_Group
 

 cidr_netmask="32" op monitor interval="10s"
 
non mi è chiaro se facendo una cosa come questa qui sopra, corosync è 'smart' abbastanza da accorgersi di avere 5 nodi nel cluster e quindi far ruotare i 5 ip virtuali su tutti e 5 i nodi (un ip per nodo) o se ci possono essere possibilità di ritrovarsi con nodi aventi più di 1 ip ed altri nodi vuoti.
 
In sostanza, li *distribuisce* o si assicura solo che tutti gli ip siano sempre presenti su almeno 1 nodo?