Newsgroup: it.comp.os.linux.sys
Titolo: Load Balancing

Salve a tutti,
devo mettere 2 web server in load balancing, ossia fare in modo che 
rispondano entrambi alle richieste HTTP, ma in modo che il carico venga 
bilanciato tra le 2 macchine.
Come mi consigliate di agire?
Conviene affidarsi ad un hardware aggiuntivo, a monte delle 2 macchine, che 
effettui il bilanciamento (e che tenga traccia delle sessioni per evitare di 
separare le richieste relative ad una stessa sessione), oppure esistono 
soluzioni software-only che non necessitano di hardware aggiuntivo?
Il web server e' apache, il s.o. e' linux.
Grazie a chi vorra' consigliarmi.
--
Jagui

Come mi consigliate di agire?
Prova con Bind 9...

Prova con Bind 9...
Non e' una buona idea fare load balancing via DNS.
-- 
Cop(R)(C) la metodologia di programmazione del futuro! (forse)
http://spazioweb.inwind.it/cop

 - ICQ# 92905138
http://www.mascanc.net/~skolem

Non e' una buona idea fare load balancing via DNS.
Si e' perche'? Spiegami che sono tutto orecchie e spiegalo anche alla
CISCO che te ne saranno molto grati.

e spiegalo anche alla CISCO che te ne saranno molto grati.
Cisco e' una delle targhette che vedo in giro nel laboratorio
universitario in cui sto facendo la tesi di laurea in - surprise :) -
bilanciamento di Web server distribuiti :-))))))


bilanciamento di Web server distribuiti :-))))))
Ehehehe ma il loro sistema non e' altro che un DNS un po' (!) evoluto.
Thks x la spiegazione :-)
ciao

baggianata come questa)
Caro formaggio la domanda inizio tread non parlava di carichi e
secondo il mio "ignorantissimo" parere e' possibile ipotizzare
soluzioni diverse per esigenze diverse.

soluzione potrebbe essere.
Allo stato attuale l'unica soluzione usabile in un ambito reale e' un
bilanciamento fatto a livello TCP/IP, come quello del Linux Virtual
Server, ovvero usando un dispositivo di rete, tipo i director della
Cisco (e di altri, immagino). Soluzioni a livello Content sono ancora
oggetto di ricerca, quindi nulla di realmente usabile.


No, non hai capito, non insistere.
I director della CISCO sono decisamente _ancora_ la soluzione migliore
per carichi elevati, dopo viene LVS e poi anche se non ti piace il
Bind9
baci

CISCO che te ne saranno molto grati.
Mi intrometto, dato che fra poco dovro' fare la stessa cosa :-)
Credo  che il  problema risieda  nella gestione  delle sessioni.  Si
dovrebbe fare in modo, cioe', che tutte le richieste appartenenti ad
una sessione vengano indirizzate sempre sul medesimo server.
Con  un  load  balancing  via  DNS, inoltre,  il  carico  non  viene
distribuito egualmente su tutte le macchine, ma ogni nuova richiesta
viene indirizzata sulla "prossima macchina" usando round-robin.
Se ho detto cavolate, flammatemi pure, ma con cautela :-)
-- 
 __
| _         "The Internet is slow, could you please reboot it ?"
|__|iambo   mailto:
gabr...@giambonini.com
 
www.giambonini.com

viene indirizzata sulla "prossima macchina" usando round-robin.
Si', esistono anche round robin pesati e risolvono i problemi dei
domini, ma e' difficile inventare politiche migliori, non ci sono
informazioni da sfruttare nella fase di risposta alla query. 


 Bind9
