2013-11-08 6 views
0

Я написал веб-приложение, с помощью Node.js:Правильный способ запуска приложения Node.js с Nginx

  • выразить
  • Socket.io
  • Redis для магазина и для сеанса некоторые кэширование вещи
  • MySQL для Устойчивые данных

Это хорошо работает в автономном и теперь я хотел бы, чтобы заставить его работать в режиме «производства». На самом деле, я бы хотел, чтобы nginx перенаправлял запросы на сервер узла.

На данный момент я использую один физический сервер (i5 - 4 ядра) для всего, но это может измениться в будущем (так может быть, еще только для MySQL и т.д.)

В этом случае:

  • Должен ли я использовать балансировку нагрузки nginx между восходящими? (Т.е. работает мое приложение с различными портами)

Nginx конфигурации будет что-то вроде этого:

upstream my_app { 
    server 127.0.0.1:3000; 
    server 127.0.0.1:3001; 
    server 127.0.0.1:3002; 
} 

Тогда, что такое правильный способ запустить узел в качестве службы, так что я могу легко перезапустить его ? Я могу создать простой скрипт сам (обработка start/stop/restart, ...), но, может быть, я могу использовать что-то уже доступное?

  • Должен ли я использовать кластеры узлов?

Мое приложение в настоящее время работает в одном потоке, но от того, что я прочитал, я знаю, что могу распараллелить или раскошелиться мой процесс с такими решениями, как PM2/nodemon/навсегда, но не уверен, какой из них подходит лучше всего.

Я только что попробовал pm2, который хорошо работает в кластеризации или разворачивании процесса узла, просто не уверен, что это путь к nginx.

Спасибо,

+0

Для получения информации о запуске приложения в качестве сервиса см. Это http://dailyjs.com/2011/03/07/node-deployment/ –

+0

Спасибо, это помогает! – Ervadac

ответ

0

Я не 100% уверен, что вы просите, но я дам ему выстрелили.

  1. Вы должны использовать модуль кластера, чтобы полностью использовать ваш компьютер. Если у вас 4 ядра, использование кластера вызовет 4 процесса вашего приложения; 1 для каждого сердечника. Это предпочтительный подход к запуску приложения 4 раза, прослушивание на разных портах, с балансировкой нагрузки nginx между экземплярами. Другой плюс о модуле кластера заключается в том, что он перезапустит детей, которые умирают.

  2. Как я упоминал в 1, модуль кластера будет балансировать запросы между процессами на одной машине, поэтому вам нужно будет только 1 вверх по потоку в nginx. Если вы слишком добавляли второй (или третий) сервер, вы должны добавить восходящий поток для каждого сервера. Опять же, только один восходящий поток на сервер, так как модуль кластера должен делегировать оттуда.

Если это не совсем то, о чем вы просили, мои извинения.

+0

Извините, если это было не так ясно, как я просил разные советы. Да, это точно отвечает на мои разные допросы! Я действительно хотел быть уверенным, что поступаю правильно. Я посмотрю на модуль кластера. – Ervadac

Смежные вопросы