[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