Newsgroup: it.comp.os.linux.sys
Titolo: load balancing HOWTO -lunghetto-

Breve intro:
Dual Xeon 2.8 + Winzozz 2003 Server + IIS + SQL2000 + sito fatto da terzi 
(media di 30/40 connessioni contemporanee) risultato -> necessario un 
riavvio quasi giornaliero.
Abbiamo rinunciato a scoprire le cause di tutto cio' (a mio modesto parere 
95% su come e' stato "programmato" il sito in ASP, 5% Micro$oft)
L'intezione e' prima provare e poi migrare definitivamente su (o sotto) 
Linux.
E' circa 6 mesi che che un dual Athlon MP 2000 + Suse 9.0 + Apache 2.0.48 + 
PHP 4.3.4 (sito sviluppato internamente) + FreeTDS (prima), OdbTP (adesso) 
per la connessione a MS-SQL (database del gestionale) , "serve" la intranet 
aziendale (circa 5-10 utenti connessi contemporanemente) senza problemi. (Ok 
riconosco che il carico e' insignificante).
Qualche giorno fa sono addirittura riuscito ad allestire due server di prova 
in cluster con heartbeat e drbd in previsione della migrazione definitiva.
Ho un ultimo tassello da inserire: il load-balancing.
Nella prove che ho fatto un server faceva tutto il lavoro, mentre il secondo 
e' solo in attesa della "morte" del primo (con ovvio spreco di risorse...)
Dopo varie letture ho scoperto che il load balancing potrebbe essere fatto 
da un altra macchina (o cluster) che facendo da router, distribuirebbe il 
traffico della rete sui vari server, ma introduce un problema: 
l'architettura si sdoppierebbe in due, cioe' il primo livello per lo 
smistamento dei pacchetti, il secondo per l'elaborazione delle richieste. 
Quindi due cluster (percio' almeno quattro server da amministrare), di cui 
il primo sarebbe comunque nella situazione che voglio appunto evitare (cioe' 
avere un server a far nulla); spero di essermi spiegato nonostante il mio 
"itagliano" ;-).
Domanda:
Avendo a disposizione due (o piu') server adeguati sarebbe possibile 
integrare tutto il pacchetto (load-balancing, cluster, apache, etc) in un 
cluster unico?
Oppure, esiste una tecnica diversa dal routing dei pacchetti della rete, per 
effettuare il load-balancing che mi permetta di raggiungere il medesimo 
scopo?
Grazie per il tempo e congratulazioni se (mi) avete capito.
I.d.N.
-- 
.o0-- I.d.N. alias JYD --0o.
Please Cut "-some trees-" for reply 

cerca lvs , dovrebbe essere quello che ti serve.
ciao.
-- 
Al manicomio: "Mi scusi, sa dirmi dove si trova il prof. Von Schutz?".
"Ma e' lei il prof. Schutz!".  "Appunto, dove mi trovo?".

 ciao.
...ffffatto
Tutte le tre soluzioni proposte (NAT, IP Tunnelling e Direct Routing) 
prevedono sempre una "box" in cima alla piramide dei server.....
Piu' ne leggo e piu' mi convinco del fatto che non sia possibile fare a meno 
di una coppia primario-backup che faccia da balancer.....
Tradotto in soldoni, considerando la quantita' di lavoro che dovrebbero 
svolgere, non e' una soluzione conveniente.
Quando avremo un traffico tale da mandare in crisi l'attuale sistema, penso 
che il "Boss" non avra' problemi a sganciare un po' di euri per qualche 
altro server, anche perche' attualmente abbiamo una connessione HDSL a 4Mb 
non incrementabile almeno a breve termine (e nemmeno tanto sfruttata a dire 
il vero).
Grazie cmq


 prevedono sempre una "box" in cima alla piramide dei server.....
e che ne dici di fare semplicemente due entry nel dns del tipo
server	IN	A	10.0.0.1
server	IN	A	10.0.0.2
così il dns ci pensa da solo a smistare i carichi? il dns è ridondato,
se muore il primrio hai il secondario. Non è forse perefttamete
bilanciato ma è robusto.

 prevedono sempre una "box" in cima alla piramide dei server.....
Se guardi solo i disegnini è vero ciò che dici.
Se leggi la documentazione, invece, scoprirai che un director può fare
anche da real server.
Max

 server	IN	A	10.0.0.2
Giusto. E visto che heartbeat c'e` gia` basta che il server che rimane in
vita "rubi" l'IP pubblico al server morto per vedersi recapitare tutti i
pacchetti.
Bye.

 svolgere, non e' una soluzione conveniente.
per quello che devono fare puoi usare 2 p133 con 32mb di ram......
-- 
E se Max Pezzali avesse studiato ingegneria?
"Il regolo dell'amico non sbaglia mai...".
                -- Andrea `Zuse' Balestrero

 anche da real server.
 A dire il vero non ho trovato nulla a riguardo (forse perche' ho dato solo 
una lettura superficiale).
Se non ho capito male quindi dovrei avere due o piu' realserver, il primo 
con il director "principale" attivo e il secondo con il director di back-up. 
Heartbeat dovrebbe controllare il corretto funzionamento del director 
principale e attivare il secondo solo in caso di necessita'.
Meglio che faccia un po' di prove con ldirector per toccare con mano.....
Thx


 bilanciato ma è robusto.
C'è un grosso problema di usare il roundrobin su DNS con http: le
sessioni e tutto quello che ci va dietro.
La tua soluzione va benissimo per altri protocolli (SMTP, ad esempio) ma
decisamente non per un HTTP (a meno che non sia interamente statico).
Aloha...
-- 
cat: .signature: No such file or directory

> per quello che devono fare puoi usare 2 p133 con 32mb di ram......
Immaginavo, cmq i due server gia' ci sono (ci girava il gestionale su 
MSSQL......) 

Iuza Delle Nuvole wrote:

e allora vai ! :-)
-- 
"L'hardware raccomanda Linux."
                -- Reinterpretazione dello slogan Kenwood, by Zuse

 decisamente non per un HTTP (a meno che non sia interamente statico).
dipende da come è fatto il sito.

 dipende da come è fatto il sito.
Sicuro. Il problema allora è che devi fare il sito per il bilanciamento,
e non il bilanciamento per il sito... :-/


 medesimo scopo?
Non esattamente.
Puoi mettere l'indirizzo dei due server in round robin sul dns con ttl a 10
secondi, però se una macchina ti va giù il 50% delle richieste fallisce
fino a che non intervieni (manualmente o in automatico) sul dns...
-- 
Ciao da Villo    -    GPG public key available
                      Ferrara LUG 
http://ferrara.linux.it
        Remove "+settanta" for email replies
Protect your Freedom: 
http://www.againsttcpa.com/index.shtml

 scopo?
con 2 macchine puoi fare tutto.
se il problema è l'affidabilità crei un cluster active/standby e 
heartbeat è più semplice da configurare.
se vuoi un cluster in load balancing usa lvs+keepalived (al posto di 
heartbeat).
il bilanciamento poi lo puoi fare solo su apache, mentre x mysql dovrai 
scegliere un master, e mettere lo slave in replica.
ciao
--
Ranger