什么是当前节点到AWS的生产部署的最佳实践

我正在评估nodejs的一小部分我们的Web应用程序,它似乎是一个很好的select。 我知道这个节点年轻,行进得很快,但似乎终于到了“准备生产”的阶段。 然而,在网上search时,我在生产部署中看到的大部分信息已经过去了一年,并且仍然警告节点如何变得脆弱,并且可能意外出错,然后再重新启动一些解决scheme。 这本身并没有吓倒我,但似乎没有正确的方法来把节点可靠地放在那里。

cluster似乎是一个不错的select,虽然取决于你的操作系统,它可能有负载平衡性能差。 一个非常简单的版本会是这样的:

 var cluster = require('cluster') if(cluster.isMaster) { var i, worker, workers; for(i = 0;i < numWorkers;i++) { worker = cluster.fork(); workers[worker.process.pid] = worker; } cluster.on("exit", function(deadWorker) { delete workers[deadWorker.process.pid]; worker = cluster.fork(); workers[worker.process.pid] = worker; }); } else { //be a real server process } 

这是一个不错的select,因为它通过重新启动死进程为您提供了一些稳定性,并为您提供了共享负载的多个进程。 请注意, cluster基本上修改server.listen,以便工作人员都在监听来自正在进行侦听的主服务器的事件。 这是“免费”负载平衡的来源。

集群文档可以在这里find: http : //nodejs.org/api/cluster.html

如果您希望能够触发某些事件,例如查杀并重新启动所有进程,或者终止所有进程并closures,则主进程也可能会处理一些信号。

我目前正在将node.js应用程序转换为高度可扩展的社交媒体应用程序。 要创build一个不重要的部署解决scheme,我正在使用AWS Elastic Beanstalk。 节点AWS文档可以在这里find[http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.html]。

我已经在我的testing环境中尝试了这一点,虽然它的工作原理,但这不是一个简单或易于遵循的过程。 特别是在我的环境中使用虚拟私有云进行configuration时遇到了一些问题。 而且,由于该服务有点新,所以没有大量的信息和故障排除build议可以免费获得 – 这当然可以通过购买亚马逊的支持来解决。

Elastic Beanstalk部署似乎为您提供了以下内容:

  • 如果您符合免费的开发环境。
  • 可扩展的EC2部署,适用于节点应用程序和节点架构。
  • 在不同环境中进行一致的部署(即开发,testing,使用,生产)。
  • 监测。
  • 部署的重复性和自动化。