PDA

View Full Version : Load balancing su porte


ChristianX86
04-09-2016, 14:59
Ciao a tutti!

Lo scenario in cui devo lavorare è il seguente:
c'è un server che risponde su 4 porte diverse, la 5000, 5001, 5002 e 5003, ogni porta ha il medesimo servizio (sono 4 socket identici).

Necessito di creare una sorta di router con un'unica porta pubblica per esempio la 8000 dove arrivano le varie richieste dai client e vengono routate sulle porte libere del server che dovrà elaborare la richiesta e rispondere.

Come si può fare?

Grazieeee

Dane
04-09-2016, 23:43
mettigli davanti iptables, che faccia round robin verso le porte di destinazione.

alfonsor
05-09-2016, 09:23
se hai un router di cui hai il controllo, per dire un router linux messo su da te, allora cerca su internet "iptables load balancing"

se lo vuoi fare su un router domestico, non ci riuscirai (almeno a mente non mi sembra che le interfacce grafiche permettano l'inserimento di porte o ip differenti di destinazione)

se vuoi mettere immediatamente su qualcosa, punta a zeroshell che lo ha di suo

ma, sarò non propriamente sveglio stamane, di solito il load balancing del nat si fa verso server differenti, non tanto verso porte differenti su cui è in ascolto lo stesso server sullo stesso host, cioè "a che serve fatto così?"

tanto sempre un'istanza di quel server sullo stesso host hai, ad occupare banda e cpu...

ChristianX86
05-09-2016, 18:13
Ciao intanto grazie per le risposte,

allora i server hanno 4 socket ogni uno, ogni socket una porta, questi socket vengono aperti da un client remoto, invia dei dati al server, questo li processa e li restituisce.
e qui capite che ogni client che chiama deve essere mandato su una porta libera e tenuta aperta la connessione finche finisce il ciclo. :muro:

ChristianX86
07-09-2016, 20:34
Uppete!

alfonsor
08-09-2016, 09:15
dovresti fornire almeno qualche informazione

- che router hai? puoi cambiarlo nel caso?
- hai i sorgenti di questo fantomatico server? è scritto davvero in maniera stramba, se puoi modificarlo, fallo; al minimo minimo, lo fai lanciare da inetd e risolvi d'incanto otgni problema

nessun router casalingo ti permetterà (a memoria) di fare questa cosa; se si tratta di "lavoro", se proprio non puoi modificare il server, allora devi mettere su un router che ti permetta di fare questa cosa; almeno un routerino con openwrt, per dire, e provare a mano a farla con regole iptables; anche se non ci giurerei che le cose vadano senza problemi; la soluzione scelta è un pò strana

ChristianX86
10-09-2016, 15:21
il router sarà un computer con due schede di rete con installata una versione per ipotesi di linux, solo che non so quale!

i server sono dei microprocessori con una scheda di rete non configurabili liberamente, a loro arriva un pacchetto tcp, lo elaborano e lo rispediscono al client.

si con iptables, ma a me servirebbe un esempio non avendo mai avuto a che fare con queste cose, mettiamo caso di avere un server 10.0.0.2 con 4 socket sulle porte 5000,5001,5002,5003 e arrivano due chiamate contemporanee da 172.0.0.22 e 172.0.0.23 sulla porta 5000, qui deve entrare in azione iptables che controllerà quale socket è libero e routerà 172.0.0.23 sulla 5001 in quanto la 5000 è gia occupata dal primo.

alfonsor
12-09-2016, 19:38
no iptables non sa se un server è libero

ad iptables puoi solo dire qualcosa del genere

per le connessioni tcp alla porta P ogni 2 pacchetti va al server A
per le connessioni tcp alla porta P ogni 2 pacchetti va al server B

e così via

cerca nat load balancing

per dire
https://www.webair.com/community/simple-stateful-load-balancer-with-iptables-and-nat/

poi se esiste qualche soluzione con programmi esterni non lo so, mi dispiace