2012-06-23 146 views
4

我即将开始一个项目节点,Express和Mongo,但有一个重要问题需要我先解决。如何在不中断服务的情况下部署更改?

说我有一个运行的应用程序。迟早,我会再次编码,并希望部署更改。到目前为止,我只在开发模式下工作,所以执行^ C并重新启动服务器并不是问题。

在生产中如何?很明显,我不能一次性破坏服务器和所有用户。有没有以任何方式部署更改而不中断服务?

我看着像暴发户和类似的系统,但它不解决问题(或我错过了什么?)。我目前正在考虑建立一种故障转移的,但必须有人已经做到了我面前......

+0

云部署平台,如Heroku的和nodejitsu您处理该问题:) –

+0

是的,他们接触到的计算了。但是,因为这是一个非营利组织,我想找到最便宜的解决方案:) – aspyct

回答

0

如果你关心的可用性,那么你必须在多个服务器上运行的服务,最好是在不同的物理位置。除部署外,大量事件都可以使单台服务器脱机。因此,没有任何问题,您可以将每台服务器脱机,部署到该服务器并重新联机。

如果您不在乎可用性,仍然没有问题。

+0

当然,但如果我至少可以避免每次部署时都要确保将服务关闭,那么它已经一个不错的步骤:) – aspyct

1

好吧,我可能会去一个反向代理nginx的一样:低内存占用,能够处理大量的并发连接,并支持故障转移时,我终于有一个以上的服务器。

有了这个nginx的反向代理,我可以用更新的源开始一个新的节点过程中,有nginx的切换到新的节点和垃圾的旧版本。

这也将让我保留在服务器上的应用程序的早期版本,以防万一新版本太早崩溃......

链接: http://nginx.org/en/docs/control.html

1

结帐Forever通过NodeJitsu。它将进程守护进程并在出现故障时自动重新启动服务器。它还有一个选项可以观察你的CWD,所以如果你在你的repo中做了“git pull”,你的服务器会重新启动并使用新的代码。

我已经在生产中使用这个作为一种基于拉的服务器型号为一年多了,并有很少或几乎没有问题。

+0

Forever擅长它,但是我没有发现它处理OP中的问题,因为它可以在不中断服务的情况下部署应用程序。这对于长时间连接的应用程序(例如Socket.IO)尤其重要。 – sffc

+0

@ vote539节点核心中的集群模块适合您正在讨论的内容。它将允许您处理监听一个端口的多个进程并在可用进程之间进行负载平衡。这个答案是在2.5年前发布的 - 从那以后,节点的发展发生了很大变化。我自己并没有永远用过,就像永远。 – srquinn

相关问题