[FoLUG] R: Re: Load balancing e SSL termination
muratmat@libero.it
muratmat@libero.it
Sab 1 Giu 2013 01:40:40 CEST
>> 1 istanza di Nginx, usato come puro servitore di file statici >
>Questo e' un altro server ancora, suppongo.
Si, ma per smanettare meno possibile e avere pochi problemi potrei prendere
una classica istanza di Amazon S3. Su questo punto sono meno preoccupato che
sul resto :)
>L' ip pubblico ce lo ha lui e tutto il resto in dmz, giusto ?
Si, l'ip pubblico ce lo ha l'ssl terminator e/o loadbalancer; tu
sconsiglieresti la soluzione di HAproxy e useresti stunnel + (ad esempio)
nginx? Più che altro non mi è chiaro quale vantaggi porterebbe usare due
software invece di uno.
A meno che la struttura interna ad event loop di haproxy mal si adatti ad
essere accoppiata a ssl termination implementata sempre dentro lo stesso
haproxy; in generale, fare ssl termination con apparecchiature hw dedicate (e
che accelerino via hw il compito) aiuta (di quanto?) questo tipo di task?
>Beh il websocket non dovrebbe essere un problema, una volta che il tunnel ssl
e' su ci fai passare quel che vuoi
Il problema dei websocket non nasce in fase si ssl termination, ma di reverse
proxy (nginx supporta il protoccolo websocket da poco, haproxy credo lo abbia
implementato da abbastanza tempo prima)
>Visto che vuoi metterci un load balancer davanti, direi che e' funzione anche
degli host. Quanti sono, anche spannometricamente ? Decine ? Centinaia ?
Cosa intendi per host? macchine fisiche? Nel mio caso avrò meno di dieci
application server nodejs (verosimilmente tra i 3 e 5), usati come websocket
servers, che riceveranno messaggi molto leggeri (l'applicazione è un webgame
strategico di guerra in tempo pseudo-reale), e che comunicheranno con un server
MongoDB (sempre all'interno della dmz).
Il carico, inteso come numero di connessioni attive contemporaneamente, mi
spaventa soprattutto in fase di ssl termination, a livello di application
server nodejs non mi spaventa più di tanto (nodejs è event loop, quindi non
spawna un thread per ogni richiesta/connessione).
Ivam hai esperienza e/o consigli al riguardo?
Grazie in anticipo!
Matteo.
PS: lo studio del carico e della struttura da adottare (e.g. sharding,
replicaset e amici vari) per il db è un discorso a parte, che affronterò in un
secondo momento.
PPS: volevo partire senza mettermi server fisici in house, ma partire con
istanze cloud tipo EC2 o meglio ancora Joyent.
>----Messaggio originale----
>Da: i.f-ml01@darthxiong.net
>Data: 31/05/2013 23.49
>A: "muratmat@libero.it"<muratmat@libero.it>, "Forl? Linux User Group"
<folug@lists.linux.it>
>Ogg: Re: [FoLUG] Load balancing e SSL termination
>
>* Il 2013-05-30 11:59:38, muratmat@libero.it scrive:
>> Ciao a tutti, volevo sottoporvi la mia situazione e spero che qualcuno mi
possa
>> aiutare :)
>> Ho un'applicazione web così strutturata, lato server:
>>
>> - N istanze dell'application server, nella fattispecie N istanze di
nodejs,
>> ognuna bindata su un ip (locale) diverso. N ovviamente è una funzione del
>> numero delle CPU/Core
>
>Visto che vuoi metterci un load balancer davanti, direi che e' funzione
>anche degli host. Quanti sono, anche spannometricamente ? Decine ? Centinaia
?
>
>> - 1 istanza di Nginx, usato come puro servitore di file statici (bindato su
un
>> ip locale ovviamente diverso dagli N di cui sopra) quali immagini, script
>> javascript etc
>
>Questo e' un altro server ancora, suppongo.
>
>> Davanti a questa struttura devo metterci un load balancer e ancor prima un
SSL
>> terminator (dall'esterno l'applicazione deve viaggiare su https); in più
devo
>
>L' ip pubblico ce lo ha lui e tutto il resto in dmz, giusto ?
>
>> tenere conto che oltre alle normali richieste GET/POST dell'http deve
viaggiare
>> anche traffico websocket.
>
>Beh il websocket non dovrebbe essere un problema, una volta che il tunnel ssl
>e' su ci fai passare quel che vuoi
>
>> Cosa ne pensate di HAProxy? oppure adottereste una soluzione disaccoppiata
>> tipo stunnel per la SSL temrination e un altro Nginx per il load
>> balancing/reverse proxy?
>
>HAProxy lo conosco pochissimo, ho fatto un paio di Rproxy anche https con
>squid, ma senza il LB, comunque avrei usato lui
>
>> Da quello che ho capito la SSL termination è il task più oneroso, cioè che
>> deve essere effettuato con la maggior agilità possibile (e minori risorse
>> possibili)
>
>Dipende da quante connessioni contemporanee ti aspetti, ma certamente se una
>sola macchina fa da frontend a 100 application server, il confronto e' certo
>insostenibile :)
>Non sapendo ne il tipo ne il peso del carico che ti aspetti sugli appserver,
>e' un po' difficile consigliare il da farsi, ma Mi sono fatto l idea che
>sarebbe bene avere ssl, rproxy e server di elementi statici su macchine
>diverse
>Per il terminatore ssl puoi considerare le alternative di stud o di un
>appliance tipo lo zywall
>A quest ora non mi viene in mente altro :>
>
>--
> (@_ Ivan Fabris, allevatore certificato di pinguini dal 1997 _*)
> //\ www.folug.org dif-tor heh smusma /\\
> V_/_ pgp id 9E12 1AB8 E094 162C 1936 E29D 0700 3B4D B432 2931 _\_V
>
>
Maggiori informazioni sulla lista
FoLUG