Балансировка нагрузки веб-сокетов
У меня есть вопрос о том, как загрузить балансировочные веб-сокеты.
У меня есть сервер, который поддерживает веб-сокеты. Браузеры подключаются к моему сайту, и каждый открывает веб-сокет дляwww.mydomain.com
, Таким образом, мое приложение для социальной сети может отправлять сообщения клиентам.
Традиционно, используя только HTTP-запросы, я увеличивал масштаб, добавляя второй сервер и балансировщик нагрузки перед двумя веб-серверами.
В случае веб-сокетов соединение должно осуществляться непосредственно с веб-сервером, а не с балансировщиками нагрузки, потому что, если у компьютера есть физическое ограничение, скажем, 64 КБ открытых портов, и клиенты подключались к балансировщику нагрузки, то я не смогу поддерживать более 64 тыс. одновременных пользователей.
Так как же я -
get the client to connect directly to the web server (rather than the load balancer) when the page loads? Do I simply load the JavaScript from a node, and the load balancers (or whatever) randomly modifies the URL for the script, every time the page is initially requested?
handle a ripple start? The browser will notice that the connection is closed as the web server shuts down. I can write JavaScript code to attempt to reopen the connection, but the node will be gone for a while. So I guess I would have to go back to the load balancer to query the address of the next node to use?
I did wonder about the load balancers sending a redirect on the initial request, so that the browser initially requests www.mydomain.com
and gets redirected to www34.mydomain.com
. That works quite well, until the node goes down - and sites like Facebook don't do that. How do they do it?