在AWS上扩展nodejs应用程序



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

我想通过创建更多的实例来扩大规模

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

假设我创建了另一个实例,它正在侦听不同的端口。我应该将客户端更改为从两个不同的端口请求吗?我相信这可能会导致DB 的比赛条件

我是否应该在EC2机器上的一个端口上侦听并将请求定向到其中一个实例?在这种情况下,端口将一直处于繁忙状态,直到实例处理完请求,而不是与其他实例并行处理请求

有人有什么线索吗?或者可以给我指一些关于这个主题的文件吗?

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

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

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

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

最新更新