2015-12-21 4 views
0

Есть ли опция на AWS для запуска нескольких экземпляров одного и того же приложения node.js? Я пытаюсь запустить несколько экземпляров моего приложения node.js на своем компьютере, и это дает мне ошибку EADDRINUSE. Когда я меняю номер порта в своем коде, сохраните его как новый файл js, тогда я могу запустить несколько экземпляров. Но как я мог установить это на AWS? Может быть, у AWS Elastic Beanstalk есть возможность установить это? Я не мог найти его ..несколько экземпляров одного и того же приложения node.js на AWS

Это часть моего приложения, где я общаюсь с клиентами, вот где я могу изменить номер порта:

http.createServer(function(request, response){ 
var path = url.parse(request.url).pathname; 
if(path=="/getjson"){ 

    response.writeHead(200, {'Content-Type': 'text/plain'}); 
    response.end('_testcb(\''+string+'\')');    
    console.log(new Date() + " - response sent to client"); 

} 

}).listen(port); 

Или, может быть, у вас есть какое-то лучшее решение для запуска нескольких экземпляров одного и того же приложения node.js? Обратите внимание, что несколько экземпляров должны иметь небольшую базу данных.

+1

Вы хотите запустить единую копию своего приложения-узла через несколько aws-intsances? Вы хотите запустить несколько копий на одном «сервере», все прослушивая разные порты? –

+0

Меня заинтересовали оба варианта. В принципе, я бы хотел, чтобы приложение масштабировалось по количеству клиентов, поэтому время ожидания для клиентов как можно меньше. У меня нет большого опыта работы с AWS, поэтому я заинтересован в том, что лучше всего подходит для такого рода проблем? – kecman

+2

Если у вас нет большого опыта работы с AWS, я бы рекомендовал развернуть приложение Node на Elastic Beanstalk. Это позволит вам легко запускать ваше приложение на нескольких серверах, а балансировщик нагрузки будет равномерно распределять трафик вашего сайта. –

ответ

0

Возможно, вы захотите использовать кластер узла api. documentation here

  var cluster = require('cluster'); 
      var numCPUs = require('os').cpus().length; 

      if (cluster.isMaster) { 

        // Fork workers. 
        for (var i = 0; i < numCPUs; i++) { 
          cluster.fork(); 
        } 

        cluster.on('exit', function(worker, code, signal) { 
          console.log('Cluster worker ' + worker.process.pid + ' died'); 
          cluster.fork(); 
        }); 

      } else { 

        http.createServer(function(request, response){ 
        var path = url.parse(request.url).pathname; 
        if(path=="/getjson"){ 

            response.writeHead(200, {'Content-Type': 'text/plain'}); 
            response.end('_testcb(\''+string+'\')');    
            console.log(new Date() + " - response sent to client"); 

        } 

        }).listen(port); 

      } 
+0

OK, это должно работать на любом процессоре с несколькими ядрами, если я прав? В принципе, я бы хотел, чтобы приложение масштабировалось в соответствии с количеством клиентов, поэтому время ожидания для клиентов как можно меньше. У меня нет большого опыта работы с AWS, поэтому я заинтересован в том, что лучше всего подходит для такого рода проблем? – kecman

0

Вы пробовали амазонки балансировку нагрузки? более подробную информацию можно найти here. Балансировщик нагрузки также может управлять автоматическим масштабированием в зависимости от трафик. Дополнительная документация here.

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