Балансировка нагрузки двух отдельных процессов node.js на двух серверах?

Я запускаю небольшое приложение socket.io node.js, которое всегда имеет небольшое количество одновременно работающих пользователей. По большей части, он может работать 100% времени на одном процессе (будь то на моем Linode или Heroku[1]).

Я надеюсь немного обнародовать это в течение нескольких дней, в течение которых я ожидаю приличное количество трафика. Это означает одновременные соединения websocket/xhr-polling. Однако два соединения socket.io не должны связываться друг с другом.

Приложение работало на моем Linode довольно долгое время, но я недавно передал его одному бесплатному геройскому динамо. Даже бегая с xhr-опросом (heroku не поддерживает websockets изначально), это очень быстро.

Мне интересно, как я могу использовать свой Linode для запуска и балансировки нагрузки приложения. Но если это начинает замедляться, подтолкнуть пользователей к запуску Heroku Dyno (или наоборот). Это должно быть возможно с чем-то вроде node-http-proxy, но мне было трудно заставить его работать правильно. Надеюсь, я мог бы настроить его так, чтобы он мог достичь точки, или я мог щелкнуть переключателем, и он начал бы балансировать пользователей на втором сайте.

По сути, я просто смотрю в правильном направлении. Код был бы хорош, но не обязателен. Решение даже не должно быть в узле.

Спасибо!

[1] Я тоже довольно долго пробовал ноджитсу, но просто не нашел его готовым к использованию.

Изменить: я должен просто использовать простой Roundrobin, как объяснено здесь? Что если я захочу отдать предпочтение одному над другим?

1 ответ

Вы можете использовать Форман для этой работы:

PROCFILE

web: node app.js

Затем просто вызовите это в командной строке:

$ foreman start -c web=4

Это создаст 4 экземпляра приложения вашего узла, прослушивающего разные порты.

08:29:41 web.1  | started with pid 2576
08:29:41 web.2  | started with pid 1968
08:29:41 web.3  | started with pid 2712
08:29:41 web.4  | started with pid 5280
08:29:42 web.3  | Express server listening on port 5002
08:29:42 web.1  | Express server listening on port 5000
08:29:42 web.2  | Express server listening on port 5001
08:29:42 web.4  | Express server listening on port 5003

Затем вы можете просто использовать nginx и установить их на свой апстрим.

Другие вопросы по тегам