Ho una domanda su come bilanciare il carico dei socket web.
Ho un server che supporta i web socket. I browser si connettono al mio sito e ognuno apre un web socket www.mydomain.com
. In questo modo, la mia app di social network può inviare messaggi ai clienti.
Tradizionalmente, utilizzando solo richieste HTTP, scalerei aggiungendo un secondo server e un bilanciatore del carico davanti ai due server web.
Con i socket web, la connessione deve essere direttamente con il server web, non con i bilanciatori del carico, perché se una macchina ha un limite fisico di diciamo 64k porte aperte e i client si connettono al bilanciamento del carico, allora non potrei supportare più di 64k utenti simultanei.
Quindi come faccio a -
convincere il client a connettersi direttamente al server web (piuttosto che al bilanciamento del carico) quando la pagina viene caricata? Carico semplicemente JavaScript da un nodo e il load balancer (o qualsiasi altra cosa) modifica in modo casuale l'URL per lo script, ogni volta che la pagina viene inizialmente richiesta?
gestire un inizio ondulato? Il browser noterà che la connessione viene chiusa allo spegnimento del server web. Posso scrivere codice JavaScript per tentare di riaprire la connessione, ma il nodo sarà andato per un po '. Quindi immagino che dovrei tornare al bilanciamento del carico per interrogare l'indirizzo del nodo successivo da utilizzare?
Mi chiedevo se i bilanciatori del carico inviassero un reindirizzamento alla richiesta iniziale, in modo che il browser inizialmente richieda
www.mydomain.com
e venga reindirizzato awww34.mydomain.com
. Funziona abbastanza bene, fino a quando il nodo non si interrompe e siti come Facebook non lo fanno. Come lo fanno?