Nov 072010
 

Lvslogo2Nel precedente articolo abbiamo visto una introduzione a LVS ed ai suoi utilizzi, ovvero avere un sistema di bilanciamento di carico integrato nel kernel Linux. Come detto però LVS è nato per fare bene una cosa sola: il bilanciamento, ma non prevede opzioni aggiuntive, quali ad esempio il monitorare l’andamento delle macchine su cui stiamo bilanciando un servizio ed in caso di problemi ad un macchina toglierla dall’elenco delle macchine attive.

Per sopperire a queste compiti si può utilizzare ldirectord



ldirectord è un daemon che controlla ed amministra i real servers in un cluster LVS di server virtuali bilanciati. ldirectord è tipicamente utilizzato come una risorsa per Linux-HA , ma può essere utilizzato anche da linea di comando.

Un cluster LVS è costituito o uno o più servizi virtuali, ciascuno dei quali può avere zero o più server reali. L’indirizzo IP di un servizio virtuale è ciò che gli utenti finali di connettersi e tipicamente è pubblicato tramite DNS. Quando viene effettuata una connessione a un servizio virtuale, è assegnato un server vero e proprio, e tutti i pacchetti per questa connessione vengono inoltrate al server reale. Una panoramica più dettagliata di LVS può essere trovata qui.

ldirectord ha un file di configurazione che specifica i servizi virtuali ed i real server a loro associati. Quando ldirectord è inizializzato crea i servizi virtuali per il cluster.

ldirectord controlla lo stato dei server reali periodicamente richiedendo una URL nota e controllando che la risposta contenga una risposta attesa. Se un server fallisce nel dare questa risposta, allora il server viene rimosso e verrà riattivato una volta che tornerà in linea (ovvero riprenderà a dare la risposta attesa). Se tutti i server reali sono down viene utilizzato un server di ripiego (fall back) inserendolo nel pool dei virtual server, questo sarà rimosso dall’insieme dei real server appena uno dei server reali torna on line. Tipicamente, il server di ripiego è localizzato su localhost. Ad esempio se viene fornito un servizio virtuale HTTP, allora è utile eseguire un server Apache HTTP che restituisca una pagina che indica che il servizio è temporaneamente inaccessibile, come server di fallback.

Esempio di configurazione

Il file di configurazione di ldirectord si divide in due aree principali, le configurazioni globali e quelle per Virtual server.

# Global Directives
checktimeout=10
checkinterval=15
#fallback=127.0.0.1:80
autoreload=no
#logfile="/var/log/ldirectord.log"
logfile="local0"
quiescent=yes

Questo è un esempio di blocco con direttive globali, tra le cose più importanti vengono indicati il tempo di timeout in secondi (10) prima di considerare un server come down e l’intervallo in secondi in cui vengono ripetuti i check (15)

# Virtual Server for HTTP
virtual=192.168.6.240:80
        fallback=127.0.0.1:80
        real=192.168.6.4:80 gate
        real=192.168.6.5:80 gate
        service=http
        request="index.html"
        receive="Test Page"
        scheduler=rr
        #persistent=600
        protocol=tcp
	checktype=negotiate

Questa è la configurazione di un virtual server,  vediamo configurati

  • VIP definito con virtual=192.168.6.240 questo è l’indirizzo del servizio a cui i clienti si collegheranno
  • fallback=127.0.0.1:80 questo è l’indirizzo dove mandare i clienti in caso che i real server siano tutti down, usualmente è una pagina web in cui ci si scusa del disservizio e/o si danno delel tempistiche in caso di malfunzionamento, ma potrebbe essere qualsiasi cosa.
  • real=xxx.xxx.xxx.xx gate queste due righe indicano l’indirizzo dei real server e la modalità in cui far operare LVS, gate indica la modalita LVS-DR
  • request="index.html" Indica che ldirectord deve chiedere ai real server la pagina index.html
  • receive="Test Page" Questo indica che all’interno della pagina indicata in receive noi ci aspettiamo di avere esattamente questa stringa, altrimenti il servizio risulta down, la stringa deve essere indicata tra apici doppi.
  • checktype=negotiate Questo indica che il check per verificare i real server consiste nell’analizzare una pagina web, l’alternativa è verificare solo che la porta dei real server risponda, un check molto più veloce e leggero ma che offre meno garanzie

Una volta fatta questa configurazione in un file è sufficiente dare il comando ldirectord nomefile start ed ldirectord configurerà il vostro VIP e real servers ed inizierà a verificare il funzionamento dei real servers, togliendoli e riaggiungendoli in caso di problemi.

Abbiamo quindi realizzato con ldirectord (ed LVS) un bilanciatore di carico molto più resistente ai down dei real server e che quindi offre un servizio migliore per i nostri clienti.

Popular Posts:

Flattr this!

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*