veramente io lavoro tutti i giorni con load-balancing e ci sono prodotti
anni-luce piu` avanti di cisco in questo campo; in particolare direi
radware, foundry, alteon e anche ibm network-dispatcher
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Perche'?
il load balancing via dns ci puo` anche stare, ma non e` molto reattivo in
caso di modifiche delle policy e inoltre non riesce a bilanciare con molta
precisione tra i vari server;
e` inoltre molto difficile via dns mettere offline un server in tempi
brevi (il ttl settato a zero non e` una soluzione, imho)


  rischia di avere un DNS che e' il collo di bottiglia dell'intero
sorry se mi intrometto, ho capito che il balancing di web server via dns non e'
una cosa intelligente pero' non ho capito come tecnicamente funziona... 
qualcuno lo spiega? ...cosi magari anche quelli che non lo sanno possono meglio
apprendere le ragioni di questa scelta.

funziona... 
Se tu vuoi bilanciare www.<domain>.it, il DNS autoritativo di
<domain>.it aspetta che arrivi una richiesta di risoluzione di
www.<domain>.it
Quando arriva, risponde dando l'indirizzo IP di uno tra
www1.<domain>.it, www2.<domain>.it, www3.<domain>.it, ecc.
L'utente con il suo browser tutto felice e contento e' convinto di
navigare su www.<domain>.it/URI, e invece sta su wwwN.<domain>.it/URI


 funziona... qualcuno lo spiega?
Si realizza in pratica assegnado piu` record A ad uno stesso host. Ad
esempio:
www	A	123.123.123.1
	A	123.123.123.2
	A	123.123.123.3
	A	123.123.123.4
Ad ogni richiesta bind9 fornira` ciclicamente (round robin) un indirizzo 
diverso.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Runtime error 6D at f000:a12f : user incompetente

>  
ok, grazie ora e' chiarissimo..

  Ad ogni richiesta bind9 fornira` ciclicamente (round robin) un indirizzo 
oky, grazie :)



E alla fine qui siamo tornati :-)
Veloce da fare, facile da implementare: costo zero e a livello di
skill e livello di praticita', ottimo per fare degli esperimenti e
funzionale con basse richieste.
Ciao

funzionale con basse richieste.
Mi sfugge perche' continui ad ignorare il fatto che il sistema dei DNS
usa un meccanismo di caching, e i problemi che questo comporta nel
bilanciamento del carico.

bilanciamento del carico.
Per motivi di praticita'.
Il bilanciamento del carico, come ben sai dipende da un algoritmo.
Tanto e' piu' efficente l'algoritmo tanto e' migliore il risultato che
si vuole ottenere. 
Prima di partire a palla con la soluzione migliore ho l'abitudine
(cattiva?) di cercare di vagliare le soluzioni possibili. 
Nel caso mi e' sembrato evidente, ma posso naturamente sbagliare, che
chi ha postato il messaggio avesse un'esigenza "limitata".
Allora ho pensato ad una soluzione limitata ma consona alla
situazione.
Se ho 100 connessioni persistenti e 2 proxy server che faccio per
bilanciare le richieste? Uso Bind9 o potenzio in proxy magari
passandolo da Linux ad un FreeBSD.
Sarebbe molto bello poter adottare la soluzione per eccellenza ma in
sopratutto in ambienti di produzione questo e' praticamente
impossibile e perche' non c'e' lo skill necessario e perche' non vi
sono le risorse economiche ed alla fine, tra un budget e l'altro, si
conviene per la soluzione di compromesso. 
So che questo comportamento e' opinabile ma non credo che nessuno qui
si trovi difronte all'esigenza di fare bilanciamento del carico per
1000 connessioni contemporanee e neache credo che nessuno qui abbia da
gestire soluzioni da business data center a livello mondiale.
Sicuramente il DNS ha il vantaggio di lavorare in UDP per quello che
concerne le richieste di risoluzioni di nome e questo ne comporta uno
sfruttamento per fare un po di bilanciamento del carico, il DNS
utilizza TCP solo per il transfer zone che avviene solo tra il Master
ed il Backup. La cosa e' ben diversa se si sta facendo ricerca ma il
campo della ricerca e' ben diverso da quello di produzione e molto
spesso risulta addirittura incompatibile. 
Con questa affermazione e' possibile spiegare il successo di M$ e di
molte altre multinazionali del software che da sempre copiano il
software OSS rivendendo le soluzioni come innovative. WinXP e' la
brutta copia di MacOsX ma avra' sicuramente piu' successo e sai xche'?
E' la risposta veloce a molti problemi anche se non la migliore.....

