在AWS上扩展nodejs应用程序

时间:2017-11-15 05:39:46

标签: node.js amazon-web-services amazon-ec2

我在AWS EC2上运行了nodejs应用程序。

我想通过创建更多实例来扩展它。

我不太明白如何在网络方面做到这一点。

让我说我创建另一个实例,它正在侦听不同的端口。 我应该将客户端更改为从两个不同的端口请求吗?我相信这可能导致数据库上的竞争条件

我是想在EC2机器上的一个端口上监听并将请求指向其中一个实例?在这种情况下,端口将忙于实例完成请求,而不是与另一个实例并行处理请求

有没有人有指示或者可以指点我关于这个主题的一些文件?

1 个答案:

答案 0 :(得分:0)

在基本级别,您将拥有Node.js应用程序的多个实例,并连接到公共数据库后端。 (您的数据库也应该是聚类的,但这是另一篇文章的主题。)

如果您已经遵循最佳实践,一个请求将是一个响应,并且后续请求落在另一个应用程序服务器上无关紧要。也就是说,客户可以随时点击任何一个,并且不会有任何副作用。如果没有,您将需要某种服务器固定(通常通过cookie或类似方法完成),以确保客户端始终位于同一应用程序服务器上。

最简单的负载均衡方法是让您的客户端连接到主机名,并将该主机名解析为多个主机的循环方式。这将分散流量,但不一定正确。例如,一台主机上的特定命令或问题可能意味着它只能处理5个请求,而其他服务器可以处理5000个。大多数云提供商都有负载平衡管理。 AWS肯定会。

由于您已经在AWS上,我建议您通过Elastic Beanstalk部署您的应用程序。它可以自动完成配置的旋转/拆卸。你当然可以推出自己的解决方案,但它可能更容易使用已有的解决方案。负载均衡器配置了Beanstalk。