如何使用多核,反向代理和SSL在云中部署Node.js以实现高可用性

如何使用多核,反向代理和SSL在云中部署Node.js以实现高可用性,第1张

如何使用多核,反向代理和SSL在云中部署Node.js以实现高可用性

自从我问这个问题已经好几个月了,没有太多的答案。Samyak Bhuta和nponeccop都有很好的建议,但我想讨论一下我对问题的答案。

这是我目前确定的生产系统的内容,但始终会不断进行改进。我希望它能在类似情况下为任何人提供帮助。

  1. 使用“群集”可以生成您想要在多核虚拟机或物理机上处理传入请求的子进程。这绑定到单个端口,使维护更加容易。我的经验法则是n-1个集群工作者。您不需要永久使用此功能,因为集群会重生会死掉的工作进程。为了即使在集群父级也具有d性,请确保使用Upstart脚本(或等效项)来守护Node.js应用程序,并使用Monit(或等效项)监视集群父级的PID,并在死时重新生成它。您可以尝试使用Upstart的重生功能,但是我更喜欢让Monit监视事情,因此,与其分担责任,不如让Monit最好也处理重生。

  2. 每个在端口80上运行的应用服务器使用1个nginx,只需在(1)中绑定到的任何端口上对代理进行反向代理即可。可以使用node-http-proxy,但是nginx在提供静态文件方面更成熟,功能更丰富且速度更快。运行nginx lean(不要记录,不要gzip小文件)以最大程度地减少开销。

  3. 如上所述,至少在2个可用区中具有至少2台服务器,如果在AWS中,则使用ELB,该ELB终止端口443上的HTTPS / SSL,并通过HTTP端口80与node.js应用服务器通信。ELB很简单,并且,如果您愿意,可以使其更易于自动缩放。您可以运行多个nginx,共享一个IP或由您的DNS提供商自行平衡,但我现在发现这种方法已经过时了。届时,您将在每个应用程序服务器上删除nginx实例。

我不需要WebSockets,因此nginx仍然很适合,当WebSockets出现时,我将重新讨论这个问题。

欢迎反馈。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5172773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存