ed il Backup. 
Questo e' del tutto irrilevante, non ho capito quel che vuoi dire ma non
credo c'entri molto.


alternative a livello di ip con linux sono:
tc + modulo teql
oppure
iproute2+iptables (ip ... nexthop ... via ... via..)
non e' banale, documentati in rete, ti conviene forse la seconda nel tuo 
caso
cyn


credo c'entri molto.
Per l'esattezza c'e' da dire il il BIND9 non utilizza l'algoritmo del
round robin come la precedente versione 8 ma un rudimentale sistema di
LoadBalancing che se paragonato a soluzioni piu' evolute puo'
risultare decisamente ruvido ma ampliamente funzionale. 
------dalla documentazione di Bind9
3.2. Load Balancing
Primitive load balancing can be achieved in DNS using multiple A
records for one name.
For example, if you have three WWW servers with network addresses of
10.0.0.1, 10.0.0.2 and 10.0.0.3, a set of records such as the
following means that clients will connect to each machine one third of
the time: When a resolver queries for these records, BIND will rotate
them and respond to the query with the records in a different order.
In the example above, clients will randomly receive records in the
order 1, 2, 3; 2, 3, 1; and 3, 1, 2. Most clients will use the first
record returned and discard the rest. For more detail on ordering
responses, check the rrset-order substatement in the options
statement, see RRset Ordering. This substatement is not supported in
BIND 9, and only the ordering scheme described above is available.
-------
Tieni presente che le prossime versioni di Bind9 introdurranno delle
migliorie da questo punto di vista anche se, come ti ripeto, non
discuto sulla bonta' e sulla validita' delle soluzioni ma
sull'opportunita' di usarle. Per finire io non credo che sia
irrilevante l'utilizzo di un protocollo anziche un'altro visto che UDP
e' una cosa e TCP e' altra cosa e in genere si utilizzano per compiti
ben distinti.
Ciao

ben distinti.
Si' lo so grazie. Non capisco cosa c'entri con il traffico web e con il
suo bilanciamento. 


suo bilanciamento. 
UDP e' un protocollo disegnato per grandi carichi e traffico "sporco"
mentre il TCP e' un protocollo un po piu' esigente quindi se il Domain
Name System si basa su UDP non puo' produrre traffico piu' di tanto e
sopratutto bene si prestera', nel futuro, a supportare algoritmi di
bilanciamento piu' evoluti di quello che fa oggi la versione 9
dell'ISC Bind.
Ciao

dell'ISC Bind.
Al contrario, algoritmi piu' evoluti necessiterebbero di connessioni e
non di UDP.


Non lo fa.
Continuiamo a non capirci. Spiace
ciao

 non di UDP.
Scusa?
Stai dicendo una grossa sciocchezza.
NULLA cambia in termini di possibile traffico fra UDP e TCP. Anzi ci sono
applicazioni (come lo streaming audio e soprattutto video) dove TCP e` del
tutto inadeguato e dove difatti viene puntualmente usato UDP.
-- 
     /kinkie (kinkie chiocciola tiscalinet punto it)
Ed ora, qualche parola dai nostri sponsor:
Everything you know is wrong!

NULLA cambia in termini di possibile traffico fra UDP e TCP. 
Se vuoi un algoritmo di bilanciamento evoluto, avrai necessita' di un
colloquio tra i back end server e il dispatcher. Questo colloquio deve
essere garantito che avvenga. Ora e' piu' chiaro oppure passiamo a dei
disegnini su it.binari.file?