Newsgroup: it.comp.os.linux.sys
Titolo: Load-balancing con DSR

Ciao all,
Scusate la lunghezza del post ma ho cercato di essere il più
chiaro possibile.
Ho la necessità di configurare un cluster in load balancing per
due server Linux.
Brevemente, la soluzione da implementare prevede l'utilizzo di un
Foundry ServerIron utilizzando il DSR: si assegna un indirizzo IP
virtuale gestito dal Foundry che bilancia le richieste ai due o più
server reali; per motivi di performance (ma non solo) questi ultimi
avranno definito tale IP come alias sull'interfaccia di loopback,
per poi rispondere direttamente tramite il loro IP reale senza la
necessità di effettuare natting.
Fino ad ora non ho mai incontrato problemi con server AIX e nemmeno
altri miei colleghi con 'doze 2000; purtroppo con Linux mi appare
tutto più complesso, perché una volta assegnato l'indirizzo sulla
loopback, il mio server non riesce più a contattare le altre macchine
della stessa subnet di questo indirizzo, rispondendosi da solo.
Mi spiego meglio: supponiamo di avere come IP reale 192.168.1.1, e
di aver scelto come IP del cluster 192.168.1.180, e di dover
bilanciare un web-server.
Sulla stessa rete ci sono altri server: ad esempio un server SMTP che
risponde all'indirizzo 192.168.1.125.
A "boccie ferme", la situazione è la seguente:
www01:~ # ifconfig
eth0      Link encap:Ethernet  HWaddr 00:01:02:03:04:05
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 0001::0002:0003:0004:0005/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4841516 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8583 errors:0 dropped:0 overruns:0 carrier:0
          collisions:30 txqueuelen:100
          RX bytes:342191553 (326.3 Mb)  TX bytes:763527 (745.6 Kb)
          Interrupt:24 Memory:f9ff0000-fa000000
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:84953 errors:0 dropped:0 overruns:0 frame:0
          TX packets:84953 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9433594 (8.9 Mb)  TX bytes:9433594 (8.9 Mb)
Se provo a contattare il server SMTP, non ci sono problemi:
www01:~ # telnet 192.168.1.125 25
Trying 192.168.1.125...
Connected to 192.168.1.125.
Escape character is '^]'.
Appena inserito l'IP virtuale sulla loopback con il comando:
www01:~ # ifconfig lo:0 192.168.1.180 netmask 255.255.255.0
inziano i problemi:
www01:~ # telnet 192.168.1.125 25
Trying 192.168.1.125...
telnet: connect to address 
192.168.1.125
: Connection refused
In compenso, posso collegarmi tranquillamente alla porta 80, anche
se sul server SMTP non viene utilizzata ed è pertanto chiusa:
www01:~ # telnet 192.168.1.125 80
Trying 192.168.1.125...
Connected to 192.168.1.125.
Escape character is '^]'.
Ovviamente la connessione avviene verso se stesso: ne ho avuto prova
analizzando il risultato di una GET HTTP.
Ma non è tutto: ora riesco a "pingare" anche gli IP non utilizzati!
Continua a rispondersi da solo.
Tolto l'indirizzo IP dalla loopback, tutto torna alla normalità.
Qual'è il banale problema al quale non ho prestato attenzione? :)
Grazie in anticipo,
-- 
Ciao,  | (o_   
http://lucchesi.eu.org
Davide | (/)_  (L)ICQ UIN:  #50301940

 Qual'è il banale problema al quale non ho prestato attenzione? :)
Posto che non conosco DSR, ma che gioco parecchio con LVS, setta l'alias
di loopback con mask /32...
IMHO dovrebbe andare.
Altro problema:
sotto linux, il fatto di aggiungere un alias alla lo fa rispondere agli
arp per tale ip anche le nic reali (a detta degli sviluppatori non è un
bug, è una feature...).
Per non farlo rispondere (ammesso che a DSR serva) dovrai pertanto fare
giochini di altro genere...
Hola..
-- 
wash the blood from your hands
bury your secrets in the sand
and forget

 IMHO dovrebbe andare.
E' vero, va! :)
Grazie!


 E' vero, va! :)
A volte mi faccio paura da solo... ^_^
