Sto pianificando di installare un gruppo di server applicazioni NodeJS con Socket.io su EC2 e vorrei utilizzare lo Elastic Load Balancer per distribuire il carico tra di loro. So che ELB non supporta Websockets, ma posso usare la configurazione descritta here in Scenario 2.Socket.io Websockets su un Amazon Balanced Load Balancer TCP configurato
Come descritto nel the blog post, però, ho notato che questa configurazione offre alcuna affinità di sessione o fonte di informazioni IP:
Non possiamo avere affinità di sessione, né le intestazioni X-avanti con questa configurazione perché ELB non è analizzando i messaggi HTTP, quindi è impossibile per abbinare i cookie per garantire Session Affinity né iniettare intestazioni speciali X-Forward .
Will Socket.io funziona ancora in queste circostanze? O c'è un altro modo per avere un set di app server Socket.io dietro un load balancer con SSL?
EDIT: Tim Caswell parla di fare questo già here. Ci sono post che spiegano come impostare questo? Ancora una volta non c'è appiccicosità alla sessione, ma le cose sembrano funzionare bene.
Per inciso, le sessioni adesive sono effettivamente necessarie con le web socket? Le informazioni viaggiano come nuove e separate richieste o c'è solo una richiesta + connessione in cui tutte le informazioni si muovono?
Risposta rapida - no, socket.io non funzionerà se le richieste successive andranno su server diversi, è necessario trovare un modo per implementare sessioni "persistenti" nella configurazione. – Dmitry
@Dmitry: sei sicuro? Penso che socket.io dovrebbe funzionare se si utilizza un negozio condiviso, ad es. il RedisStore? –
@LinusGThiel non funzionerà senza sessione appiccicosa, ecco alcuni dettagli in più: https://groups.google.com/d/topic/socket_io/d9a8c49uymc/discussion – Dmitry