Нам нужно развернуть несколько приложений Node/Express на множестве серверов (за балансировкой нагрузки). Эти приложения полностью независимы друг от друга с точки зрения функциональности. Сначала я объясню, как я думаю об этом, а затем я ищу информацию о наилучших практиках, если в моем дизайне есть какие-то красные флаги.Запуск нескольких приложений Node в кластере узлов
Вот настройка, о которой я думаю:
Фронтальный сервер, расположенный за балансировщиком нагрузки, будет иметь прокси-сервер node-http-proxy, и он будет принимать входящие запросы на порт 80. Этот обратный прокси направит запросы на соответствующие узловые приложения, которые работают на разных портах этого сервера. напр:
var http = require('http'),
httpProxy = require('http-proxy');
var options = {
router: {
'myapphost.com/MyFirstApp': 'myapphost.com:3000',
'myapphost.com/MySecondApp': 'myapphost.com:3001'
}
}
// ...and then pass them in when you create your proxy.
var proxyServer = httpProxy.createServer(options).listen(80);
Каждый из приложения узла будет работать на узле кластера, используя что-то вроде Cluster2 воспользоваться многоядерных систем.
Мои вопросы:
- Правильно ли это дизайн и стратегия?
- Некоторые из наших приложений должны быть работоспособными. Каков наилучший способ сделать государственное управление в таком виде установки? Использование внешнего хранилища сеансов, такого как Redis, является правильным подходом? Или привязать сеанс к данному интерфейсу и использовать хранилище сеансов в памяти?
UPDATE:
Поскольку я отвечал на этот вопрос, после разговора с несколькими людьми, есть еще один подход, который пришел up--
я могу использовать Nginx в качестве обратного прокси-сервера и балансировку нагрузки перед моими внешними машинами. Каждая внешняя машина будет обслуживать только одно приложение. Для этого приложения может быть еще одна резервная копия. (в зависимости от требования). Поэтому, если у меня есть три приложения, у меня будет три отдельных машины, каждая из которых будет обслуживать разные приложения. Все запросы будут получены Nginx на порту 80, обратный прокси Nginx направит запрос на правый интерфейс. Каждая машина будет иметь кластер узлов, чтобы использовать многоядерную систему. Преимущество этого подхода - развертывание становится намного проще для каждого приложения. Кроме того, мы можем масштабировать каждое приложение отдельно.
Пожалуйста, поделитесь своими мыслями и по этому подходу.