By 19 Gennaio 2010 0 Comments

Bilanciamento del Carico – Cluster e Gestione del FileOver

Bilanciamento del Carico – Cluster e Gestione del FileOver

Sotto linux per la gestione del carico, cluster e failover si possono usare alcuni software.

LVS + IPVSADM = bilanciatore Kernel e la sua amministrazione (Virtual Server)
Per fare un bilanciamente del carico bastano questi due software.

LDIRECTORD = serve per la gestione delle regole. Crea le funzioni per Ipvsadm

HEARTBEAT = gestisce il Failover

LVS + IPVSADM
Una volta installato IPVSADM (apt-get install ipvsadm) possiamo procedere alla sua configurazione con il comando Dpkg-reconfigure (tools per riconfigurare i pacchetti).
Ipvsadm non deve essere caricato come elemento di boot
Nel secondo step il sistema vuole sapere in che modalità funzionerà (se fa il master o lo slave). Questo va configurato a seconda del nostro sistema. Da qui in poi supporremo SRV1 (master) e SRV2 (slave).
Il server slave avrà tra le sue caratteristiche lo stare in Standby e il poter andare dal nodo master a fare una copia della tabella di routing. Al terzo punto il sistema chiede quale sarà l’INTERFACCIA di rete su cui effettuare la sincronizzazione master-slave. Per questa modalità è da preferirsi una scheda di rete dedicata e anche altre funzioni che poi vedremo (es. seriale, ecc.).
A questo punto la config. per ipvsadm è completa, e il Daemon parte.

LDIRECTORD
Per installare questo componente è necessario (se non è già stato fatto) abilitare dei repository di APT (/etc/apt/sources.list) e in modo particolare questi due:
deb https://it.archive.ubuntu.com/ubuntu/ dapper universe
deb-src https://it.archive.ubuntu.com/ubuntu/ dapper universe

una volta “scommentati” , lanciare il comando Apt-get Update (per forzare l’aggiornamento).
Dopodichè si sarà in grado di installare ldirectord (apt-get install ldirectord)

Ldirectord ha il suo demone che gira in : /etc/init.d/ldirectord e ha la sua configurazione in /etc/ha.d/ldirectord.
Ldirectord deve essere rimosso dall’avvio automatico perché lui cisi mette da solo. Non ha necessità di stare li, ma sara invocato da Heartbeat quando ne avrà bisogno. Per rimuoverlo basta il comando:
update-rc.d –f ldirectord remove

A questo punto possiamo passare alla configurazione nel file /etc/ha.d/ldirectord.

# Global Directives

# checktimeout per vedere quando risponde il server (secondi)
checktimeout=10
# ogni quanto faccio il controllo (secondi)
# ogni qualche minuto
checkinterval=5

# se uguale YES il sistema si rilegge ogni tot il file di configurazione.
# un problema di yes è se si sbaglia la config. Lui si rilegge il file e si
# blocca
autoreload=no

logfile=”/var/log/ldirectord.log”

# se uguale NO il server viene espulso
# se YES il server viene temporaneamente escluso con Peso=0 ma il sistema si
# tiene le sessioni in memoria per un tempoX . se torna su…ci ri-lavora.
quiescent=yes

# Virtual Server for HTTP
virtual = 172.16.208.XX:80
protocol = tcp

# scheduler – come il bilanciatore distribuisce il carico
# rr – roundrobin
# wrr – roundrobin pesato – a ciascun server un peso per smistare come si vuole
# lc – list connected – bilancia in base al numero di connessioni. Va a verificare
# il peso connessioni sulla macchina,
# wlc – list connected pesato – guarda le connessioni effettive e il peso
# assegnato alla macchina
scheduler = wrr

# gate identifica il DirectoRouting
# mask identificherebbe il NAT – ipip il ipoverip

# 10 – 20 sono i pesi. Il 20 prende connessioni doppie.

real = 172.16.208.XXX:80 gate 10
real = 172.16.208.XXX:80 gate 20

# checktype è il controllo che il Director deve fare sui server finali
# per vedere se sono vivi
# possibilità : ping – negoziate – connect
# ping = banale ping. Do per scontato che se lui è UP allora sono Up anche
# i servizi
# connect = apre connessione su una porta (definita, es. 80) se risponde
# allora il servizio è su. Ma non dice in che stato è il servizio.
# negoziate = chiama il servizio, chiede la pagina e considera ok il server
# solo se riceve la stringa “OK”.Si può fare pagine PHP che
# controllano lo stato del server ma PHP deve rispondere entro
# il tempo checktimeout

checktype=negoziate
service=http
request = “/ldirectord.php”
receive = “OK”

persistent=120
# stabilisce se sono connessioni persistenti.
# lui continua a redirezionare l’utente sull’host fino alla scadenza del
# tempo.

Per fare un esempio facile:

# Global Directives
checktimeout=10
checkinterval=5
autoreload=no
logfile=”/var/log/ldirectord.log”
quiescent=yes
virtual = 192. 168.33.73:80
protocol = tcp
scheduler = wrr
real = 192.168.33.74:80 gate 10
real = 192. 168.33.75:80 gate 20

A questo punto, sui server bisogna assegnare l’IP di bilancio alla scheda di rete (eth0). Lo si può fare con il semplice comando ifconfig : ifconfig eth0:0 ip
Aggiunge un Alias alla scheda di rete e quindi aggiunge un IP a tutti gli effetti. Aggiungere l’IP (per provare) a tutti e due i server

Per farci vedere che tutto funziona possiamo installare apache e creare per ogni macchina un file diverso (index.html) nella cartella var/www. Chiamando l’IP comune vedremo lo switch dei vari ip.
Quindi il bilanciamento di carico è ora completo.

Heartbeat 
A questo punto bisogna aggiungere Heartbeat.
La nostra filosofia è di avere un server A e un server B. Ovviamente è inutile tenere attivi sia A e B contemporaneamente. Per questo motivo si usa Heartbeat. Heartbeat esegue alcune interrogazioni dal server slave verso il master e se il secondo è giù, allora interviene promuovendo il server Slave come master. Ovviamente bisogna avere molta affidabilità per il controllo altrimenti si rischia di trovarsi con due server master attivi.

Quindi per l’installazione : apt-get install heartbeat
Una volta installato, heartbeat ha bisogno di tre file per partire che devono essere locati in /etc/heartbeat e sono:
ha.cf – haresources – authkeys
Solo ha.cf definisce il funzionamento generale.

 

Posted in: Linux

About the Author:

shared on wplocker.com