我已经发布到ServerFault,但Node.js社区似乎很小,所以我希望这会带来更多的曝光。
我有一个Node.js(0.4.9)应用程序,正在研究如何最好地部署和维护它。 我想在高可用性的云(EC2或RackSpace)中运行它。 该应用程序应该运行在HTTPS上。 稍后我会担心东/西/欧全面故障切换。
我对Keep-alive(Upstart,Forever),多核实用程序(赋格,多节点,集群)和代理/负载均衡器(node-http-proxy,nginx,Varnish和Pound)做了大量的阅读, 。 但是,我不确定如何结合我可用的各种实用程序。
我有这样的设置,需要解决一些问题,并得到反馈。
一般的问题:
我真的很想听听人们如何设置当前的生产环境以及他们喜欢的工具组合。 非常感激。
六年漫长的岁月,没有人敢于回应。 那么,我有一点事后的补充经验,所以我会提供一个。
Q1。 也许。 如果您不介意将群集的复杂性添加到您的应用程序,并且您要小心避免可能会抛出主进程的任何内容,那么群集效果很好。 否则,你当然需要一些东西来监督你的节点进程,并在应用程序崩溃时重新启动它。 您的操作系统可能会提供诸如守护进程或systemd之类的select。
Q2。 没有。最好的情况是,在风的背后,node-http-proxy几乎和nginx或haproxy一样好。 不包括haproxy和nginx都好的SSL。 build立一个更合适的案例非常困难。
Q3。 是的,还是haproxy。 直到你有需要引进清漆。 当你到达这一点时,你不会怀疑你是否应该使用清漆。 (或者你会使用CDN)。
Q4。 你的来电。 Haproxy是我TLS终止和代理的首选默认工具。 我并不讨厌自己把一些像负载平衡器那样重要的东西放在别人的服务器上,在那里我不能运行tcpdump或其他故障排除工具。
是。 如果您熟悉nginx,那么可以使用它来处理HTTPS终止,并将请求代理到您的应用程序服务器。 如果你还没有深入研究nginx,可以考虑使用haproxy 。 像haproxy这样的名字,你会期望它真的很擅长HA和代理,它并不令人失望。
haproxy / nginx。 总是。 更好的证书pipe理,在cipherli.st上列出等。openssl漏洞发布时,对应用程序升级代理的影响也较小。
HAProxy的。 (nginx现在支持代理websockets,所以这个问题已经过了它的到期date)。
多个站点和BGP。 引入诸如keepalived或其他点对点TCP故障转移机制的工具可能会导致中断,从而导致中断。 这种工具的使用通常是罕见的,因此当有必要时,具有现场知识的人已经不在实践中。 保持简单,取决于你的networking团队的技能。 他们很好地解决问题。