我有一个Rails应用程序,它使用PhantomJS来解析页面。我已将PhantomJS解析器移动到NodeJS服务器中。由于PhantomJS的处理成本很高,我每个CPU只有一个PhantomJS实例(使用服务器中的集群)。
现在,我希望能够拥有更多带有NodeJS的计算机,而且Rails可以说:嘿,处理这个URL。现在正在使用一台机器。但我不知道你将如何构建这个多服务器NodeJS服务器。
所以,现在每当我想解析一个站点时,我都会向我的NodeJS机器发送一个请求,一旦解析了它,NodeJS会回发给Rails。但是,您如何与NodeJS中的多个服务器并行扩展,以便能够在接收到URL时将其发送到处理作业较少的服务器?
答案 0 :(得分:1)
基本上,您需要在应用程序服务器之上构建代理服务器来处理流量路由。
不确定您使用的是哪个托管服务提供商,但是使用Opsworks或Elasticbeanstalk,AWS可以轻松实现这一点。
一些选项包括:
AWS Opsworks 使用AWS弹性负载均衡器(ELB),您可以在AWS Opsworks服务中启动新的NodeJS堆栈,并将弹性负载均衡器附加到这些实例。从那里,您可以指定一个自动缩放实例,以根据需要增长和处理更多流量。 AWS ELB根据许多可配置的指标(CPU负载,时间,网络流量)循环实例流量。
AWS Elastic Beanstalk :请参阅此tutorial,了解如何在自动扩展环境中使用群集构建nodejs应用。
HA代理:如果您希望运行自己的load balancer,可以考虑启动自己的负载均衡器来处理流量。